在变量值赋值 powershell 中执行 if 语句

execute if statement in variable value assignement powershell

有时我需要检查路径名是否以“\”结尾,如果有必要,添加它,代码很简单,就像这样

if ($destFolder[-1] -ne '\') {
    $destFolder += '\';
}

有没有办法评估 () 中的 if 语句,以便我可以在变量赋值中使用它?我的意思是这样的

$finalName = $destFolder + (if ($destFolder[-1] -ne '\') { '\' } ) + $fileName

鉴于 if 不是 cmdlet,我收到此错误

if : The term 'if' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

这里需要一个子表达式 ($()):

$finalName = $destFolder + $(if ($destFolder[-1] -ne '\') { '\' }) + $fileName

表达式运算符(没有$())只允许简单的statements/expressions.

为了 if 的可读性,您可以将 if 语句的整个结果分配给一个变量:

$finalName = if ($destfolder[-1] -ne '\') {
    $destfolder + '\' 
} else {
    $destfolder
}