我正在尝试做类似以下的事情......
New-Variable -Name "state_$name" -Value "True"
if ("state_$name" -eq "True") {
Write-Host "Pass"
} else {
Write-Host "Fail"
}
我尝试了多种不同的方法,但它并没有完全按照我希望的方式工作。我需要编写 if 语句来考虑动态变量,因为这些值会在内部发生变化foreach
loop.
我在上面提供了一个简单的例子来证明概念。
Replace
if ("state_$name" -eq "True") {
with:
if ((Get-Variable -ValueOnly "state_$name") -eq "True") {
也就是说,如果你的变量名只知道间接地,通过可扩展字符串,您不能直接引用它(就像通常使用$
印记)-你需要通过获取其值Get-Variable
,如上图所示。
然而,作为约翰·贝文 https://stackoverflow.com/users/361842/johnlbevan指出,你可以存储变量object在另一个(非动态)变量中,以便您可以通过以下方式获取和设置动态变量的值.Value
财产.
Adding -PassThru
to the New-Variable
call直接返回变量对象,不需要后续Get-Variable
call:
$dynamicVarObject = New-Variable -Name "state_$name" -Value "True" -PassThru
if ($dynamicVarObject.Value -eq "True") {
"Pass"
} else {
"Fail"
}
也就是说,通常有更好的替代方法来以这种方式创建变量,例如使用哈希表:
$hash = @{}
$hash.$name = 'True'
if ($hash.$name -eq 'True') { 'Pass' } else { 'Fail' }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)