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:SmtpServerGet-WinEvent:LogName キーは、カスタムの既定値に設定されます。

$PSDefaultParameterValues = @{
  "Send-MailMessage:SmtpServer"="Server123";
  "Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}

ワイルドカードとスイッチ パラメーターを使用する

コマンドレット名とパラメーター名には、ワイルドカード文字を含めることができます。 詳細など、スイッチ パラメーターの値を設定する場合に使用$Trueします$False。 共通パラメーターの Verbose パラメーターは、すべてのコマンドに対して $True 設定されます。

$PSDefaultParameterValues = @{"*:Verbose"=$True}

既定値に配列を使用する

パラメーターが複数の値 (配列) を受け取ることができる場合は、複数の値を既定値として設定できます。 キーのInvoke-Command:ComputerName既定値は、Server01Server02配列値に設定されます。

$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:NamePowerShell に設定します

$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

関連項目