Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» PowerShell

Автор: Oldster
Дата сообщения: 03.02.2012 21:30
Freiberufler2
Я с самого начала не стал приводить ссылку на свой блог но там есть базовая настройка + ссылки на сайт Ravikanth Chaganti
tashkent
WMI не проще? Имхо там есть то, что надо.
Автор: slech
Дата сообщения: 05.02.2012 23:33
Всем привет.
Подскажите пожалуйста про логирование.
Хочу видеть весь результат выполенения скрипта в логе.
В батнике я обычно объявлял лог и использовал перенаправление.
Тут такое так же работает. Но есть в PS вот такое:

Код:
$CurrentDate = Get-Date -format "yyyy-MM-dd" | Out-File D:\SysInfops.txt -append
Автор: VovaMozg
Дата сообщения: 06.02.2012 05:07
slech
Посмотрите в сторону Tee-Object
Автор: temio
Дата сообщения: 06.02.2012 09:52
slech
Start-Transcript & Stop-Transcript
Автор: slech
Дата сообщения: 17.02.2012 21:15
VovaMozg
temio
Спасибо.


Цитата:
Tee-Object


Не совсем то.


Цитата:
Start-Transcript & Stop-Transcript

Заработало, но не так как хочется.
При запуске ручками я вижу всё что нужно в фале, при запуске из скрипта - буквально пара строчек

Unable to capture ALL session output into a transcript
Powershell Transcript is empty when running script from SQL Agent Job in 2005 SQL Server


Код: cmd /c powershell.exe -file "C:\temp\backup script.ps1" > backup.log
Автор: kharkovmax
Дата сообщения: 11.04.2012 13:54
Помогите пожалуйста.

Не могу понять, не работает запрос.


Код:
$lists_files = "*.doc,*.rtf,*.docx,*.docm,*.xls,*.xlsx,*.xlsm,*.xlsb,*.ods,*.csv,*.slk,*.odt,*.ods,*.eml"
echo $lists_files
Get-ChildItem “c:\*” -Include $lists_files -Force -ErrorAction SilentlyContinue
Автор: jeykey
Дата сообщения: 11.04.2012 18:01
kharkovmax
$lists_files = "*.doc","*.rtf","*.docx","*.docm","*.xls","*.xlsx","*.xlsm","*.xlsb","*.ods","*.csv","*.slk","*.odt","*.ods","*.eml"
Get-ChildItem “c:\*” -Include $lists_files -Force -ErrorAction SilentlyContinue
Автор: lDeNl
Дата сообщения: 05.05.2012 16:22
Сделал GUI интерфейс показывающий IP и еще некоторую информацию, но если человек запускает этот скрипт, то загружается он не очень быстро секунд 5, может больше, можно ли это как ускорить, подгружить какие либо либы или еще что то в этом роде?
Автор: Mordavorot
Дата сообщения: 22.07.2012 23:56
можно так настроить чтобы при загрузке винды ярлыки появлялись на рабочем столе не сразу а секунд через 5?
Голый рабочий стол нужен.
Ибо там картинки что любоваться охота

Добавлено:
.
Автор: turboon
Дата сообщения: 27.08.2012 11:59
Подскажите, как можно ускорить перебор событий командлетом Get-Eventlog?
Использую в системе мониторинга, и желателен отклик от скрипта в течении хотя бы 15 секунд.
Ну, или хотя бы быстро определить, что событий от заданного источника в журнале нет.
Такое ощущение, что в таком случае PS перебирает все события, что занимает очень много времени.
Автор: Oldster
Дата сообщения: 28.08.2012 06:55
turboon
попробуй так, анализируй журнал за последний час (каждый час), и ищи только ошибки или определенный ID.
Автор: OverDope
Дата сообщения: 14.09.2012 15:51
Доброго времени суток, уважаемые форумчане!
Прошу гуру Power Shell растолковать поведение командлета Get-ChildItem.

Делаю: Get-ChildItem "C:\TMP\Test"

Получаю:
Каталог: C:\TMP\Test

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 14.09.2012 16:36 2571 Новый текстовый документ.txt

Все честно, в директории один файл, размером 2,51 КБ (2 571 байт).
Вызываю свойство "Length":
(Get-ChildItem "C:\TMP\Test").Length

Получаю:2571
Ок, совпадает
Но все меняется как только в этой директории появляется еще один файл.
Делаю: Get-ChildItem "C:\TMP\Test"

Получаю:
Каталог: C:\TMP\Test

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 14.09.2012 16:36 2571 Новый текстовый документ - копия.txt
-a--- 14.09.2012 16:36 2571 Новый текстовый документ.txt

Теперь, по моим ожиданиям, вызвав свойство "Length" я должен получить сумму размеров файлов но ...
Делаю: (Get-ChildItem "C:\TMP\Test").Length

Получаю: 2

То есть если файл один то свойство "Length" выводит его размер, а если файлов больше одного то получаем общее количество файлов. Понимаю, что это видимо фича, а не баг, но хотелось бы узнать как получить общее количество файлов в папке, и их общий размер.

