Войти

Показать полную графическую версию : [решено] test-path для выключенной машины?


nokogerra
16-01-2015, 06:35
Доброго времени суток.
test-path -path \\windows7\c$\... выдает false в случае если машина выключена, как можно исключить такие машины, т.е. чтобы ответ true или false выдавался только для включенных машин, а для выключенных, например, "unavailable"? Вообще ответ "false" от выключенных машин поступает долго, идеальным вариантом был бы пропуск пути, если ответа нет, например, 2 секунды.

Iska
16-01-2015, 07:11
nokogerra, командлет «Test-Connection» вместе с параметром «-Quiet» возвращает булево значение.

$aMachineNames = "8.8.8.8", "localhost", "www.ya.ru", "Мама мыла раму"

$aMachineNames | ForEach-Object -Process {
if(Test-Connection -ComputerName $_ -Count 1 -Quiet) {
Write-Host "[$_] available" -ForegroundColor Green
} else {
Write-Host "[$_] unavailable" -ForegroundColor Red
}
}

nokogerra
16-01-2015, 09:20
Спасибо, вот так вполне работает:

Get-Content "C:\xps.txt" | ForEach-Object -Process {
if(Test-Connection -ComputerName $_ -Count 1 -Quiet) {
Test-Path -Path "\\$_\C$\windows\System32\nwsetup.dll"
} else {
Write-Host "[$_] unavailable" -ForegroundColor Red
}
}

Единственный минус - вывод такого вида:

........
False
[M2D2-08] unavailable
False
......

можно ли добавить перед (или после) true или false имя компьютера ($_)?

Iska
16-01-2015, 13:06
nokogerra, ну, так командлет «Test-Path» у Вас тоже наверняка должен быть в оператор «if(…)» обёрнут, нет? Или достаточно простого true/false?
Get-Content "C:\xps.txt" | ForEach-Object -Process {
if(Test-Connection -ComputerName $_ -Count 1 -Quiet) {
Write-Host "[$_] " -NoNewline -ForegroundColor Green
Write-Host $(Test-Path -Path "\\$_\C$\windows\System32\nwsetup.dll")
} else {
Write-Host "[$_] unavailable" -ForegroundColor Red
}
}

nokogerra
16-01-2015, 13:15
Достаточно true/false, спасибо большое. Решено.




© OSzone.net 2001-2012