Назад | Перейти на главную страницу

Проверить наличие Localhost в Powershell?

У меня есть сценарий PowerShell, который вызывает Get-WmiObject с участием -Credential. Однако эта ошибка возникает, если я запускаю ее на локальном компьютере:

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

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

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

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

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

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