我正在运行从批处理调用的PowerShell脚本,该脚本将文件名作为第一个参数传递。 我使用脚本内部:
$file = Get-Item -LiteralPath $args[0]
但是当文件名包含引号(I.E:my'file.txt
)时,get-item
会触发错误。我试图删除-LiteralPath
参数,但问题是一样的。
脚本的语法是
$ file = Get-Item -LiteralPath $ args [0] write-host $ file cmd / c暂停
如果我针对我的' file.txt运行脚本,我会得到:
答案 0 :(得分:0)
你如何传递参数?
这有效:
.{gi -literalpath $args[0]} "my'file.txt"
答案 1 :(得分:0)
我认为,当PowerShell看到文件名cmd已经删除任何环绕双引号时,PowerShell会将单引号视为解析错误。尝试指定文件名,如此
my''file.txt
答案 2 :(得分:0)
假设您在文件批处理中以这种方式传递路径:
powershell.exe C:\path\myscript.ps1 "%1%"
你需要逃避引用:
powershell.exe C:\path\myscript.ps1 \"%1%\"