对 PowerShell 的 Invoke-Expression 变量中的字符进行转义

use*_*851 4 powershell

我编写了一个脚本来通过使用 7-Zip 压缩文件来备份一堆文件。问题是某些文件包含“&”和“'”(单引号)。我尝试用“`'”或“``'”替换它们(在下面的变量中),但这也不起作用。我想我不确定与Invoke-Expression一起使用时转义字符如何工作。

以下是代码行:

$exec = "& 'C:\Program Files\7-Zip\7z.exe' u -mx5 -tzip -r  '$DestFileZip' '$DestFile'"

Invoke-Expression $exec
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 7

该线程提到:

$exec = @'
& "C:\Program Files\7-Zip\7z.exe" u -mx5 -tzip -r "$DestFileZip" "$DestFile"
'@

Invoke-Expression $exec
Run Code Online (Sandbox Code Playgroud)

使用@" "@分隔符,变量和子表达式将被扩展,但引号和其他特殊字符将被视为文字。