我有以下代码片段:
$a = '1'
$b = ''
Switch ($a, $b) {
{[string]::IsNullOrEmpty($_)} {
Write-Host ("{0}: {1} is null." -f (Get-Date -Format s), $_)
break
}
default {
Write-Host ("{0}: {1} is not null." -f (Get-Date -Format s), $_)
}
}
此 Switch 语句标识没有任何赋值的变量。当我运行它时,我希望能够告诉用户(或日志文件)哪个变量为空,这可能吗?
生产代码有更多变量,它们是通过调用各种 API 在整个脚本中定义的。我宁愿避免一大堆 If/else 语句。
您可以传递变量 name,而不是将变量 value 传递给 switch 语句,并使用
Get-Variable -Value
获取守卫中的值。这看起来像
$a = '1'
$b = ''
$c = '3'
$d = '4'
Switch ('a', 'b', 'c', 'd') {
{[string]::IsNullOrEmpty((Get-Variable -Value $_))} {
Write-Host ("{0}: {1} is null." -f (Get-Date -Format s), $_)
continue
}
default {
Write-Host ("{0}: {1} is not null." -f (Get-Date -Format s), $_)
}
}
另外 - 如果您希望
switch
语句循环遍历所有变量,那么您需要使用 continue
而不是 break
。我在我的示例中进行了此更改。