1
PowerShellセッション変数に格納されている値を使用して、パラメータの既定値を設定できますか?この例ではパラメータの既定値としてPowerShellセッション変数を使用します。
は、セッション変数は、最初の時間を移入スクリプトが実行されているが、その後の実行で使用されていません。
function Get-Authetication
{
[cmdletbinding()]
param(
[parameter(Mandatory=$true)]
[string]$Server = { if ($PSCmdlet.SessionState.PSVariable.Get('Server').Value) { $PSCmdlet.SessionState.PSVariable.Get('Server').Value } },
[parameter(Mandatory=$true)]
[pscredential]$Credential = (Get-Credential)
)
# store
$PSCmdlet.SessionState.PSVariable.Set('Server',$Server)
$PSCmdlet.SessionState.PSVariable.Set('Credential',$Credential)
# return for testing
[PsCustomObject]@{
Server=$PSCmdlet.SessionState.PSVariable.Get('Server').Value;
Username=($PSCmdlet.SessionState.PSVariable.Get('Credential').Value).Username
}
}
Get-Authetication
これは(私はその後、(予想通り)、最初は両方の変数の値を指定してするように求められ避けることを望む)。私は何を理解していないのですか? – craig
@craig私は 'Mandatory = $ true'部分を取り除くことを意味しました。更新されたコードをご覧ください。 – briantist
私がこの質問で触れたように、私は最初に(値の場合)プロンプトを表示し、その後のプロンプトは表示しないようにします。私は '$ PSDefaultParameterValues'をコードに設定しようとしましたが、それは望みの効果もありませんでした。 – craig