【问题标题】:Is there a way to run powershell code in python有没有办法在 python 中运行 powershell 代码
【发布时间】:2016-06-29 03:09:23
【问题描述】:

有没有办法在 python 中运行 powershell 代码?我一直在寻找,我发现的只是如何在 python 中运行一个单独的 PS 脚本文件,但没有关于运行 PS 代码。

示例:假设我想从 Python 脚本\程序中运行此命令...

Start-Process -filepath "Path\Filename.exe" -wait

我知道在该示例中我可以使用 Python 运行该文件。我正在考虑编写一个 Python 应用程序,但它会在幕后使用一些 powershell 代码来实际完成它需要做的事情。就我的应用创意而言,它将连接到 Office 365 并操纵用户\帐户信息(添加、删除等)以及您在 365 管理站点上无法执行的操作。我已经有一个 PS 脚本来完成大部分工作,但我正在研究一个 GUI 界面,python 似乎是 GUI 的更好选择(就我所见和玩过的而言)。

如果这是不可能的,或者如果它比它的价值更痛苦,我会很感激一些建议。我应该研究 C# 还是类似的东西? Python 似乎更容易理解。

谢谢。

【问题讨论】:

  • 所以我从下面的答案中看到的普遍共识是,它要么不可能,要么不切实际。这是正确的吗?

标签: python powershell


【解决方案1】:

如果你想在 exe 中嵌入 PowerShell 脚本,vc++ 可能是要走的路。

您可以使用<stdlib>中的system函数在cmd中运行命令

代码如下:

#include "stdafx.h"
#include <stdlib.h>
using namespace std;

int main()
{
    system("@powershell -NoProfile -ExecutionPolicy Bypass <your PSScript path>");
    return 0;
}

但此代码将要求您在本地机器上拥有 ps1 文件。


我的建议是从远程运行。在 GitHub 或 gist 上托管您的 ps1 文件

#include "stdafx.h"
#include <stdlib.h>
using namespace std;

int main()
{
    system("@powershell -NoProfile -ExecutionPolicy Bypass -command (new-object net.webclient).downloadstring('<url to your script>")');
    return 0;
}

【讨论】:

  • 谢谢,我会调查的!
【解决方案2】:

只需启动 powershell.exe(未经测试)

os.system("powershell.exe", "script.ps1")

您可能需要额外的参数来指定路径和执行策略。

【讨论】:

  • 谢谢,埃斯本。但是,看起来这只是调用了一个单独的 powershell 脚本。我希望将 powershell 代码嵌入到 python 脚本本身中,然后将其转换\打包成一个 EXE 文件,使其更容易共享。
【解决方案3】:

你不能只写一个powershell脚本文件然后调用它吗? (未经测试)

f = open("script.ps1")
f.write(...) #Script you want to run
f.close()
os.system("powershell.exe", "script.ps1")

【讨论】:

  • 是的,但不是我想做的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2023-04-09
  • 2020-09-18
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多