P.S. Да не сочтут многоуважаемые модераторы оффтопом - буду признателен если посоветуете хорошую книгу по Power Shell на русском. Ссылки из шапки темы, к сожалению мертвые.
Автор: sewell
Дата сообщения: 14.09.2012 16:41
OverDope
Ну например так:
Get-ChildItem C:\TMP\Test | Measure-Object -Property Length -Sum
Если надо подсчет с подкаталогами - добавь после пути -recurse.
В поле Count - будет количество файлов, в Sum - размер в байтах.
P.S. Вот Здесь я выложил книгу Коха из шапки...
Автор: OverDope
Дата сообщения: 21.09.2012 16:08
Подскажите, пожалуйста как правильно использовать командлет "Test-Path".
Задача - проверить подключен ли к компьютеру диск.
Делаю:

Код: $Path = Test-Path "C:\TMP"
if ($Path -eq "True") {
Write-Host "Директория есть"
} else {
Write-Host "Директории нет"
}
Автор: Oldster
Дата сообщения: 21.09.2012 20:19
OverDope
попробуй так:

$Path = "C:\TMP"
if (Test-Path $Path) {
Write-Host "Директория есть"
} else {
Write-Host "Директории нет"
}

и еще могу посоветовать вместо PowerShell ISE установить PowerGUI, поудобнее будет.
Автор: TeHNoSaL
Дата сообщения: 11.10.2012 00:38
Подскажите пожалуйста, есть винд 2008 сервер. нужно из логов безопасности достать все попытки входа с неправильными паролям. в таблице ip, время,логин(порядок не важен) и желательно вывести в файл.Буду признателен за помощь!
Автор: Lich130387
Дата сообщения: 11.10.2012 11:07
нужно получить температуру процессора, материнки и диска + обороты на всех кулерах (где возможно). пока откопал пару wmi-классов: Win32_TemperatureProbe, Win32_Fan, CIM_TemperatureSensor. Но сделать с ними ничего не смог (получить какие-то значения, свойства). Раздобыл пару скриптов в инете, которые должны выводить значения свойств этих классов, но они ничего не выводят (пустые значения).
Ещё один скрипт:

Код: (([int](Get-WmiObject -class "MSAcpi_ThermalZoneTemperature" -Namespace "root\WMI").CurrentTemperature) - 2732) / 10
Автор: Lich130387
Дата сообщения: 12.10.2012 13:51
выяснил, что с помощью WMI это осуществить нельзя. Может, тогда кто-то знает, как ещё можно получить информацию с термодатчиков, а также обороты кулеров?
Автор: Oldster
Дата сообщения: 12.10.2012 20:26
TeHNoSaL
чуть выше я давал ссылку, если этого мало то вот еще, но это под 2003 сервер. под 2008 думаю можно легко переделать


Добавлено:
Lich130387
полгода назад разбирался с этим вопросом, но так до конца не решил, есть вариант - speedfan + плагин к нему был (сейчас не вспомню) но плагин старый и не работает с x64 (вроде так). по другому я решения не нашел.
Автор: TeHNoSaL
Дата сообщения: 12.10.2012 21:36
Я видел эту статью, по ней и делал, но на 2008 некоторые команды не так отрабатывают, ищу в чем же ошибка, Спасибо!
Автор: Oldster
Дата сообщения: 12.10.2012 22:18
TeHNoSaL
там вроде id другие + парсинг надо сделать, не так сложно должно получится.... сам давно хочу сделать это, но поступил проще - отрубил фаерволом доступ на сервера по RDP и проблема отпала. А то раньше ломились все кому не лень и пароли подбирали на внешние сервера, а сейчас ляпота, в логах тишина
Автор: TeHNoSaL
Дата сообщения: 12.10.2012 23:01
$message = $_.message.split("`n") | %{$_.trimstart()} | %{$_.trimend()}
поясните пожалуйста эту сроку
нашел отличия в коде для 2003 и 2008, но скрипт доходит до этой строки и прерываеться

Добавлено:
мне нужно просто список ip с которых ломились(порт) и не только по рдп. и желательно вывести в файл.

Добавлено:
event id 4625 в 2008

Добавлено:
что не так в этом коде? таблицу составляет, но значений нет, и цветами окрашивает.

param ($key1,$val1,$val2,$val3,$val4,$val5,$val6)

if ($val1 -eq $null) {$val1=0};

$mydate = Get-date -hour 0 -minute 0 -second 0;

if ($key1 -eq "year") { $mydate = (Get-date -hour 0 -minute 0 -second 0 -day 1 -month 1); $mydate = $mydate.addyears(-$val1); };

if ($key1 -eq "month") { $mydate = (Get-date -hour 0 -minute 0 -second 0 -day 1); $mydate = $mydate.addmonths(-$val1); };

if ($key1 -eq "day") { $mydate = $mydate.adddays(-$val1) };

