다음을 통해 공유


Invoke-WmiMethod

WMI 메서드를 호출합니다.

구문

Invoke-WmiMethod
      [-Class] <String>
      [-Name] <String>
      [-ArgumentList <Object[]>]
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      -InputObject <ManagementObject>
      [-Name] <String>
      [-ArgumentList <Object[]>]
      [-AsJob]
      [-ThrottleLimit <Int32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      -Path <String>
      [-Name] <String>
      [-ArgumentList <Object[]>]
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      [-Name] <String>
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      [-Name] <String>
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      [-Name] <String>
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Description

이 cmdlet은 Invoke-WmiMethod WMI(Windows Management Instrumentation) 개체의 메서드를 호출합니다.

Windows PowerShell 3.0에 도입된 새로운 CIM(일반 정보 모델) cmdlet은 WMI cmdlet과 동일한 작업을 수행합니다. CIM cmdlet은 WSMan(WS-Management) 표준 및 CIM 표준을 준수하므로 cmdlet은 동일한 기술을 사용하여 Windows 컴퓨터와 다른 운영 체제를 실행하는 컴퓨터를 관리할 수 있습니다. 사용하는 Invoke-WmiMethod대신 Invoke-CimMethod를 사용하는 것이 좋습니다.

예제

예제 1: WMI 메서드 매개 변수의 필수 순서 나열

이 명령은 개체의 필요한 순서를 나열합니다.

Get-WmiObject Win32_Volume |
    Get-Member -MemberType Method -Name Format |
    Select-Object -ExpandProperty Definition

System.Management.ManagementBaseObject Format(System.String FileSystem, System.Boolean QuickFormat,
 System.UInt32 ClusterSize, System.String Label, System.Boolean EnableCompression,
 System.UInt32 Version)

PowerShell 3.0에서의 WMI 호출은 다른 메서드와 다르며, 개체 값을 특정 순서로 입력해야 합니다.

예제 2: 애플리케이션 인스턴스 시작

([Wmiclass]'Win32_Process').Create.OverloadDefinitions

System.Management.ManagementBaseObject Create(System.String CommandLine, System.String CurrentDirectory,
 System.Management.ManagementObject#Win32_ProcessStartup ProcessStartupInformation)

Invoke-WmiMethod -Path Win32_Process -Name Create -ArgumentList C:\Windows\system32\notepad.exe

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ProcessId        : 11312
ReturnValue      : 0
PSComputerName   :

이 명령은 Win32_Process 클래스의 메서드를 Create 호출하여 메모장 인스턴스를 시작합니다.

ReturnValue 속성이 채워0지고 명령이 완료되면 ProcessId 속성이 정수(다음 프로세스 ID 번호)로 채워집니다.

예제 3: 파일 이름 바꾸기

$invokeWmiMethodSplat = @{
    Path = "CIM_DataFile.Name='C:\scripts\test.txt'"
    Name = 'Rename'
    ArgumentList = 'C:\scripts\test_bu.txt'
}
Invoke-WmiMethod @invokeWmiMethodSplat

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ReturnValue      : 0

이 명령은 파일의 이름을 바꿉니다. Path 매개 변수를 사용하여 CIM_DataFile 클래스의 인스턴스를 참조합니다. 그런 다음 해당 특정 인스턴스에 Rename 메서드를 적용합니다.

ReturnValue 속성은 명령이 완료된 경우로 0 채워집니다.

예제 4: '-ArgumentList'를 사용하여 값 배열 전달

개체 $binSD 배열과 값의 배열을 사용하는 예제입니다 $null .

$acl = Get-Acl test.txt
$binSD = $acl.GetSecurityDescriptorBinaryForm()
$invokeWmiMethodSplat = @{
    Class = 'Win32_SecurityDescriptorHelper'
    Name = 'BinarySDToSDDL'
    ArgumentList = $binSD, $null
}
Invoke-WmiMethod @invokeWmiMethodSplat

매개 변수

-ArgumentList

호출된 메서드에 전달할 매개 변수를 지정합니다. 이 매개 변수의 값은 개체의 배열이어야 하며 호출된 메서드에 필요한 순서대로 표시되어야 합니다. cmdlet에는 Invoke-CimCommand 이러한 제한 사항이 없습니다.

이러한 개체를 나열할 순서를 확인하려면 이 항목의 끝부분에 있는 예제 1에 설명된 대로 WMI 클래스에서 메서드를 실행 GetMethodParameters() 합니다.

Important

첫 번째 값이 둘 이상의 요소를 포함하는 배열인 경우 두 번째 값 $null 이 필요합니다. 그렇지 않으면 명령에서 오류(예: Unable to cast object of type 'System.Byte' to type 'System.Array'..)를 생성합니다. 위의 예제 4를 참조하세요.

형식:Object[]
별칭:Args
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-AsJob

이 cmdlet이 명령을 백그라운드 작업으로 실행한다는 것을 나타냅니다. 이 매개 변수를 사용하여 완료하는 데 시간이 오래 걸리는 명령을 실행합니다.

AsJob 매개 변수를 사용하는 경우 명령은 백그라운드 작업을 나타내는 개체를 반환한 다음 명령 프롬프트를 표시합니다. 작업이 완료되는 동안 세션에서 작업을 계속할 수 있습니다. 원격 컴퓨터에 대해 사용되는 경우 Invoke-WmiMethod 작업이 로컬 컴퓨터에 만들어지고 원격 컴퓨터의 결과가 자동으로 로컬 컴퓨터로 반환됩니다. 작업을 관리하려면 명사(작업 cmdlet)가 포함된 Job cmdlet을 사용합니다. 작업 결과를 얻으려면 cmdlet을 Receive-Job 사용합니다.

원격 컴퓨터에서 이 매개 변수를 사용하려면 원격으로 로컬 및 원격 컴퓨터를 구성해야 합니다. 또한 Windows Vista 이상 버전의 Windows에서 관리자 권한으로 실행 옵션을 사용하여 Windows PowerShell을 시작해야 합니다. 자세한 내용은 about_Remote_Requirements 참조하세요.

Windows PowerShell 백그라운드 작업에 대한 자세한 내용은 about_Jobsabout_Remote_Jobs 참조하세요.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Authentication

WMI 연결에 사용되는 인증 수준을 지정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

  • -1: 변경되지 않음
  • 0: 기본값
  • 1: 없음 (수행된 인증 없음)
  • 2: 연결 (클라이언트가 애플리케이션과 관계를 설정하는 경우에만 인증이 수행됩니다.)
  • 3: 호출 (인증은 애플리케이션이 요청을 수신할 때 각 호출의 시작 부분에만 수행됩니다.)
  • 4: 패킷 (클라이언트에서 받은 모든 데이터에 대해 인증이 수행됩니다.)
  • 5: PacketIntegrity (클라이언트와 애플리케이션 간에 전송되는 모든 데이터는 인증되고 확인됩니다.)
  • 6: PacketPrivacy (다른 인증 수준의 속성이 사용되며 모든 데이터가 암호화됩니다.)
형식:AuthenticationLevel
허용되는 값:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Authority

WMI 연결을 인증하는 데 사용할 권한을 지정합니다. 표준 Windows NT LAN 관리자(NTLM) 또는 Kerberos 인증을 지정할 수 있습니다. NTLM을 사용하려면 권한 설정을 ntlmdomain:<DomainName>유효한 NTLM 도메인 이름을 식별하는 위치 <DomainName> 로 설정합니다. Kerberos를 사용하려면 .를 지정합니다 kerberos:<DomainName>\<ServerName>. 로컬 컴퓨터에 연결할 때는 기관 설정을 포함할 수 없습니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Class

호출할 정적 메서드를 포함하는 WMI 클래스를 지정합니다.

형식:String
Position:0
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-ComputerName

이 cmdlet이 명령을 실행하는 컴퓨터를 문자열 배열로 지정합니다. 기본값은 로컬 컴퓨터입니다.

하나 이상 컴퓨터의 NetBIOS 이름, IP 주소 또는 정규화된 도메인 이름을 입력하세요. 로컬 컴퓨터를 지정하려면 컴퓨터 이름, 점(.) 또는 localhost.를 입력합니다.

이 매개 변수는 Windows PowerShell 원격을 사용하지 않습니다. 컴퓨터가 원격 명령을 실행하도록 구성되지 않은 경우에도 ComputerName 매개 변수를 사용할 수 있습니다.

형식:String[]
별칭:Cn
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Confirm

cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.

형식:SwitchParameter
별칭:cf
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Credential

이 작업을 수행할 권한이 있는 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다. 사용자 이름(예: User01, Domain01\User01또는 User@Contoso.com.)을 입력합니다. 또는 cmdlet에서 반환되는 개체와 같은 PSCredential 개체를 Get-Credential 입력합니다. 사용자 이름을 입력하면 암호를 입력하라는 메시지가 표시됩니다.

형식:PSCredential
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-EnableAllPrivileges

이 cmdlet은 명령이 WMI를 호출하기 전에 현재 사용자의 모든 권한을 사용하도록 설정했음을 나타냅니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Impersonation

사용할 가장 수준을 지정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

  • 0: 기본값(일반적으로 : Impersonate로 설정된 기본 가장 수준에 대한 로컬 레지스트리를 3읽습니다.)
  • 1: 익명 (호출자의 자격 증명을 숨깁니다.)
  • 2: 식별 (개체가 호출자의 자격 증명을 쿼리할 수 있도록 허용).
  • 3: 가장 (개체가 호출자의 자격 증명을 사용할 수 있도록 허용)
  • 4: 대리자 (개체가 다른 개체가 호출자의 자격 증명을 사용하도록 허용합니다.)
형식:ImpersonationLevel
허용되는 값:Default, Anonymous, Identify, Impersonate, Delegate
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-InputObject

입력으로 사용할 ManagementObject 개체를 지정합니다. 이 매개 변수를 사용하면 플래그인수 매개 변수를 제외한 다른 모든 매개 변수는 무시됩니다.

형식:ManagementObject
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-Locale

WMI 개체의 기본 설정 로캘을 지정합니다. 로캘 매개 변수의 값을 기본 순서로 형식의 MS_<LCID> 배열로 지정합니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Name

호출할 메서드의 이름을 지정합니다. 이 매개 변수는 필수이며 null이거나 비어 있을 수 없습니다.

형식:String
Position:1
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Namespace

Class 매개 변수와 함께 사용할 경우 이 매개 변수는 참조된 WMI 클래스 또는 개체가 있는 WMI 리포지토리 네임스페이스를 지정합니다.

형식:String
별칭:NS
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Path

WMI 클래스의 WMI 개체 경로를 지정하거나 WMI 클래스 인스턴스의 WMI 개체 경로를 지정합니다. 지정하는 클래스 또는 인스턴스에는 Name 매개 변수에 지정된 메서드가 포함되어야 합니다.

형식:String
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-ThrottleLimit

동시에 실행할 수 있는 WMI 작업 수에 대한 제한 값을 지정합니다. 이 매개 변수는 AsJob 매개 변수와 함께 사용됩니다. 제한 제한은 세션이나 컴퓨터가 아닌 현재 명령에만 적용됩니다.

형식:Int32
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-WhatIf

cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.

형식:SwitchParameter
별칭:wi
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

None

이 cmdlet은 입력을 허용하지 않습니다.

출력

None

이 cmdlet은 어떠한 출력도 생성하지 않습니다.

참고

Windows PowerShell에는 다음 별칭이 포함됩니다.Invoke-WmiMethod

  • iwmi