2016-11-02 1 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 

のコマンドを実行し、視覚的に出力を解析することなく、コマンドによって返されたオブジェクトの属性名のリストを取得する方法はあります?おそらく、神話のGet-属性のようなコマンドは:

PS C:\> Get-Attributes Get-WmiObject 

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

あなたは[ 'ゲット-Member'](https://technet.microsoft.com/en-us/library/hh849928.aspx)を探しています。 –

+0

Get-WmiObject -Class win32_Product |選択 - 第1の| Get-Member | ?{$ _。MemberType -eq 'Property'} –

答えて

1

あなたが探しているコマンドレットは、しかし、それはあなたがオブジェクト上で利用可能なプロパティではなく、コマンドレットから生じる可能性のものを取得するには、Get-メンバーです。これは、あなたが提供する引数によって異なる結果を持つオブジェクトが返されるためです。 (たとえば、get-wmiobjectは異なるクラスの異なるオブジェクトを返します)。あなたは以下のようなものを使用します。あなたのWMIクラスのWin32_OperatingSystemコンピュータを表すオブジェクトで使用可能なすべてのプロパティとメソッドの一覧を取得します

Get-wmiobject win32_operatingsystem | Get-member

。下のリンクには、追加情報と例があります。

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つしかありません)ので、フィルタリングする必要はありません。あなたは '|どこのオブジェクト($ _。定義--notlike "* system.object *"} 'はsystem.objectから継承するメソッドを削除しますが、それはあなたの結果から4つのメソッドを削除するだけです。 –

+1

'Get-Member -Type Method'で十分です。 –