У меня есть сценарий 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
}