我在 powershell arg 设计方面遇到问题,如下 powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& { $scriptContent = Get-Content -Path 'C:\path o\your\script.ps1' -Raw; $command = "`$scriptContent -key 'BlRznMbcP5azbwi4' -filePath 'C:\path o\your ile.txt'"; 调用表达式 $command }" 我遇到了一些错误,比如 该字符串缺少终止符:“.
因为使用 powershell 在屏幕上输入它们,所以我不喜欢那样使用。但他们按照命令工作 $scriptContent = Get-Content -Path '{0}' -Raw;调用表达式“& {{ $scriptContent }} -key 'BlRznMbcP5azbwi4' -filePath '{1}'” 在我的 .net 应用程序上执行。
我需要有人纠正我的论点
您的命令行设计为从外部 PowerShell 执行,例如从
cmd.exe
或通过直接、无 shell 执行,例如通过 System.Diagnostics.Process
.NET API。
"
"..."
参数中的 -Command
字符需要转义为 \"
,如您的命令中所示。 PowerShell 中,您需要 additional 转义才能满足 PowerShell 的字符串文字语法: \`"
- 忽略这样做会导致您看到错误消息。
转义应该不是必要的,而且实际上不再存在于PowerShell(Core)7(其CLI是pwsh.exe
)的v7.3+中 - 请参阅
这个答案了解背景信息。
cmd.exe
/无 shell 命令行进行额外的语法修改,所以最好将命令传递为
脚本块来执行,您只需要满足PowerShell的语法;例如,
powershell.exe { "Nat
“国王" Cole" }
但请注意,此技术仅适用于 PowerShell。
cmd.exe
/ 无 shell 调用和 PowerShell 内部运行的命令行:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\path\to\your\script.ps1" -key "BlRznMbcP5azbwi4" -filePath "C:\path\to\your\file.txt"
请注意使用 -File
参数来传递目标脚本路径,后跟传递参数,以及所有参数如何包含在 "..."
中(
'...'
不适用于
-File
)。