if ($key1 -eq "date") { $mydate = (Get-date -hour 0 -minute 0 -second 0 -day $val1 -month $val2 -year $val3); }; # здесь реализуем возможность задания интервала

if ($val4 -eq $null) {$Events = Get-EventLog security -message "*Тип входа10*" -after ($mydate) | ?{$_.eventid -eq 4625 }}
if ($val4 -ne $null) {$Events = Get-EventLog security -message "*Тип входа10*" -after ($mydate) -before (get-date -hour 0 -minute 0 -second 0 -day $val4 -month $val5 -year $val6) | ?{$_.eventid -eq 4625 }}
$Data = New-Object System.Management.Automation.PSObject
$Data | Add-Member NoteProperty Time ($null)
$Data | Add-Member NoteProperty UserName ($null)
$Data | Add-Member NoteProperty Address ($null)

$Events | %{

$Data.time = $_.TimeGenerated


$Data.UserName = ($message | ?{$_ -like "Имя учетной записи:*"} | %{$_ -replace "^.+:."} )
$Data.Address = ($message | ?{$_ -like "Сетевой адрес источника:*"} | %{$_ -replace "^.+:."})

$textcolor = $host.ui.rawui.foregroundcolor

$host.ui.rawui.foregroundcolor = "red"

if ($data.address -like "192.168.0*") {$host.ui.rawui.foregroundcolor = "DarkGreen"}
if ($data.address -like "10.*") {$host.ui.rawui.foregroundcolor = "yellow"}

$data

$host.ui.rawui.foregroundcolor = $textcolor

}

Добавлено:
ошибок нет!
Автор: Lich130387
Дата сообщения: 15.10.2012 06:21
Oldster
Что-то пока не могу разобраться со спидфаном. Может подскажешь, что там да как? плиз, постарайся вспомнить, что делал. И что-то я не пойму, какой плагин там надо, что он должен делать, как выглядеть, как работает, как его запускать/устанавливать/подключать...

Добавлено:
пробовал разобраться с логами (чтобы из них читать инфу), но не смог: там всё мудрёно.
Автор: Oldster
Дата сообщения: 15.10.2012 09:38
Lich130387
Вот что я нашел у себя в записях:
Готового решения я не нашел.
Варианты решения: Есть "готовое" решение (см. http://www.zabbix.com/forum/archive/index.php/t-13939.html), но он работает только с x86. Смысл его в том, что к SpeedFun-у прикручивается SNMP "плагин" и по нему происходит обмен информации. На сайте автора "плагина" есть исходники, они достаточно маленькие и разобраться с ними можно! В результате мы получим то, что мы хотим. Так же в комплекте с исходниками идут тестовые утилиты для проверки. Кроме того, в инете есть много примеров, для реализации чтения значений из SpeedFun-а (я находил и под C#). Примеры ищется по слову: "SFSharedMemory_ALM".


Добавлено:
Задача у меня была такая: прикрутить мониторинг температуры к Zabbix.
В принципе - можно сам SpeedFan настроить на отправку почты о превышении температуры. Возможно, что это самое простое будет.
Автор: Lich130387
Дата сообщения: 15.10.2012 12:30
Oldster
не, мне это надо сделать с помощью ПоверШелл, а не через почту. За инфу спасибо, посмотрю. (упоминание си-шарпа смутило, но пофигу...)
Автор: sewell
Дата сообщения: 16.10.2012 11:10
Lich130387
Теоретически, любой код с С# можно представить как скрипт POwerShell. Там тоже можно работать с объектами .NET. Только синтаксис немного другой. А там - все реально. Правда у меня не было нужды особой так поступать, ибо в C# это сделать быстрее, но иногда определенные небольшие решения переносил на PS.

P.S. Кстати, Microsoft выпустил программку для поиска всевозможных скриптов PowerShell на спецфорумах и т.п. Здесь можно ее скачать
Автор: Lich130387
Дата сообщения: 18.10.2012 06:58
блин, в PowerShell ISE 3.0 выдаёт какие-то кракозябры, видимо, проблемы с кодировкой. Главное, в обычном PS 3.0 всё выдаётся нормально. В чём проблема, как исправить?
Автор: Oldster
Дата сообщения: 18.10.2012 08:54
Lich130387
1) НИКОГДА не используй название директорий на русском языке!!!
2) сохрани файл (*.ps1) в кодировки 866 и запусти
Автор: Lich130387
Дата сообщения: 18.10.2012 09:08
Oldster
1.понятно.
2.как это сделать? (желательно пошагово)

Добавлено:
исправил русские названия на английские - не помогло =(
Автор: Oldster
Дата сообщения: 18.10.2012 10:10
Lich130387
пришли еще раз лог ошибки и скрипт (на картинки плохо видно)
из того, что увидел, исправь:
net use G: /delete /y

Страницы: 123456789101112131415161718192021222324

Предыдущая тема: Не понятная проблема с видеокартой.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.