about_Parameters

簡単な説明

PowerShell でコマンド パラメーターを操作する方法について説明します。

詳細な説明

コマンドレット、関数、スクリプトなどのほとんどの PowerShell コマンドは、パラメーターに依存して、ユーザーがオプションを選択したり入力を提供したりできるようにします。 パラメーターはコマンド名に従い、次の形式になります。

-<parameter_name> <parameter_value>
-<parameter_name>:<parameter_value>

パラメーターの名前の前にハイフン (-) が付きます。これは、ハイフンの後の単語がパラメーター名であることを PowerShell に通知します。 パラメーターの名前と値は、スペースまたはコロン文字で区切ることができます。 一部のパラメーターでは、パラメーター値を必要とせず、受け入れる必要はありません。 その他のパラメーターには値が必要ですが、コマンドのパラメーター名は必要ありません。

パラメーターの種類と、それらのパラメーターの要件は異なります。 コマンドのパラメーターに関する情報を検索するには、コマンドレットを Get-Help 使用します。 たとえば、コマンドレットのパラメーターに関する情報を検索するには、次のように Get-ChildItem 入力します。

Get-Help Get-ChildItem

スクリプトのパラメーターに関する情報を検索するには、スクリプト ファイルへの完全なパスを使用します。 次に例を示します。

Get-Help $HOME\Documents\Scripts\Get-Function.ps1

このコマンドレットは Get-Help 、説明、コマンド構文、パラメーターに関する情報、コマンドでのパラメーターの使用方法を示す例など、コマンドに関するさまざまな詳細を返します。

また、コマンドレットの Parameter パラメーターを使用して、特定の Get-Help パラメーターに関する情報を検索することもできます。 または、Parameter パラメーターwildカード character ( * ) 値と共に使用して、コマンドのすべてのパラメーターに関する情報を検索することもできます。 たとえば、次のコマンドは、コマンドレットのすべてのパラメーターに関する情報を Get-Member 取得します。

Get-Help Get-Member -Parameter *

既定のパラメーター値

省略可能なパラメーターには既定値があります。これは、コマンドでパラメーターが指定されていない場合に使用または想定される値です。

たとえば、多くのコマンドレットの ComputerName パラメーターの既定値は、ローカル コンピューターの名前です。 その結果、ComputerName パラメーターが指定されていない限り、ローカル コンピューター名がコマンドで使用されます。

既定のパラメーター値を見つけるには、コマンドレットのヘルプ トピックを参照してください。 パラメーターの説明には既定値を含める必要があります。

コマンドレットまたは高度な関数の任意のパラメーターにカスタムの既定値を設定することもできます。 カスタムの既定値の設定については、「about_Parameters_Default_Values」を参照してください

パラメーター属性テーブル

コマンドレットの Full、Parameterまたは Online パラメーターをGet-Help使用すると、Get-Helpパラメーターに関する詳細情報を含むパラメーター属性テーブルが表示されます。

この情報には、パラメーターを使用するために知る必要がある詳細が含まれます。 たとえば、コマンドレットのヘルプ トピック Get-ChildItem には、その Path パラメーターに関する次の詳細が含まれています。

-Path <string[]>
    Specifies a path of one or more locations. Wildcard characters are
    permitted. The default location is the current directory (.).

Required?                    false
Position?                    0
Default value                Current directory
Accept pipeline input?       true (ByValue, ByPropertyName)
Accept wildcard characters?  true

パラメーター情報には、パラメーター構文、パラメーターの説明、およびパラメーター属性が含まれます。 次のセクションでは、パラメーター属性について説明します。

パラメーター必須

この設定は、パラメーターが必須かどうか、つまり、このコマンドレットを使用するすべてのコマンドにこのパラメーターを含める必要があるかどうかを示します。 値が True で、パラメーターがコマンドに指定されていない場合、PowerShell によってパラメーターの値の入力が求められます。

パラメーターの位置

設定が Position 負以外の整数に設定されている場合、パラメーター名は必要ありません。 この型のパラメーターは位置指定パラメーターと呼ばれ、数値は他の位置パラメーターに対してパラメーターを表示する必要がある位置を示します。 名前付きパラメーターは、コマンドレット名の後の任意の位置に一覧表示できます。 位置指定パラメーターのパラメーター名を含める場合は、コマンドレット名の後の任意の位置にパラメーターを一覧表示できます。

