如何使用Powershell在双引号中使用撇号

用户401

我正在使用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的系统。

mklement0

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章