2016-11-02 3 views
0

저는 PowerShell 신생집입니다. PowerShell 명령을 실행하면 개체 스트림을 출력으로 보내는 것으로 알고 있습니다. 예를 들어PowerShell 명령 메타 데이터

:

PS C:\Users\JGodse\scripts> Get-WmiObject -Class win32_Product 


IdentifyingNumber : {90150000-008C-0000-0000-0000000FF1CE} 
Name    : Office 15 Click-to-Run Extensibility Component 
Vendor   : Microsoft Corporation 
Version   : 15.0.4867.1003 
Caption   : Office 15 Click-to-Run Extensibility Component 

IdentifyingNumber : {90150000-008C-0409-0000-0000000FF1CE} 
Name    : Office 15 Click-to-Run Localization Component 
Vendor   : Microsoft Corporation 
Version   : 15.0.4867.1003 
Caption   : Office 15 Click-to-Run Localization Component 

IdentifyingNumber : {90150000-008F-0000-1000-0000000FF1CE} 
Name    : Office 15 Click-to-Run Licensing Component 
Vendor   : Microsoft Corporation 
Version   : 15.0.4867.1003 
Caption   : Office 15 Click-to-Run Licensing Component 


....... (and many more such objects)...... 

개체는 속성 (따라 IdentifyingNumber, 이름, 공급 업체, 버전, 캡션)을 가지고있다. 명령을 실행하고 시각적으로 출력을 구문 분석하지 않고 명령에 의해 반환되는 객체의 속성 이름의 목록을 얻을 수있는 방법이 있나요

PS C:\Users\JGodse\scripts> Get-WmiObject -Class win32_Product | select name 

name 
---- 
Office 15 Click-to-Run Extensibility Component 
Office 15 Click-to-Run Localization Component 
Office 15 Click-to-Run Licensing Component 
Microsoft .NET Framework 4.5.1 Multi-Targeting Pack 

이에서 나는 파이프 이런 일에 객체는 이름을 선택 할 수 있습니다 ? 아마도 신화 가져 오기 - 속성과 같은 명령 :

PS C:\> Get-Attributes Get-WmiObject 

attributes 
---------- 
IdentifyingNumber, Name, Vendor, Version, Caption 
+0

당신이 찾고있는 ['은 Get-Member'을 (https://technet.microsoft.com/en-us/library/hh849928.aspx). –

+0

Get-WmiObject -Class win32_Product | 선택 - 첫 번째 1 | Get-Member | ? {$ _. MemberType -eq 'Property'} –

답변

1

당신이 찾고있는 cmdlet은 그러나 그것은 당신에게 객체에서 사용할 수있는 속성이 아닌 cmdlet에 발생할 수있는 것들을 얻을 것이다 얻을 - 회원입니다. 이는 어떤 인수를 제공 하느냐에 따라 결과가 다른 객체를 다시 가져 오기 때문입니다. (예를 들어, get-wmiobject는 다른 클래스에 대해 다른 객체를 반환합니다). 당신은 아래와 같이 사용할 것입니다. 당신에게 컴퓨터를 나타내는 객체에 사용할 수있는 모든 속성과 메서드의 목록을 얻을 것이다

Get-wmiobject win32_operatingsystem | Get-member

는 WMI 클래스의 Win32_OperatingSystem. 아래 링크는 추가 정보 및 예제를 제공합니다.

https://technet.microsoft.com/en-us/library/ee176854.aspx

+0

Ruby에서 필자는 (myObject.methods - Object.methods)를 사용하여 해당 메서드에서 사용할 수있는 관련 메서드를 생성했습니다. 당신은 myObject.methods와 동등한 효과를줍니다. 대체로 관련성이없는 방법을 제거 할 수있는 방법이 있습니까? –

+0

Ruby를 사용한 이후로 잠시 동안 알고 있었지만 Object.methods는 모든 객체에서 사용할 수있는 일반 메소드 모음을 나타냅니다. 그렇다면 정말로 PowerShell/.NET에 아날로그가 없다면 system.object에 사용할 수있는 메서드는 매우 제한적이므로 (그 중 4 개만) 필터링하지 않아도됩니다. 당신은'| where-object {$ _. 정의 --notlike "* system.object *"}'는 system.object에서 상속받은 메소드를 제거하지만 결과의 4 가지 메소드 만 트리밍합니다. –

+1

'Get-Member -Type Method'이면 충분합니다. –