执行一个powershell文件,其中包含空格的绝对路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了执行一个powershell文件,其中包含空格的绝对路径相关的知识,希望对你有一定的参考价值。

我正在尝试在我的python脚本中执行ps1文件。

proc = subprocess.Popen(["powershell.exe", 'F:/FOLDER/FOLDER OK/myfile.ps1'])

它停在F:/FOLDER/FOLDER所以我添加了这样的额外引用:

proc = subprocess.Popen(["powershell.exe", '"F:/FOLDER/FOLDER OK/myfile.ps1"'])

现在没有错误,但它也没有执行脚本......任何想法?

答案

powershell.exe不假设参数自动成为要执行的文件;你需要识别所有参数。使用-File开关

proc = subprocess.Popen(["powershell.exe", "-File", r"F:\FOLDER\FOLDER OK\myfile.ps1"])

r中的r"..."(原始)关闭了逃逸序列处理,因此可以在不逃避的情况下使用\

请参阅Microsoft Docs上的PowerShell Command Line Help

PowerShell[.exe]
       [-Command { - | <script-block> [-args <arg-array>]
                     | <string> [<CommandParameters>] } ]
       [-EncodedCommand <Base64EncodedCommand>]
       [-ExecutionPolicy <ExecutionPolicy>]
       [-File <FilePath> [<Args>]]
       [-InputFormat {Text | XML}] 
       [-Mta]
       [-NoExit]
       [-NoLogo]
       [-NonInteractive] 
       [-NoProfile] 
       [-OutputFormat {Text | XML}] 
       [-PSConsoleFile <FilePath> | -Version <PowerShell version>]
       [-Sta]
       [-WindowStyle <style>]

以上是关于执行一个powershell文件,其中包含空格的绝对路径的主要内容,如果未能解决你的问题,请参考以下文章

使用 args 启动进程,其中包含带空格的路径

在文件路径中运行带有空格的 PowerShell 脚本

使用 Powershell 中的 Stack,如何传递包含空格的测试参数?

如何在 PowerShell 中使用 XmlReader 流式传输大/巨大的 XML 文件?

嵌入 Powershell 脚本问题

从 C# 调用 Powershell 函数