다음을 통해 공유


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에 연결