PowerShell HelpFile - about_methods
 記事記号:[me1548] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    about_methods

簡易説明
    Windows PowerShell でメソッドを使用してオブジェクトにアクションを実行する方
    法について説明します。

詳細説明
    Windows PowerShell では、"オブジェクト" と呼ばれる構造化された情報の集合体を
    使用して、データ ストア内の項目やコンピューターの状態を表します。たとえば、W
    indows PowerShell でファイルにアクセスする場合、実際のファイルを操作するので
    はなく、ファイルのプロキシとして動作する FileInfo オブジェクトを操作します。

    ほとんどのオブジェクトには、メソッドが含まれています。メソッドは、そのオブジ
    ェクトで実行できるアクションを指定する命令の集まりです。たとえば、FileInfo 
    オブジェクトには CopyTo というメソッドがあります。このメソッドを使用すると、
    そのオブジェクトで表されるファイルをコピーできます。

    特定のオブジェクトに関連付けられたメソッドとメソッド定義のリストを表示するに
    は、Get-Member コマンドレットを使用します。ただし、このコマンドレットを使用
    するには、なんらかの形式でオブジェクトが既に存在している必要があります。つま
    り、そのオブジェクトが変数によって表されているか、Get-Member コマンドへの引
    数としてコマンドを指定したときに作成されたか、またはパイプラインを介して渡さ
    れている必要があります。たとえば、$a 変数に文字列値が割り当てられている、つ
    まり、この変数が文字列オブジェクトに関連付けられているとします。この場合に、
    オブジェクトのメソッドのリストを表示するには、Windows PowerShell コマンド プ
    ロンプトで次のコマンドを入力します。

        Get-Member -inputobject $a -membertype method

    パイプライン経由で渡されたオブジェクトに関連付けられているメソッドとメソッド
    定義を表示する場合は、次の例に示すようにパイプライン内で Get-Member コマンド
    を使用します。

        Get-ChildItem c:\final.txt | Get-Member -membertype method

    メソッドの呼び出しで最も一般的に使用されるのは、オブジェクトの参照情報 (変数
    や式など) の後にメソッド名を指定する方法です。オブジェクトの参照情報とメソッ
    ドはピリオドで区切る必要があります。また、メソッド名の直後に、メソッドに渡す
    必要のあるすべての引数を丸かっこで囲んで指定する必要があります。

    メソッド シグネチャに渡す引数がない場合は、空の丸かっこを使用します。

    たとえば、次のコマンドは、GetType メソッドを使用して、$a 文字列オブジェクト
    に関連付けられたデータ型を返します。

        $a.GetType()

    GetType メソッドは任意のオブジェクトのデータ型を返し、変数は常にオブジェクト
    を表します。オブジェクトの型は、その変数に保存されているデータの型に依存しま
    す。

    変数を宣言した場合であっても、コマンドをパイプラインで連結した場合であっても、
    Windows PowerShell で実行するすべてのアクションはオブジェクトに関連付けられ
    ます。結果として、さまざまな状況でメソッドを使用できます。たとえば、次のコマ
    ンドのように、メソッドを使用してプロパティ値に対するアクションを実行できます。

        (Get-ChildItem c:\final.txt).name.ToUpper()

    この場合、ToUpper メソッドが呼び出されるオブジェクトは、name プロパティに関
    連付けられた文字列オブジェクトです (この例が正しく動作するためには、Final.tx
    t ファイルが C: ドライブのルートに存在する必要があります)。name プロパティは、
    実際には、Get-ChildItem コマンドによって返される FileInfo オブジェクトのプロ
    パティです。この例は、Windows PowerShell のオブジェクト指向の特徴を示してい
    るだけでなく、アクセス可能なオブジェクト上でのメソッドの呼び出し方法を示して
    います。

    次の例のように、Get-ChildItem コマンドの出力を変数に保存することによって、上
    の例と同じ結果を得ることができます。

        $a = (Get-ChildItem c:\final.txt).name
        $a.ToUpper()

    このコマンドでも、Get-ChildItem コマンドによって返されたファイル名を含む変数
    に関連付けられた文字列オブジェクトの ToUpper メソッドを使用しています。

    メソッドのアクションを指示するために、メソッドに引数が必要な場合があります。
    たとえば、FileInfo オブジェクトには、ファイルをある場所から別の場所に移動
    する手段を提供する MoveTo メソッドが含まれています。このメソッドには、
    ファイルの移動先の場所を指定する引数が必要です。次のコマンドで、引数の
    追加方法を示します。

        (Get-ChildItem c:\final.txt).MoveTo("c:\techdocs\final.txt")

    Get-ChildItem コマンドは、Final.txt ファイルの FileInfo オブジェクトを返して
    から、そのオブジェクトの MoveTo メソッドを使用して、アクションを開始し、ファ
    イルの新しい場所を指定します。

    メソッドに関連付けられた引数を確認するには、対応するメソッド定義を調べます。
    メソッド定義には、1 つ以上のメソッド シグネチャ (Microsoft .NET Framework で
    はオーバーロードとも呼ばれます) が含まれています。メソッド シグネチャには、
    メソッドの名前と、メソッドの呼び出し時に指定する必要のあるパラメーターが含ま
    れています (該当するパラメーターがないこともあります)。Get-Member コマンドレ
    ット表示内の各メソッド シグネチャはコンマで区切られています。たとえば、FileI
    nfo クラスの CopyTo メソッドには、次の 2 つのメソッド シグネチャが含まれてい
    ます。

        1. CopyTo(String destFileName)
        2. CopyTo(String destFileName, Boolean overwrite)

    最初のメソッド シグネチャは、ソース ファイルのコピー先のファイル名 (パスを含
    みます) を受け取ります。次の例では、最初の CopyTo メソッドを使用して、Final.
    txt を C:\Bin ディレクトリにコピーします。

        (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt")

    コピー先に同じファイルが既に存在する場合、CopyTo メソッドは失敗し、Windows P
    owerShell によって次のエラーが報告されます。

        "1" 個の引数を指定して "CopyTo" を呼び出し中に例外が発生しました: ファイ
        ル 'c:\bin\final.txt' は既に存在します。

    2 番目のメソッド シグネチャでは、最初のケースと同様にコピー先のファイル名を
    渡しますが、それに加えて、コピー先に存在する同名のファイルを上書きするかどう
    かを指定するブール値も渡します。次に例を示します。

        (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true)

    ブール値を渡すときは、Windows PowerShell によって自動的に作成された $True 変
    数を使用する必要があります。この $True 変数には、ブール値の "True" が格納さ
    れています (同様に、$False 変数にはブール値の "False" が格納されています)。

関連項目
    about_Objects
    Get-Member
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_methods
ご利用数: 1973251
感想・要望・問い合わせは こちら