about_Parameters_Default_Values
簡単な説明
コマンドレット パラメーターと高度な関数のカスタム既定値を設定する方法について説明します。
長い説明
$PSDefaultParameterValues
preference 変数を使用すると、任意のコマンドレットまたは高度な関数のカスタム既定値を指定できます。 コマンドレットと高度な関数では、コマンドで別の値を指定しない限り、カスタムの既定値が使用されます。
コマンドレットと高度な関数の作成者は、パラメーターの標準の既定値を設定します。 通常、標準の既定値は便利ですが、すべての環境に適していない場合があります。
この機能は、コマンドを使用するたびにほぼ同じ代替パラメーター値を指定する必要がある場合や、電子メール サーバー名やプロジェクト GUID など、特定のパラメーター値を覚えにくい場合に特に便利です。
目的の既定値が予測どおりに変化する場合は、異なる条件下でパラメーターに異なる既定値を提供するスクリプト ブロックを指定できます。
$PSDefaultParameterValues
は PowerShell 3.0 で導入されました。
構文
変数は $PSDefaultParameterValues
、キーの形式を System.Management.Automation.DefaultParameterDictionary のオブジェクト型として検証するハッシュ テーブルです。 ハッシュ テーブルには 、キーと値 のペアが含まれています。 キーの形式CmdletName:ParameterName
は です。 値は、キーに割り当てられた DefaultValue または ScriptBlock です。
ユーザー設定変数の $PSDefaultParameterValues
構文は次のとおりです。
$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False
CmdletName と ParameterName の値では、ワイルドカード文字を使用できます。
から特定の キーと値 のペア $PSDefaultParameterValues
を設定、変更、追加、または削除するには、 メソッドを使用して標準ハッシュ テーブルを編集します。 たとえば、 Add メソッドと Remove メソッドです。 これらのメソッドは、ハッシュ テーブル内の他の値を上書きしません。
既存 $PSDefaultParameterValues
のハッシュ テーブルを上書きしないもう 1 つの構文があります。 特定の キーと値 のペアを追加または変更するには、次の構文を使用します。
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
CmdletName は、コマンドレットの名前、または CmdletBinding 属性を使用する高度な関数の名前である必要があります。 を使用 $PSDefaultParameterValues
して、スクリプトまたは単純関数の既定値を指定することはできません。
DefaultValue には、オブジェクトまたはスクリプト ブロックを指定できます。 値がスクリプト ブロックの場合、PowerShell はスクリプト ブロックを評価し、その結果をパラメーター値として使用します。 指定したパラメーターがスクリプト ブロック値を受け入れる場合は、次のような 2 番目の中かっこでスクリプト ブロック値を囲みます。
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
詳細については、以下のドキュメントをご覧ください。
例
$PSDefaultParameterValuesを設定する方法
$PSDefaultParameterValues
はユーザー設定変数であるため、設定されているセッションにのみ存在します。 既定値はありません。
を設定 $PSDefaultParameterValues
するには、変数名と 1 つ以上の キーと値 のペアを入力します。 別の $PSDefaultParameterValues
コマンドを実行すると、既存のハッシュ テーブルが上書きされます。
既存のハッシュ テーブル値を上書きせずにキーと値のペアを変更する方法の例については、「$PSDefaultParameterValuesに値を追加する方法」または「$PSDefaultParameterValuesの値を変更する方法」を参照してください。
今後のセッションのために保存 $PSDefaultParameterValues
するには、PowerShell プロファイルにコマンドを追加 $PSDefaultParameterValues
します。 詳細については、「about_Profiles」を参照してください。
カスタムの既定値を設定する
キーと値のペアは、キーを Send-MailMessage:SmtpServer
Server123 のカスタム既定値に設定します。
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
複数のパラメーターの既定値を設定する
複数のパラメーターの既定値を設定するには、各 キーと値 のペアをセミコロン (;
) で区切ります。 Send-MailMessage:SmtpServer
キーと Get-WinEvent:LogName
キーは、カスタムの既定値に設定されます。
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
ワイルドカードとスイッチ パラメーターを使用する
コマンドレットとパラメーター名には、ワイルドカード文字を含めることができます。 と を使用して$True
、詳細などのスイッチ パラメーターの値を設定します。$False
共通パラメーターの Verbose パラメーターは、すべてのコマンドに対して に $True
設定されます。
$PSDefaultParameterValues = @{"*:Verbose"=$True}
既定値に配列を使用する
パラメーターで複数の値 (配列) を受け取ることができる場合は、複数の値を既定値として設定できます。 キーの Invoke-Command:ComputerName
既定値は、 Server01 と Server02 の配列値に設定されます。
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
スクリプト ブロックを使用する
スクリプト ブロックを使用すると、さまざまな条件下でパラメーターに異なる既定値を指定できます。 PowerShell はスクリプト ブロックを評価し、その結果を既定のパラメーター値として使用します。
キーにより Format-Table:AutoSize
、パラメーターを既定値の True に切り替える設定が行 われます。 ステートメントにはIf
、 が PowerShell コンソール ConsoleHost である必要がある$host.Name
条件が含まれています。
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
パラメーターがスクリプト ブロック値を受け入れる場合は、スクリプト ブロックを追加の中かっこで囲みます。 PowerShell が外部スクリプト ブロックを評価すると、結果は内部スクリプト ブロックになり、既定のパラメーター値として設定されます。
スクリプト ブロックは Invoke-Command:ScriptBlock
2 番目の中かっこで囲まれているため、 システム イベント ログ の既定値に設定されたキー。 スクリプト ブロックの結果が コマンドレットに Invoke-Command
渡されます。
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
$PSDefaultParameterValuesを取得する方法
ハッシュ テーブルの値は、PowerShell プロンプトで と $PSDefaultParameterValues
入力して表示されます。
$PSDefaultParameterValues
ハッシュ テーブルは、3 つのキーと値のペアで設定されます。
このハッシュ テーブルは、 から値 $PSDefaultParameterValues
を追加、変更、および削除する方法を説明する次の例で使用されます。
PS> $PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
"Get-*:Verbose"=$True
}
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
特定 CmdletName:ParameterName
のキーの値を取得するには、次の構文を使用します。
$PSDefaultParameterValues["CmdletName:ParameterName"]
たとえば、キーの値を取得する場合です Send-MailMessage:SmtpServer
。
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
$PSDefaultParameterValuesに値を追加する方法
に $PSDefaultParameterValues
値を追加するには、 Add メソッドを使用します。 値を追加しても、ハッシュ テーブルの既存の値には影響しません。
キーと値を区切るには、コンマ (,
) を使用します。 次の構文は、 に対して Add メソッドを使用する方法を $PSDefaultParameterValues
示しています。
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
前の例で作成したハッシュ テーブルは、新しい キーと値 のペアで更新されます。 Add メソッドは、キーをGet-Process:Name
値 PowerShell に設定します。
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
次の構文では、同じ結果が得られます。
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
変数には $PSDefaultParameterValues
、更新されたハッシュ テーブルが表示されます。 キーが Get-Process:Name
追加されました。
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
$PSDefaultParameterValuesから値を削除する方法
から $PSDefaultParameterValues
値を削除するには、ハッシュ テーブルの Remove メソッドを使用します。 値を削除しても、ハッシュ テーブルの既存の値には影響しません。
次の構文は、 で Remove メソッドを使用する方法を $PSDefaultParameterValues
示しています。
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
この例では、前の例で作成したハッシュ テーブルが更新され、 キーと値 のペアが削除されます。 Remove メソッドはキーをGet-Process:Name
削除します。
$PSDefaultParameterValues.Remove("Get-Process:Name")
変数には $PSDefaultParameterValues
、更新されたハッシュ テーブルが表示されます。 キーが Get-Process:Name
削除されました。
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
$PSDefaultParameterValuesの値を変更する方法
特定の値に対する変更は、既存のハッシュ テーブル値には影響しません。 で特定の キーと値 の $PSDefaultParameterValues
ペアを変更するには、次の構文を使用します。
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
この例では、前の例で作成したハッシュ テーブルが更新され、 キーと値 のペアが変更されます。 次のコマンドは、キーを Send-MailMessage:SmtpServer
ServerXYZ の新しい値に変更します。
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
変数には $PSDefaultParameterValues
、更新されたハッシュ テーブルが表示されます。 キーが Send-MailMessage:SmtpServer
新しい値に変更されました。
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
$PSDefaultParameterValuesを無効にして再度有効にする方法
を一時的に無効にしてから、再度有効にすることができます $PSDefaultParameterValues
。
無効にすると $PSDefaultParameterValues
、異なる既定のパラメーター値を必要とするスクリプトを実行している場合に便利です。
を無効 $PSDefaultParameterValues
にするには、値が True の の キー Disabled
を追加 します。 の $PSDefaultParameterValues
値は保持されますが、有効ではありません。
PS> $PSDefaultParameterValues.Add("Disabled", $True)
次の構文では、同じ結果が得られます。
PS> $PSDefaultParameterValues["Disabled"]=$True
変数には $PSDefaultParameterValues
、更新されたハッシュ テーブルとキーの値が Disabled
表示されます。
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
再度有効 $PSDefaultParameterValues
にするには、 Disabled キーを削除するか、 Disabled キーの 値を に $False
変更します。 の前の $PSDefaultParameterValues
値は再び有効です。
PS> $PSDefaultParameterValues.Remove("Disabled")
次の構文では、同じ結果が得られます。
PS> $PSDefaultParameterValues["Disabled"]=$False
変数には $PSDefaultParameterValues
、更新されたハッシュ テーブルが表示されます。 Remove メソッドを使用すると、Disabled
キーが出力から削除されます。
代替構文を使用して再び有効に $PSDefaultParameterValues
した場合、 Disabled
キーは False として表示されます。
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