Тест для локального хоста в Powershell?


8

У меня есть Powershell скрипт , который вызывает Get-WmiObjectс -Credential. Тем не менее, это ошибки, если я запускаю его на локальном компьютере:

Get-WmiObject : User credentials cannot be used for local connections

Как правильно добавить логику if localhost, чтобы избежать этой ошибки? Или есть лучший способ?


Как вы передаёте параметр computername?
Кристофер

@Christopher: По IP (10.xxx) не так уж много контроля над этим, поскольку приложение запускает его.
Кайл Брандт

Ответы:


3

Вы всегда можете запросить локальный IP-адрес через WMI и сохранить его в $ localIP, а затем сопоставить его с тем адресом, который сейчас находится в вашем конвейере или массиве:

if ($localIP -eq $otherIP) { get-wmiobject without -credential }    
else { existing query }

2

Если вы поместите его в блок try catch с ошибкой stop в первой команде, он перехватит ошибку и запустит блок catch без учетных данных.

Try
{
Get-WmiObject -Credential domain\user -ComputerName localhost -class Win32_BIOS -erroraction Stop
}
Catch
{
Get-WmiObject -ComputerName localhost -class Win32_BIOS
}

Позволяет ли PS поймать конкретное исключение для ошибки, которую я получаю?
Кайл Брандт

Если вы знаете класс исключений .NET, вы можете сделать это следующим образом ... catch [System.Net.SomeWMIExceptionClass] {код идет сюда}
Кристофер

Я не прав. В ответ на этот вопрос stackoverflow.com/questions/3097785/… и некоторые тесты, которые я проводил, PowerShell оборачивает исключение, чтобы вы не могли перехватить определенные ошибки.
Кристофер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.