Powershell에서 로컬 호스트를 테스트 하시겠습니까?


8

로 호출하는 powershell 스크립트가 Get-WmiObject있습니다 -Credential. 그러나 로컬 컴퓨터에서 실행하면 오류가 발생합니다.

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

이 오류를 피하기 위해 if localhost 논리를 추가하는 올바른 방법은 무엇입니까? 아니면 더 좋은 방법이 있습니까?


computername 매개 변수를 어떻게 전달합니까?
Christopher

@Christopher : IP (10.xxx)에 의해 응용 프로그램이 실행될 때이를 많이 제어하지 마십시오.
Kyle Brandt

답변:


3

항상 WMI를 통해 로컬 IP를 쿼리하여 $ localIP에 저장 한 다음 파이프 라인 또는 배열에서 현재 다음 주소와 일치시킬 수 있습니다.

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

2

첫 번째 명령에서 erroraction stop을 사용하여 try catch 블록으로 랩핑하면 오류를 포착하고 자격 증명없이 catch 블록을 실행합니다.

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

추신 : 내가받는 오류에 대해 특정 예외를 잡을 수 있습니까?
Kyle Brandt

.NET 예외 클래스를 알고 있다면 다음과 같이 할 수 있습니다. catch [System.Net.SomeWMIExceptionClass] {코드는 여기에 있습니다}
Christopher

나는 틀렸다. 이 질문에 따라 stackoverflow.com/questions/3097785/… 그리고 내가 한 일부 테스트에서 PowerShell은 예외를 래핑하므로 특정 오류를 잡을 수 없습니다.
Christopher
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.