PowerShell命令参数缺失终止符问题及参数修正请求
修正PowerShell命令参数的引号转义问题
错误原因
原命令的引号嵌套转义不符合外部调用powershell.exe的规则,导致解析器无法识别正确的引号终止符,抛出The string is missing the terminator: "错误。
推荐解决方案(更安全简洁)
直接使用-File参数调用脚本并传递参数,无需复杂转义和Invoke-Expression:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\path\to\your\script.ps1" -key "BlRznMbcP5azbwi4" -filePath "C:\path\to\your\file.txt"
保留读取脚本内容场景的修正方案
如果必须先读取脚本内容再执行,用[scriptblock]::Create()替代Invoke-Expression,避免字符串拼接的转义问题:
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "$scriptContent = Get-Content -Path 'C:\path\to\your\script.ps1' -Raw; & ([scriptblock]::Create($scriptContent)) -key 'BlRznMbcP5azbwi4' -filePath 'C:\path\to\your\file.txt'"
原命令问题分析
原命令中构造$command变量时,使用\"转义双引号的方式在外部调用powershell.exe时不生效,导致引号匹配失败。而.NET应用中能正常运行,是因为.NET的字符串转义逻辑与外部命令行的转义规则存在差异。
内容的提问来源于stack exchange,提问作者ThĂnH DaNh NgUyỄn
相关产品推荐
相关产品推荐

