我在 PowerShell
中尝试执行一个命令时收到此错误:
我正在尝试执行
此命令:
powershell.exe Start-Process -FilePath "C:\Windows\System32\attrib +h +s "%CD%"" -Verb runAs
有人可以帮我弄清楚为什么会发生这种情况以及如何解决吗?
最佳答案
Can someone please help me figure out why this is happening?
Start-Process
cmdlet 的 -FilePath
参数需要可执行文件本身的名称或路径,而不是 >整个命令行。
传递给通过-FilePath
指定的可执行文件的参数必须单独作为数组传递,通过 -ArgumentList
(-Args
) 参数。
从 cmd.exe
(批处理文件)调用时,在单个 中传递要由 PowerShell 评估的整个命令行在概念上更清晰“
-封闭的参数:
powershell.exe -Command "Start-Process -Verb RunAs -FilePath attrib.exe -Args +h, +s, '\"%CD%\"'"
请注意,需要双重转义 %CD%
值,首先为了 PowerShell 将其括在 '
中,然后再将其括起来其中的 \"
:外部 '
确保 PowerShell 本身将该值识别为单个参数,嵌入的 \"
引号确保最终目标程序 attrib.exe
也将该值视为单个参数。
这种双重转义的需要是不幸的,并且不应该是必要的 - 它在this GitHub issue中进行了讨论。 .
关于powershell - 如何使用需要从命令提示符/批处理文件引用的参数来调用 PowerShell Start-Process 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50900785/