gpt4 book ai didi

powershell - 如何使用需要从命令提示符/批处理文件中引用的参数来调用PowerShell Start-Process命令?

转载 作者:行者123 更新时间:2023-12-02 23:37:48 24 4
gpt4 key购买 nike

尝试在PowerShell中执行exec命令时出现此错误:



我正在尝试exec这个命令:

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?


-FilePath cmdlet的 Start-Process参数本身需要可执行文件的名称或路径,而不是整个命令行。

传递给 -FilePath指定的可执行文件的参数必须通过 -ArgumentList( -Args)参数作为数组分别传递。

cmd.exe(批处理文件)进行调用时,从概念上讲,更干净的方法是在单个 " -enclosed参数中传递要由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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com