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

» PowerShell

Автор: angeltwo
Дата сообщения: 23.12.2014 06:10
vat21
Если пинга нет, то как тогда собираетесь делать рестарт службы? Или это рестарт какой-то службы на том компьютере, откуда пингуете?

В случае второго варианта это делается так

Код:
if (Test-Connection "127.0.0.1") {Restart-Service "W32Time"}
Автор: vat21
Дата сообщения: 23.12.2014 08:07
Collapse Troll

Цитата:
Если для работы - то можно использовать программу FriendlyPinger, там кажется можно выставить кол-во "долбёжек" и запуск своей программы/скрипта


Хотелось бы средствами Windows

angeltwo


Цитата:
В случае второго варианта это делается так

Код:
 
if (Test-Connection "127.0.0.1") {Restart-Service "W32Time"}
 

это я и имел ввиду... А как указать условие если пинга нет от 2 и более устройств....

При проверке этого кода получается обратное - если пинг есть служба перезапускается...
Автор: angeltwo
Дата сообщения: 23.12.2014 09:38
vat21
так? в массив $arr список пингуемых компов надо поместить

Код:
cls
$arr = @("127.0.0.1", "127.0.0.0", "169.255.254.255", "169.254.254.255")
$n = 0
$arr | %{if (!(Test-Connection $_)) {$n++
if ($n -ge 2) {Restart-Service "W32Time";break}
}}
Автор: lavren
Дата сообщения: 23.12.2014 10:06
vat21
Както так:

Код:
$Devices = @('Comp1','Comp2','Comp3','Comp4','Comp5')
function TestDev {
$ret = 0;
foreach ($D in $Devices){
if (!(Test-Connection $D -ErrorAction Ignore)){
$ret++
}
}
$ret
}
while($true){
if ((TestDev) -ge 2){
#Restart-Service "W32Time"
}
Start-Sleep -Seconds 600
}
Автор: vat21
Дата сообщения: 23.12.2014 10:56
angeltwo

Цитата:
cls
$arr = @("127.0.0.1", "127.0.0.0", "169.255.254.255", "169.254.254.255")
$n = 0
$arr | %{if (!(Test-Connection $_)) {$n++
    if ($n -ge 2) {Restart-Service "W32Time";break}
}}  

Спасибо, все на 100%.
Автор: Futurism
Дата сообщения: 08.02.2015 20:59
подскажите, почему не могу печать в powershell
т.е. открываю его , печатаю, но ничего не отображается , как будто он клавиатуру не слушается
Автор: Sje
Дата сообщения: 24.04.2015 13:19
Доброго дня!

Коллеги, нужна помощь в скриптовании powershell.
Из powershell выгружен список пользователей без логинов более 60ти дней, список подкорректирован, теперь требуется заблокировать пользователей из списка.

$list = Import-CSV c:\3.csv
forEach ($item in $list) {$samAccountName = $item.samAccountName Disable-ADAccount -Identity $samAccountName}

на что получаю

