当未向脚本提供参数时,我希望在Write-Error消息中以字符串的形式包含参数/变量名:
$RequiredArgs = @($Arg1, $Arg2, $Arg3, $Arg4)
foreach ($Arg in $RequiredArgs) {
if (!($Arg)) {
Write-Error "Argument: $Arg is required."
throw
}
}这当前输出的是Argument: is required.。我尝试引用变量名:
Write-Error "Argument: "$Arg" is required."但下面显示了错误:Write-Error: A positional parameter cannot be found that accepts argument ' is required.
有没有一种方法可以输出变量名,即使没有设置参数?
发布于 2018-02-28 20:46:46
是,使用single quotes:
Write-Error 'Argument: "$Arg" is required.'考虑使用强制参数属性来指定脚本中所需的参数:
Param
(
[Parameter(Mandatory=$true)]
$Arg1
)
Write-Host "Hello $Arg1"现在,如果您尝试执行脚本并省略参数,系统将提示您输入这些参数:

发布于 2018-02-28 20:57:04
除了马丁已经提到的,你可以做到这一点-
$RequiredArgs = @($Arg1, $Arg2, $Arg3, $Arg4)
foreach ($Arg in $RequiredArgs) {
if (!($Arg)) {
Write-Error "Argument: $($Arg) is required."
throw
}
}$($Arg)语法有助于计算$Arg中的表达式。有关详细信息,请参阅this SO链接。
https://stackoverflow.com/questions/49029911
复制相似问题