Ria*_*ana 5 parameters powershell switch-statement
我有下面的powershell功能
Function Test
{
Param
(
[Parameter()]
[string]$Text = "default text"
)
Write-Host "Text : $($Text)"
}
Run Code Online (Sandbox Code Playgroud)
我希望能够像下面这样调用这个函数:
Test -Text:应在主机上显示默认文本
测试-文本“另一文本”:应在主机上显示提供的文本
我的问题是 powershell 中不允许第一个语法..
我有什么想法可以实现这个目标吗?我想要一种可以采用布尔值以外的值的“开关”参数。
谢谢
您遇到的问题是参数绑定。PowerShell 正在看到[string] $Text并期待一个值。您可以像这样解决这个问题:
function Test {
param(
[switch]
$Text,
[Parameter(
DontShow = $true,
ValueFromRemainingArguments = $true
)]
[string]
$value
)
if ($Text.IsPresent -and [string]::IsNullOrWhiteSpace($value)) {
Write-Host 'Text : <default text here>'
}
elseif ($Text.IsPresent) {
Write-Host "Text : $value"
}
}
Run Code Online (Sandbox Code Playgroud)
注意:这是一个 hacky 解决方案,当未传递参数时,您应该有一个默认值。