たとえば、コマンドレットには Get-ChildItem Path パラメーターと Exclude パラメーターがあります。 Position Path設定は 0 です。これは位置指定パラメーターであることを意味します。 [Position除外] の設定に名前が付けられます

つまり、Path はパラメーター名を必要としませんが、そのパラメーター値はコマンドの最初のパラメーター値または名前のないパラメーター値である必要があります。 ただし、Exclude パラメーターは名前付きパラメーターであるため、コマンド内の任意の位置に配置できます。

これら 2 つのパラメーターの Position 設定の結果として、次のいずれかのコマンドを使用できます。

Get-ChildItem -Path c:\techdocs -Exclude *.ppt
Get-ChildItem c:\techdocs -Exclude *.ppt
Get-ChildItem -Exclude *.ppt -Path c:\techdocs
Get-ChildItem -Exclude *.ppt c:\techdocs

パラメーター名を含めずに別の位置指定パラメーターを含める場合、そのパラメーターは設定で指定された順序で Position 配置する必要があります。

パラメーターの型

この設定では、パラメーター値の Microsoft .NET Framework 型を指定します。 たとえば、型が Int32 の場合、パラメーター値は整数である必要があります。 型が文字列の場合、パラメーター値は文字列である必要があります。 文字列にスペースが含まれている場合は、値を引用符で囲むか、スペースの前にエスケープ文字 (`) を付ける必要があります。

Default Value

この設定では、他の値が指定されていない場合にパラメーターが想定する値を指定します。 たとえば、Path パラメーターの既定値は、多くの場合、現在のディレクトリです。 必須パラメーターに既定値が設定されることはありません。 多くの省略可能なパラメーターでは、パラメーターが使用されていない場合は効果がないため、既定値はありません。

複数の値を受け入れる

この設定は、パラメーターが複数のパラメーター値を受け入れるかどうかを示します。 パラメーターが複数の値を受け入れる場合は、コマンドのパラメーターの値としてコンマ区切りリストを入力するか、変数にコンマ区切りリスト (配列) を保存してから、パラメーター値として変数を指定できます。

たとえば、コマンドレットの Name パラメーターは Get-Service 複数の値を受け入れます。 次のコマンドはどちらも有効です。

Get-Service -Name winrm, netlogon
$s = "winrm", "netlogon"
Get-Service -Name $s

パイプライン入力を受け入れる

この設定は、パイプライン演算子 (|) を使用してパラメーターに値を送信できるかどうかを示します。

Value                    Description
-----                    -----------
False                    Indicates that you cannot pipe a value to the
                         parameter.

True (by Value)          Indicates that you can pipe any value to the
                         parameter, just so the value has the .NET
                         Framework type specified for the parameter or the
                         value can be converted to the specified .NET
                         Framework type.

パラメーターが "True (by Value)" の場合、PowerShell は、他のメソッドがコマンドを解釈する前に、パイプされた値をそのパラメーターに関連付けようとします。

True (by Property Name)  Indicates that you can pipe a value to the
                         parameter, but the .NET Framework type of the
                         parameter must include a property with the same
                         name as the parameter.

たとえば、値に Name というプロパティがある場合にのみ、値を Name パラメーターにパイプできます。

Note

パイプライン入力 () または (by Valueby PropertyName) を受け入れる型指定されたパラメーターを使用すると、パラメーターで遅延バインド スクリプト ブロックを使用できます。

遅延バインド スクリプト ブロックは、ParameterBinding 中に自動的に実行されます。 結果はパラメーターにバインドされます。 遅延バインディングは、型ScriptBlockとして定義されたパラメーターに対しては機能しません。またはSystem.Object、スクリプト ブロックは呼び出されずに渡されます。

遅延バインド スクリプト ブロックについては、about_Script_Blocks.md を参照してください。

ワイルド文字カード文字を受け入れます

この設定は、パラメーター値をターゲット コンテナー内の複数の既存の項目と照合できるように、パラメーターの値にワイルドカード文字を含めることができるかどうかを示します。

共通パラメーター

一般的なパラメーターは、任意のコマンドレットで使用できるパラメーターです。 共通パラメーターの詳細については、about_CommonParametersを参照してください

関連項目