PowerShell을 사용하여 원격으로 WMI에 연결

Windows PowerShell은 원격 컴퓨터에서 WMI(Windows Management Instrumentation)에 연결하는 간단한 방법을 제공합니다. WMI의 원격 연결은 Windows 방화벽, DCOM 설정 및 UAC(사용자 계정 컨트롤)의 영향을 받습니다. 원격 연결 구성에 대한 자세한 내용은 Windows Vista에서 원격으로 시작하여 WMI에 연결을 참조하세요.

이 항목의 예제는 원격 컴퓨터에서 WMI에 연결의 VBScript를 기반으로 합니다. 이 항목의 모든 예제에서는 Get-WmiObject cmdlet을 사용합니다. 자세한 내용은 Get-WmiObject를 참조하세요.

Windows PowerShell 예제

원격 컴퓨터에 대한 연결을 만들 때 사용자는 원격 컴퓨터 이름, 자격 증명 및 연결에 대한 인증 수준 같은 연결 정보를 지정할 수 있습니다. 다음 예제에서는 다양한 자격 증명 집합을 사용하여 원격 컴퓨터에 연결하는 방법과 WMI 정보에 액세스하는 방법을 확인할 수 있습니다.

다음 Windows PowerShell 예제에서는 가장 수준을 설정하는 방법을 확인할 수 있습니다.


Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -ComputerName Computer_B

앞의 예제에서 사용자는 로그온할 때 사용한 것과 동일한 자격 증명(도메인 및 사용자 이름)을 사용하여 원격 컴퓨터에 연결합니다. 또한 사용자는 가장 사용을 요청했습니다. 원래 VBScript 예제와 달리, 가장 수준은 "Impersonation" 속성에 의해 설정되므로 모니커 문자열이 필요하지 않습니다. 기본적으로 가장 수준은 3(가장)으로 설정됩니다.

이 예제에서는 원격 컴퓨터에서 실행하는 Win32_Process 클래스의 모든 인스턴스를 나열합니다.

참고

기본 네임스페이스가 다른 컴퓨터에서는 동일하지 않을 수 있으므로, 원격 컴퓨터에서 연결할 WMI 네임스페이스를 지정해야 합니다.

 

다음 Windows PowerShell 예제에서는 다른 자격 증명을 사용하여 원격 컴퓨터에 연결하고 가장 수준을 3(가장)으로 설정하는 방법을 확인할 수 있습니다.


$Computer = "atl-dc-01"

Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -Credential `
FABRIKAM\administrator -ComputerName $Computer

앞의 예제에서 컴퓨터 이름은 $Computer 변수에 할당되었습니다. 사용자는 특정 자격 증명(도메인 및 사용자 이름)을 사용하여 원격 컴퓨터에 연결하고 인증 수준에 대한 가장을 요청합니다.

참고

억음 부호 문자(')는 줄 바꿈을 나타내는 용도로 사용합니다. VBScript의 밑줄 문자(_)와 동일합니다.

 

다음 Windows PowerShell 예제에서는 원격 컴퓨터 이름 배열을 만든 다음 각 컴퓨터에 플러그 앤 플레이 디바이스의 이름(Win32_PnPEntity 인스턴스)을 표시하여, 동일한 도메인에 있는 원격 컴퓨터 그룹에 연결합니다.

$ArrComputers = "Computer1", "Computer2", "Computer3"
foreach ($Computer in $ArrComputers) 
{
write-host ""
write-host "===================================="
write-host "Computer: $Computer"
write-host "===================================="

write-host "-----------------------------------"
write-host "Win32_PnPEntity instance"
write-host "-----------------------------------"

$ColItems = Get-WmiObject -Class Win32_PnPEntity -Namespace "root\cimv2" -Computer $Computer
$ColItems[0..47] | Format-List Name, Status
}

참고

이전 Windows PowerShell 스크립트를 실행하려면 원격 컴퓨터의 관리자여야 합니다. 또한 앞의 예제와 관련한 다음 사항에 유의해야 합니다.

 

  • 배열에 있는 컴퓨터 이름은 문자열이므로 따옴표로 묶어야 합니다.
  • Get-WmiObject에서 반환한 개체는 $ColItems 변수에 할당됩니다.
  • 범위 연산자 []는 플러그 앤 플레이 디바이스 목록을 인스턴스 48개로 제한했습니다. 자세한 내용은 About_Operators를 참조하세요.
  • "|"은 파이프라인 문자입니다. ColItems에서 반환한 개체는 Format-List cmdlet으로 전송됩니다.

다음 Windows PowerShell 예제를 사용하면 다른 도메인에 있는 원격 컴퓨터에 연결할 수 있습니다. 이 예제에서는 원격 컴퓨터의 Win32_Process 인스턴스에 대한 프로세스 이름도 표시합니다.

$Computer = "FullComputerName" 
$Domain = "DOMAIN"
$Credential = Get-Credential
$ColItems = Get-WmiObject -Class Win32_Process -Authority "ntlmdomain:$Domain" `
-Credential $Credential -Locale "MS_409" -Namespace "root\cimv2"  -ComputerName $Computer

foreach ($ObjItem in $colItems) 
{
write-host "Process Name:" $ObjItem.name
}

참고

이전 Windows PowerShell 스크립트를 실행하려면 원격 컴퓨터의 관리자여야 합니다.

 

앞의 예제에서 사용자는 다른 도메인에 있는 원격 컴퓨터에 연결하고 기본 로캘을 지정합니다. Get-Credential 명령은 사용자의 자격 증명을 요청하고 개체에 자격 증명을 할당합니다. 이 예제에서는 컴퓨터에서 실행하는 Win32_Process 클래스의 인스턴스 이름도 나열합니다.

원격 컴퓨터에서 WMI에 연결