我正在使用Powershell。我的问题是我的文件路径(在本地计算机上不存在)中带有撇号。Powershell将此视为单引号,因此给了我以下错误:字符串缺少终止符:'。我以为我可以使用反引号将单引号转义,但这给了我同样的错误。
当我执行第一行代码时,不会发生该错误,并且我什至不需要反引号。我什至可以看到变量的内容与我使用的文件路径匹配。只有当我正在执行invoke-expression部分时,它才会给我错误。
我正在使用https://docs.microsoft.com/zh-CN/powershell/module/microsoft.powershell.utility/invoke-expression?view=powershell-7,所以我不认为代码的第二行是问题。
我的代码如下:
$code = "\\example\example\John_Doe`'s_Folder\example.ps1"
invoke-expression -command $code
我也尝试将整个文件路径包装在双引号和单引号中,但是我的程序也不喜欢这样。我无法删除撇号,因为我们有100多个直接指向John_Doe's_Folder的系统。
Invoke-Expression
通常应该避免; 绝对不要用它来调用脚本或外部程序。
在您的情况下,只需使用&
,调用操作符即可通过存储在变量中的路径来调用脚本$code
(有关背景信息,请参见此答案),在这种情况下,嵌入式'
根本不需要转义:
$code = "\\example\example\John_Doe's_Folder\example.ps1"
& $code
至于你尝试了什么:
"\\example\example\John_Doe`'s_Folder\example.ps1"
变成以下逐字字符串内容:
\\example\example\John_Doe's_Folder\example.ps1
也就是说,`
被删除由的PowerShell的解析"..."
字符串字面本身,里面的其中`
充当转义字符; 由于转义序列`'
没有特殊含义,因此`
只需删除即可。
为了`
“生存”,您需要转义`
字符。本身,您可以使用``
:
"\\example\example\John_Doe``'s_Folder\example.ps1"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句