😌
$srv="s-avp-kav-1204"
foreach ($cmp in (Get-Content C:\Scripts\11.txt)){
if (Test-Connection $cmp -Count 1) {
if($ok=Invoke-Command -ComputerName $cmp -ScriptBlock {& 'C:\Program Files (x86)\Kaspersky Lab\NetworkAgent\klmover.exe'-address $using:srv -logfile C:\temp\klmover.log -silent} -ErrorAction SilentlyContinue){
$OK|Out-File C:\Scripts\gpo\$cmp.log -Encoding utf8
}
esle {
"$cmp not in action" |Out-File C:\Scripts\gpo\errors.txt -Append
}
}
else {
"$cmp with no ping" | Out-File C:\Scripts\gpo\noping.txt -Append
}
}
Все отлично, все правильно отдает, только "$cmp not in action" не появляется, что за дела? If же срабатывает, почему Else-то нет?! 🤔
Тут всегда будет ок, если прошёл пинг же
ок будет, а $OK нет)
Будьте проще;)...
Будет или результат выполнения ивока или ошибка в $ок
ошибка в $OK не попадает
$ErrorActionPreference = 'Stop' $srv=Read-Host "Введите имя сервера KAV" $CompPath=Read-Host "Путь к файлу со списком компьютеров" #s-avp-kav-1200 #s-avp-kav-1202 #s-avp-kav-1203 #s-avp-kav-1204 foreach ($cmp in (Get-Content $CompPath)){ try { Test-Connection $cmp -Count 1 |Out-Null Test-WSMan $cmp | Out-Null if (!(Test-Path \\$cmp\c$\temp\)) {New-Item \\$cmp\c$\temp\ -ItemType Directory -Force | Out-Null} Invoke-Command -ComputerName $cmp -ScriptBlock {& 'C:\Program Files (x86)\Kaspersky Lab\NetworkAgent\klmover.exe'-address $using:srv -logfile C:\temp\klmover.log} sleep 2 if (Test-Path \\$cmp\c$\temp\klmover.log){ Write-Host $cmp is ok -ForegroundColor Green } else { Write-Host "Cannot find logfile on $cmp c:\temp\klmover.log, mb error!" -ForegroundColor Red } } catch { Write-Host $cmp not available to connect -ForegroundColor Red sleep 1 } } Сделал вот так, очень нравится)
Обсуждают сегодня