Неверная числовая константа: 1..
строка:1 знак:3
+ 1. <<<< ps1
+ CategoryInfo : ParserError: (1.:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant

Подскажите, что я делаю не так?
Автор: KapralBel
Дата сообщения: 24.04.2015 13:23
Sje

Цитата:
Подскажите, что я делаю не так?

Неправильно запускаете

Нужно не powershell 1.ps1
а powershell .\1.ps1
Автор: num1984
Дата сообщения: 31.05.2015 13:55
[more] [more] Приветствую Вас господа! На форуме новенький, однако зыркаю что имеются знающие люди...может кто поможет?
Суть вот в чем...написал я как то скрипт на powershell, который цепляет эвенты принт сервера с id 307 и id 805 соответственно. Все бы и ничего, но начальству понадобилось вдруг что б вместе с samaccountname, которое вытаскивается из 307 эвента прит сервера, так же из самой active directory бралось значение office...и, в тот же лог, соответственно, записывалось. Вопрос...можно ли сие сделать и, если не трудно, никто не подскажет - как??
---------------------------------------------------------------------------------------------------------
Сам скрипт:

$a3 = Measure-Command -Expression {

$workpath = "C:\parslog\logs\work"

$logname = "306EV%"
$logname3 = "805EV%"
$logname5 = "printlog%"

$logname1 = [System.Web.HttpUtility]::UrlEncode($logname)
$logname2 = [System.Web.HttpUtility]::UrlEncode($logname3)
$logname4 = [System.Web.HttpUtility]::UrlEncode($logname5)

$Now = [System.DateTime]::Now
$filedate = $Now.ToString("yyyy.MM.dd_HH mm")

$out_evt_file = "$workpath\$logname1-$filedate.evtx"
$out_evt_file1 = "$workpath\$logname2-$filedate.evtx"
$out_csv_file = "$workpath\$logname1-$filedate.csv"
$out_csv_file1 = "$workpath\$logname2-$filedate.csv"
$out_csv_filetogether = "$workpath\$logname5-$filedate.csv"

#wevtutil.exe cl $logname /BU:$out_evt_file /uni:true
#wevtutil.exe cl Microsoft-Windows-PrintService/Operational /BU:c:\install\printaudit\work\filedate.evtx /uni:true
wevtutil.exe Export-Log Microsoft-Windows-PrintService/Operational C:\parslog\logs\work\filedate.evtx /ow:true
wevtutil.exe Export-Log Microsoft-Windows-PrintService/Operational C:\parslog\logs\work\filedate1.evtx /ow:true

$query = "*[System[(Level=4 or Level=0) and (EventID=307)]]"
$query1 = "*[System[(Level=4 or Level=0) and (EventID=805)]]"

#$Events = wevtutil.exe query-events $out_evt_file /lf:true /q:$query /f:XML /locale:ru /uni:true
$Events = wevtutil.exe query-events C:\parslog\logs\work\filedate.evtx /c:50/rd:true /lf:true /q:$query /f:XML /locale:ru /uni:true
$Events2 = wevtutil.exe query-events C:\parslog\logs\work\filedate1.evtx /c:50 /rd:true /lf:true /q:$query1 /f:XML /locale:ru /uni:true

$Events1=$Events |
% { [xml]$_ } |
% {

if ($_.Event.UserData.DocumentPrinted.Param7 -is [array] ) {
New-Object PSObject -Property @{

JobID = $_.Event.UserData.DocumentPrinted.Param1;
user = $_.Event.UserData.DocumentPrinted.Param3;
comp = $_.Event.UserData.DocumentPrinted.Param4;
printer = $_.Event.UserData.DocumentPrinted.Param5;
port = $_.Event.UserData.DocumentPrinted.Param6;
kolvo_str = [int]$_.Event.UserData.DocumentPrinted.Param7[0];
size = [int]$_.Event.UserData.DocumentPrinted.Param7[1];
Date = $filedate;
}
} else {
New-Object PSObject -Property @{

JobID = $_.Event.UserData.DocumentPrinted.Param1;
user = $_.Event.UserData.DocumentPrinted.Param3;
comp = $_.Event.UserData.DocumentPrinted.Param4;
printer = $_.Event.UserData.DocumentPrinted.Param5;
port = $_.Event.UserData.DocumentPrinted.Param6;
kolvo_str = [int]$_.Event.UserData.DocumentPrinted.Param7;
size = [int]$_.Event.UserData.DocumentPrinted.Param8;
Date = $filedate;
}
}
}

$Events1 | export-csv -Path $out_csv_file -NoTypeInformation -Encoding Unicode
$a3

}

$Events3=$Events2|
% { [xml]$_ } |
% {
New-Object PSObject -Property @{
date = $_.Event.System.TimeCreated.SystemTime;
# time = $_.Event.System.TimeCreated.SystemTime;
JobID = $_.Event.UserData.RenderJobDiag.Jobid;
copies = $_.Event.UserData.RenderJobDiag.Copies;

}
}

$Events3 | export-csv -Path $out_csv_file1 -NoTypeInformation -Encoding Unicode


$a3
$hash = @{}
#Import-CSV $out_csv_file | Foreach {$hash[$_.JobID] = $_.user, $_.comp, $_.printer, $_.size, $_.kolvo_str}
Import-CSV $out_csv_file | Foreach {$hash[$_.JobID] = $_.user, $_.comp, $_.printer, $_.kolvo_str, $_.size}
$f2 = Import-CSV $out_csv_file1
#$f2 | Foreach {if($hash[$_.JobID]) { $obj = "" | Select date, time, user, comp, printer, kolvo_str, size, copies
$f2 | Foreach {if($hash[$_.JobID]) { $obj = "" | Select date, time, user, comp, printer, size, kolvo_str, copies

$obj.date = Get-Date $_.date -uformat "%d.%m.%Y"
$obj.time = Get-Date $_.date -uformat "%H:%M:%S"
$obj.user = $hash[$_.JobID][0]
$obj.comp = $hash[$_.JobID][1]
$obj.printer = $hash[$_.JobID][2]
#$obj.port = $hash[$_.JobID][3]
$obj.size = $hash[$_.JobID][3]
$obj.kolvo_str = $hash[$_.JobID][4]
$obj.copies= $_.copies
$obj
}

}|Export-CSV -NoType $out_csv_filetogether -Delimiter ";"
Remove-Item C:\parslog\logs\work\*.evtx -Recurse
Remove-Item $out_csv_file -Recurse ; Write-Host -f 'green' 'green'
Remove-Item $out_csv_file1 -Recurse ; Write-Host -f 'blue' 'blue'

------------------------------------------------------------------------------------------------------
Тут значение user = $_.Event.UserData.DocumentPrinted.Param3 (из 307 эвента принт сервер лога) и есть по сути samaccountname.
Как в сий лог сунуть еще и параметр office не совсем представляю.
Есть некое общее представление, что нужно сделать что то типо этого -
Задать переменную .. примерно так чтоли -
Import-Module ActiveDirectory
$z = Get-ADUser -Filter * -SearchBase ` 'OU=rzkoren,OU=Users,OU=rzkoren,OU=Oren,OU=Regions,DC=rzk,DC=local' -SearchScope` Subtree -Properties samaccountname, office | select samaccountname, office
Затем ее как то привязать к переменной user = $_.Event.UserData.DocumentPrinted.Param3...
...не пойму как сделать что б вместе с user, которая есть по сути samaccountname выгрузить в этот общий принт лог еще и значение office, непосредственно, из AD..
Запись в самом эвенте выглядит так:

Документ 169, Печать документа, которым владеет Yasaulov.VI на Oren-YASAUL, был распечатан на Oren-M525 через порт oren2-hp5. Размер в байтах: 101494. Страниц напечатано: 1. Действий пользователя не требуется.

[/more] [/more]
Автор: wusa
Дата сообщения: 31.05.2015 14:33
Вышла новая версия WMF 5.0, теперь с поддержкой Windows 7:
http://blogs.msdn.com/b/powershell/archive/2015/04/29/windows-management-framework-5-0-preview-april-2015-is-now-available.aspx
Автор: snailp4el
Дата сообщения: 05.06.2015 10:01
Помогите решить проблему.
$fild = City
Set-ADUser $slave -$fild $valueFild.City
Set-ADUser : Не удается найти позиционный параметр, принимающий аргумент "-City".

Понятно что сложность в том что переменная передается как стринг в пораметр, не понятно что с этим делать
Заранее спасибо!
Автор: kreativ4eg
Дата сообщения: 15.06.2015 11:38
Доброго времени суток!
Кто подскажет, может сталкивался, меняю значение в переменных среды
Set-Item -path env:path -value ($env:path + ";c:\temp")
При проверке в консоли изменение есть, а вот свойствах нет и не появляется. Почему и как сделать видимым?
спасибо!
Автор: Collapse Troll
Дата сообщения: 15.06.2015 11:59

Цитата:
При проверке в консоли изменение есть, а вот свойствах нет и не появляется.

может связано с тем что винда не английская?..
Автор: kreativ4eg
Дата сообщения: 15.06.2015 12:03
сомневаюсь
Автор: Collapse Troll
Дата сообщения: 15.06.2015 12:29
у меня было такое в одном из серверных продуктов, на котором был установлен русский ленг пак. powershell выдавал что изменения применились, но в UI ничего не менялось. Поэтому я задал этот вопрос

попробуйте другими методами, например

Код: $env:Path += ";C:\Program Files\GnuWin32\bin"
Автор: kreativ4eg
Дата сообщения: 15.06.2015 12:52
тоже самое. Пробую под Win 7x64 prof RU лицензия со всеми обновами
Автор: KapralBel
Дата сообщения: 15.06.2015 13:07
Скорее всего связано с тем что вы меняете переменные среды, а не то что прописано в реестре
Меняйте в реестре для постоянного изменения и в переменных среды для оперативного (иначе действовать начнет со следующей загрузки)
Автор: kreativ4eg
Дата сообщения: 15.06.2015 13:14
перезагрузка не помогает, в консоли все изменения остаются, а в свойствах так и нетю(((
Автор: KapralBel
Дата сообщения: 15.06.2015 14:00
kreativ4eg
Ыыыыы.... пока вы не поменяете значение в реестре у вас изменения не будет
Автор: kreativ4eg
Дата сообщения: 15.06.2015 14:38
я что-то смешное сказал?
Изменения вступают в силу(работают) при выполнении скрипта и остаются при перезагрузке. Проблемы в том, что они не отображаются в свойствах компа, а если смотреть с помощью консоли они есть
Автор: KapralBel
Дата сообщения: 15.06.2015 16:35
В свойствах компа - берется из реестра, а вы туда ничего не пишете
Кстати после перезагрузки даже только PS переменная path обнуляется до дефолтовой
Автор: CrazyDocTI
Дата сообщения: 17.06.2015 15:55
Кто-либо сталкивался с проблемой: модуль AD, при запросе get-aduser -f * -prop lastlogontimestamp, выводит атрибуты не для всех(большинство без значения атрибута)? ADSIedit проверял(-server в PS прописывал тот-же что и у ADSI) - атрибуты на месте.
Автор: obtim
Дата сообщения: 04.08.2015 10:59
Надо поставить правильно задачу человеку.
Возможно ли на уровне PowerShell решить следующую задачу:
1. Выборка адресов Клиентов из БД Firebird
2. На основе этих адресов запрос к API Google Maps и преобразование в координаты
3. Вывод результатов в виде столбцов координат с возможностью последующего сохранения в csv
?
Автор: iNNOKENTIY21
Дата сообщения: 24.08.2015 13:12
win7 x64 ent. хочется попробовать powershell v5, кто нибудь ставил? где качать? как ставить?
Автор: elite128
Дата сообщения: 04.09.2015 10:51
повершелл русские имена директорий не понимает?
@powershell "\\public\Программы\1C\1CDistr\1C8InstallAndUninstall.ps1"
в консоли выводит кракозябры вместо Программы
Автор: Collapse Troll
Дата сообщения: 04.09.2015 13:51

Цитата:
повершелл русские имена директорий не понимает?
@powershell "\\public\Программы\1C\1CDistr\1C8InstallAndUninstall.ps1"
в консоли выводит кракозябры вместо Программы

в региональных настройках в третьей вкладке выставите "Preferred language for non-unicode language", или как-то так - в "русский". и попробуйте после перезагрузки

Автор: Godzie
Дата сообщения: 02.12.2015 11:09
Ребят, мож подскажете на маленький вопрос по синтаксису.
Скрипт парсит файл $file со следующей структурой:
12:00    01:40    Виски Вильям Лоусонс супер пряный
12:00    01:40    Пасспорт Скотч
12:00    --:--    Коктейль Акция ВЛсупер прян + пепси 3 шт

Берем $dish = "Коктейль Акция ВЛсупер прян + пепси 3 шт"
$file -match $dish выдает $False, хотя не должен(?). Если брать строку "Коктейль Акция ВЛсупер прян +", то с ней он уже соглашается...
Проблема только с указанной выше строкой. Другими строками до этого он не давился.
Автор: KapralBel
Дата сообщения: 02.12.2015 12:51
Godzie

Код: PS D:\> $file -match "+ пепси"
Bad argument to operator '-match': выполняется разбор "+ пепси" - Перед квантификатором {x,y} ничего нет..
At line:1 char:13
+ $file -match <<<< "+ пепси"
+ CategoryInfo : InvalidOperation: ( [], RuntimeException
+ FullyQualifiedErrorId : BadOperatorArgument
Автор: iNNOKENTIY21
Дата сообщения: 02.12.2015 12:58
надо экранировать по правилам регулярных выражений
$dish = "Коктейль Акция ВЛсупер прян \+ пепси 3 шт"
Автор: Godzie
Дата сообщения: 02.12.2015 13:07
Спасибо, мысль уловил!

Страницы: 123456789101112131415161718192021222324

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


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