当脚本位于包含单引号的文件夹中时,PowerShell 类中是否存在错误?

当脚本位于包含单引号的文件夹中时,PowerShell 类中是否存在错误?

我客户的 PowerShell 脚本无法为新用户工作,因为新用户的名字中恰好有一个单引号 - 这意味着他们的个人资料路径名为“C:\Users\Liam'OReilly”。这似乎是 PowerShell 类系统中的一个错误。

创建一个名为“C:\Temp'Test”的文件夹并添加Test.ps1:

Write-Host "Test"
Class MyClass {}

执行此脚本,你会得到以下错误:

给定的程序集名称或代码库无效。(来自 HRESULT 的异常:0x80131047)位于行:1 字符:1 + & 'C:\Temp''Test\Test..ps1' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], FileLoadException + FullyQualifiedErrorId : System.IO.FileLoadException

将文件夹重命名为 C:\Test,它运行时不会出现错误。

有人有解决方法吗?报告此错误的最佳方法是什么?

我现在的解决方法(因为用户从周一开始)是从 Office 365 中的显示名称中删除单引号字符,但这并不理想。

答案1

StackOverflow 帖子 如何访问 Powershell 中包含特殊字符的文件路径? 这个问题有三个解决方案:

  1. 使用新的转义符%来停止对命令行的正常解析,直到行尾不匹配引号、不在分号处停止并且不扩展 PowerShell 变量。使用cmd.exe语法(例如%TEMP%)时,环境变量仍会扩展。

  2. 将文件名写入临时文件并从那里使用它。

  3. 使用反引号 (`) 符号来转义特殊字符。例如:

    $dir = "C:\folder`$name\dir"
    

相关内容