次の方法で共有


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

CmdletNameParameterName の値では、ワイルドカード文字を使用できます。

から特定の キーと値 のペア $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:SmtpServerServer123 のカスタム既定値に設定します。

$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 既定値は、 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: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:SmtpServerServerXYZ の新しい値に変更します。

$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

こちらもご覧ください