【发布时间】:2022-07-19 00:03:55
【问题描述】:
您好 Powershell 专家, 我有一个关于我的 powershell 问题的简短问题。
我尝试在 if 语句中传递参数变量来处理这些变量。我的目标是拥有一个完全动态的 if 语句。 让我告诉你情况:
function Get-Test {
param(
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]$varA,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]$varB,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]$op
)
$statement = "$varA $op $varB"
if ($statement) {
Write-Host "One"
} else {
Write-Host "Two"
}
}
Get-Test -varA "Test1" -varB "Test1" -op "-ne"
说明: 无论我输入什么作为参数 $op 它总是会变成“一”
所以我的问题是:是否有可能使用参数/变量在我的 if 语句中使用某种动态运算符?
【问题讨论】:
-
$statement = IEX "'$varA' $op '$varB'"应该可以,但如果你解释你的最终目标是什么,很可能有更好的方法来解决这个问题 -
@SantiagoSquarzon - 我希望你已经知道这一点,但是如果
$op = "; Format-Volume -DriveLetter C ;"为 OP 的利益,它将给出一些非常意想不到的结果:-)。 -
@mclayton 我和你在一起你知道但有时人们不想听:)
-
非常感谢@SantiagoSquarzon! Invoke-Expression 的想法很棒。在我的情况下就像一个魅力。
标签: powershell if-statement variables parameters operators