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