Teste para Localhost em Powershell?

8

Eu tenho um script PowerShell que chama Get-WmiObjectcom -Credential. No entanto, esse erro ocorre se eu o estiver executando na máquina local:

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

Qual é a maneira correta de adicionar uma lógica if localhost para evitar esse erro? Ou há uma maneira melhor?

Kyle Brandt
fonte
Como você está passando o parâmetro computername?
Christopher
@ Christopher: Por IP (10.xxx), não há muito controle sobre isso, pois um aplicativo o executa.
Kyle Brandt

Respostas:

3

Você sempre pode consultar o IP local por meio do WMI e armazená-lo em $ localIP e, em seguida, compará-lo com qualquer endereço atualmente próximo no seu pipeline ou matriz:

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

Se você envolvê-lo em um bloco try catch com stop de ação de erro no primeiro comando, ele interceptará o erro e executará o bloco catch sem credenciais.

Try
{
Get-WmiObject -Credential domain\user -ComputerName localhost -class Win32_BIOS -erroraction Stop
}
Catch
{
Get-WmiObject -ComputerName localhost -class Win32_BIOS
}
Christopher
fonte
O PS me permite capturar uma exceção específica para o erro que estou recebendo?
Kyle Brandt
Se você sabe a classe .NET Exceção você pode fazê-lo assim ... catch [System.Net.SomeWMIExceptionClass] {code goes here}
Christopher
Eu estou errado. De acordo com esta pergunta, stackoverflow.com/questions/3097785/… e alguns testes que fiz, o PowerShell quebra a exceção para que você não possa capturar erros específicos.
Christopher