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?


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 }

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
}

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.