Powershell参数$args[0]带引号

Powershell参数$args[0]带引号,powershell,Powershell,我正在运行从批处理调用的PowerShell脚本,该批处理将文件名作为第一个参数传递。 在我使用的脚本中: $file = Get-Item -LiteralPath $args[0] 但是当文件名包含引号(即:my'file.txt)时,get item会触发错误。我试图删除-LiteralPath参数,但问题是相同的。 脚本的语法是 $file=Get Item-LiteralPath$args[0] 写入主机$file 命令/暂停 如果对我的'file.txt文件运行脚本,我会得到:

我正在运行从批处理调用的PowerShell脚本,该批处理将文件名作为第一个参数传递。 在我使用的脚本中:

$file = Get-Item -LiteralPath $args[0]
但是当文件名包含引号(即:
my'file.txt
)时,
get item
会触发错误。我试图删除
-LiteralPath
参数,但问题是相同的。 脚本的语法是

$file=Get Item-LiteralPath$args[0] 写入主机$file 命令/暂停

如果对我的'file.txt文件运行脚本,我会得到:


  • C:\m\tag\testscript.ps1'C:\m\tag\my'file.txt'如何传递参数

    这项工作:

    .{gi -literalpath $args[0]} "my'file.txt"
    

    我认为,当PowerShell看到文件名cmd时,它可能已经去掉了任何环绕双引号,因此PowerShell将单个引号视为解析错误。尝试这样指定文件名

    my''file.txt
    

    假设在文件批处理中以这种方式传递路径:

    powershell.exe  C:\path\myscript.ps1 "%1%"
    
    您需要退出报价:

    powershell.exe  C:\path\myscript.ps1 \"%1%\"
    

    有助于了解错误是什么。如果在调用
    Get Item
    之前删除了该引号,则您将获得
    FileNotFound
    类型异常,这不是PowerShell的错误,可能是消耗该字符的批处理。Thnaks Matt:我收到一个错误,该错误表示TerminatorExpectedAtEndOfString。我正在就我的问题提供更多的细节