【问题标题】:Using Python script to run a full independent powershell script使用 Python 脚本运行完全独立的 powershell 脚本
【发布时间】:2019-01-19 04:40:05
【问题描述】:

我是一个菜鸟,有上进心的程序员,并且一直在研究使用我的 Python 脚本运行 Powershell 文件的方法,该文件将复制和映像并将图像放入 Excel 中。

我使用了subprocesscallPopen 命令来尝试从 Python 脚本调用和运行 Powershell 程序,但没有一个有效。

我发现的一些示例只调用了 Powershell 脚本的不同功能,但是当我尝试这些设置时,它对我的​​程序不起作用。我的 Powershell 的所有设置都已建立,因此它可以在我的 PC 上运行,并且在独立于 Python 启动时也可以很好地运行。

我想问的是,例如,我是否有一个My_program.py 文件和一个Moving_image.ps1 文件。我想使用我的 .py 文件来运行/执行我的 .ps1 文件,而这两个程序都位于同一路径 (C:\Users\Scripts)。

我的 Python 文件中需要哪一行代码、导入和其他程序设置才能简单地从我的 Python 脚本运行独立的 .ps1 文件?

我不需要 Powershell 脚本向 Python 脚本返回任何内容。我想让它简单地运行复制并粘贴我发送的命令。

谢谢。任何类型的指导都会导致该程序真正正常运行,我们将不胜感激!

【问题讨论】:

标签: python powershell


【解决方案1】:

这对我有用(在 linux 上测试):

python 脚本 test.py

from subprocess import call
call(["/opt/microsoft/powershell/6.0.4/pwsh", "./test.ps1"])

powershell脚本test.ps1

Import-Module '/home/veefu/pwshmodules/testMod'
Write-Output "Hello from test.ps1"
Get-HelloWorld

testMod.psm1 模块,存储在 /home/veefu/pwshmodules/testMod

function Get-HelloWorld {
    Write-Output "Hello World (from Module)"
}

运行python脚本时的结果:

Hello from test.ps1
Hello World (from Module)

在 Windows 上,您可能必须提供完整路径 C:\Windows\system32\MicrosoftPowerShell\1.0\powershell.exe,并且您可能必须在第二个参数中将 /file .\yourOtherScript.ps1 传递给 call

【讨论】:

  • 你能用subprocess.run吗?
  • 我已经尝试过 subprocess.run 和 subprocess.call 命令,但两者似乎都没有完全正常工作。一方面,我认为它在 python 端没有收到任何错误,因为 shell 返回时没有错误。因此,在运行脚本后,python 脚本会打开 powershell 窗口,但随后会出现一些红色错误并很快关闭
  • 程序在基于 Windows 的机器上运行,我创建了您在示例中列出的两个相同的程序,即 test.py 和 test.ps1。
  • subprocess.Popen([r"C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", "/file ./test.ps1"])
  • 这在 python shell 运行后没有显示上述任何错误,所以我假设这个运行正常,但是当它打开 powershell 窗口并在运行测试的过程中.ps1 脚本,它说大约 4 行错误并且关闭得非常快。
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 2022-06-14
  • 2020-08-12
  • 2020-03-05
  • 1970-01-01
相关资源
最近更新 更多