Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Инфа об ОС и отчет об ошибках (http://forum.oszone.net/showthread.php?t=135542)

s_admin 23-03-2009 11:47 1071832

Инфа об ОС и отчет об ошибках
 
Здрастье!
Вобщем есть такая проблема...написал тут простенький скрипт, и столкнулся вот с чем.
Код:

trap { write-host "Error connecting to $computer" -fore red 
"$computer" | out-file c:\errors.txt -append  continue }
$computers = Get-Content "D:\PC.txt"
foreach ( $computer in $computers ) {
get-wmiobject win32_operatingsystem -comp $computer -ea stop }

В файлике PC.txt есть имена машин: comp1, comp2, comp3. comp1 и comp3 существуют в сети, comp2 - нет. По идее, скрипт должен выдать ошибку на втором, записать ее в лог и продолжить скрипт с comp3. Но после comp2, выполнение скрипта завершается.... чего не так я сделал?
Если делать вот так:
Код:

trap { write-host "Error connecting to $computer" -fore red 
"$computer" | out-file c:\errors.txt -append  continue }
$computer = "comp1" get-wmiobject win32_operatingsystem -comp $computer -ea stop
$computer = "comp2" get-wmiobject win32_operatingsystem -comp $computer -ea stop
$computer = "comp3" get-wmiobject win32_operatingsystem -comp $computer -ea stop

то все работает. А вот с условием foreach нет.
Заранее спасибо.

Petya V4sechkin 23-03-2009 12:22 1071871

s_admin, внутри цикла работает:
Код:

$computers = Get-Content "D:\PC.txt"
foreach ( $computer in $computers ) {
  trap {
    write-host "Error connecting to $computer" -fore red
    "$computer" | out-file C:\errors.txt -append
    continue
  }
  get-wmiobject win32_operatingsystem -comp $computer -ea stop
}

Все дело в области:
Перехват ошибок с помощью –ErrorAction (–EA) в Windows PowerShell

s_admin 23-03-2009 12:26 1071878

Блин, стыдно, что сам не догадался.... :blush:
Спасибо огромное!


Время: 00:02.

Время: 00:02.
© OSzone.net 2001-