「WindowsPowershellスタートガイド」より
処理オブジェクト
最初は気付かないかもしれませんが、Windows PowerShellで作業するときは、.NETオブジェクトを使用しています。あなたの経験が増えるにつれて、オブジェクトを扱う能力はより明白になり、あなたはオブジェクトを使用していて、オブジェクトでさえ考えていることに気づきます。
技術的に言えば、.NETオブジェクトは、データとそのデータに関連付けられた操作を含む.NETクラスのインスタンスです。ただし、オブジェクトは、プロパティ(プロパティと同様)およびメソッド(オブジェクトに対して実行できる操作)を持つデータエンティティと考えることができます。
たとえば、Windows PowerShellでサービスを取得すると、実際にはそのサービスを表すオブジェクトが取得されます。サービスに関する情報を表示すると、そのサービスオブジェクトのプロパティが表示されます。さらに、サービスが開始されるとき(つまり、サービスのStatusプロパティが「started」に変更されるとき)、サービスオブジェクトのメソッドが使用されます。
同じタイプのすべてのオブジェクトは同じプロパティとメソッドを持っていますが、オブジェクトの各インスタンスは異なるプロパティ値を持つ場合があります。たとえば、各サービスオブジェクトにはNameプロパティとStatusプロパティがあります。ただし、各サービスは異なる名前と異なるステータスを持つことができます。
準備ができたら、オブジェクトを理解するのは簡単です。コマンドレットが取得しているオブジェクトのタイプを確認するには、パイプライン演算子(|)を使用して、「get」コマンドの結果をGet-Memberコマンドに送信します。たとえば、次のコマンドは、Get-Serviceコマンドによって取得されたオブジェクトをGet-Memberに送信します。
Get-Service | Get-Member
Get-Memberは、オブジェクトのタイプ名、そのプロパティとメソッドのリストなど、サービスオブジェクトに関する情報を表示します。
TypeName:System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDependedOn
Disposed Event System.EventHandler Disposed(System.Object, Sys...
Close Method void Close()
Continue Method void Continue()
オブジェクトクラスに関する情報を取得するには、MSDNで
System.ServiceProcess.ServiceControllerなどのタイプ名をコピーして貼り付けます。クラスを見つけたら、MSDNサブトピックを読んで、クラスに基づくオブジェクト(Windows PowerShellのオブジェクトなど)のプロパティとメソッドについて学習できます。
特定のオブジェクトのすべてのプロパティの値を見つけるには、パイプライン演算子(|)を使用して、「get」コマンドの結果をFormat-ListまたはFormat-Tableコマンドに送信します。formatコマンドレットのPropertyパラメーターをすべての値(*)で使用します。
たとえば、システム上のWinRMサービスのすべての属性を検索するには、次のように入力します。
Get-Service WinRM | Format-List -Property *
結果の例を以下に示します。
Name : WinRM
RequiredServices : {RPCSS, HTTP}
CanPauseAndContinue : False
CanShutdown : False
CanStop : False
DisplayName : Windows Remote Management (WS-Management)
DependentServices : {}
MachineName : .
ServiceName : WinRM
ServicesDependedOn : {RPCSS, HTTP}
ServiceHandle :
Status : Stopped
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Automatic
Site :
Container :
Windows PowerShellを初めて学習するときは、オブジェクトについて何も知る必要はありませんが、概念を知っておく必要があります。間もなくオブジェクトを最大限に活用できるようになります。