about_Parameters_Default_Values
簡単な説明
コマンドレット パラメーターと高度な関数のカスタム既定値を設定する方法について説明します。
長い説明
$PSDefaultParameterValues
基本設定変数を使用すると、任意のコマンドレットまたは高度な関数のカスタム既定値を指定できます。 コマンドレットと高度な関数は、コマンドで別の値を指定しない限り、カスタムの既定値を使用します。
コマンドレットと高度な関数の作成者は、パラメーターの標準の既定値を設定します。 通常、標準の既定値は便利ですが、すべての環境に適していない場合があります。
この機能は、コマンドを使用するたびにほぼ同じ代替パラメーター値を指定する必要がある場合や、電子メール サーバー名やプロジェクト 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
のハッシュ テーブルを上書きしない別の構文があります。 特定 のキーと値 のペアを追加または変更するには、次の構文を使用します。
$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
関連項目
PowerShell
PowerShell is an open source project. Select a link to provide feedback:
フィードバック
フィードバックの送信と表示