Попробуй метод в powershell - PullRequest
0 голосов
/ 12 мая 2010

Итак, я хочу встроить метод try в мой скрипт powershell ниже. Если мне отказано в доступе к серверу, я хочу, чтобы он пропустил этот сервер. Пожалуйста, помогите ..

[code]$Computers = "server1", "server2"

Get-WmiObject Win32_LogicalMemoryConfiguration -Computer $Computers | Select-Object `
@{n='Server';e={ $_.__SERVER }}, `
@{n='Physical Memory';e={ "$('{0:N2}' -f ($_.TotalPhysicalMemory / 1024))mb" }}, `
@{n='Virtual Memory';e={ "$('{0:N2}' -f ($_.TotalPageFileSpace / 1024))mb" }} | `
Export-CSV "output.csv"[/code]

Ответы [ 4 ]

4 голосов
/ 12 мая 2010

Функциональность Try / catch встроена в PowerShell 2.0, например ::1001*

PS> try {$i = 0; 1/$i } catch { Write-Debug $_.Exception.Message }; 'moving on'
Attempted to divide by zero.
moving on

Просто оберните ваш скрипт в подобный try / catch. Обратите внимание, что вы можете полностью игнорировать ошибку, оставив блок catch пустым catch { }, но я бы рекомендовал хотя бы выложить информацию об ошибке, если для $ DebugPreference установлено значение «Продолжить».

2 голосов
/ 13 мая 2010

Вы можете просто подавлять ошибки с помощью параметра ErrorAction:

Get-WmiObject Win32_LogicalMemoryConfiguration -Computer $ Computers -ErrorAction SilentlyContinue | ...

0 голосов
/ 14 мая 2010

Использовать функцию фильтра? Как объясняется в этом уроке.

Он передает список компьютеров в свой конвейер - сначала он пытается пропинговать каждый, а затем пропускает только те, которые отвечают на следующую команду (перезагрузка). Вы можете настроить это для любой фактической функциональности, которую вы хотели.

0 голосов
/ 12 мая 2010

Вы можете использовать trap для репликации Try / Catch, см. http://huddledmasses.org/trap-exception-in-powershell/ или http://weblogs.asp.net/adweigert/archive/2007/10/10/powershell-try-catch-finally-comes-to-life.aspx для примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...