当前位置: 首页 > 面试题库 >

从Python调用PowerShell脚本

寿嘉悦
2023-03-14
问题内容

我正在尝试从python这样启动PowerShell脚本:

psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
                             './buildxml.ps1',
                             arg1, arg2, arg3], cwd=os.getcwd())
result = psxmlgen.wait()

问题是我得到以下错误:

无法加载文件C:\ Users \ sztomi \ workspace \ myproject \
buildxml.ps1,因为在此html" target="_blank">系统上禁用了脚本的执行。请参阅“获取有关about_signing的帮助”以了解更多详细信息。

尽管事实上我很早以前确实通过键入Set-ExecutionPolicy Unrestriced管理员运行的PS终端来启用Powershell中的运行脚本(然后再做一次,只是为了确保这一事实)。powershell可执行文件与“开始”菜单中的快捷方式所指向的可执行文件相同。无论我是否以管理员身份运行PowerShell,都可以Get- ExecutionPolicy正确报告Unrestricted

如何从Python正确执行PS脚本?


问题答案:

首先,Set-ExecutionPolicy Unrestriced基于每个用户和每个位数(32位与64位不同)。

其次,您可以从命令行覆盖执行策略。

psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
                             '-ExecutionPolicy',
                             'Unrestricted',
                             './buildxml.ps1',
                             arg1, arg2, arg3], cwd=os.getcwd())
result = psxmlgen.wait()

显然,您可以使用以下路径从32位PowerShell访问64位PowerShell(感谢@eryksun):

powershell64 = os.path.join(os.environ['SystemRoot'], 
    'SysNative' if platform.architecture()[0] == '32bit' else 'System32',
    'WindowsPowerShell', 'v1.0', 'powershell.exe')


 类似资料:
  • 问题内容: 我有要从Python脚本调用的Perl脚本。我一直在寻找,并没有成功。我基本上是试图调用向Perl脚本发送1变量的方法,但是不需要Perl脚本的输出,因为它是一个自包含程序。 到目前为止,我想出的是: 只有刚刚开始的Python编程,所以我确定以上内容完全是胡说八道。任何帮助将非常感激。 问题答案: 如果您只想打开通往perl解释器的管道,那么您的方向正确。我认为您唯一缺少的是perl

  • 问题内容: 我需要从Python脚本运行PowerShell函数。.ps1和.py文件当前都位于同一目录中。我要调用的函数在PowerShell脚本中。我看到的大多数答案都是关于从Python运行整个PowerShell脚本的。在这种情况下,我试图在Python脚本的PowerShell脚本中运行单个功能。 这是示例PowerShell脚本: 和Python脚本: 因此,我想以某种方式运行Powe

  • 问题内容: 在网站上运行Selenium测试时,我有一些Flash元素无法使用Selenium / Python进行测试。我想调用一个单独的终端窗口,运行Sikuli OCR测试,然后再返回Selenium / Python测试。我还不能完全弄清楚这一点。我将XXX放在我不知道新终端打开并运行Sikuli脚本的参数的位置。 我敢肯定,这里有几处错误。任何帮助将不胜感激。我已经搜索并阅读了可以在此找

  • 问题内容: 我希望使用exiftool扫描照片和视频中的EXIF标签。这是一个perl可执行文件。推论这一点的最佳方法是什么?是否已有Python库可以执行此操作?还是应该直接调用可执行文件并解析输出?(后者似乎很脏。)谢谢。 我问的原因是因为我当前正在使用pyexiv2,该视频不支持视频。Perl的exiftool对图像和视频有非常广泛的支持,我想使用它。 问题答案: 为避免为每个图像启动新进程

  • 问题内容: 我试图弄清楚如何从Shell脚本调用Python函数。 我有一个具有多个功能的Python文件,我需要在我的shell脚本中使用它们返回的值。有没有办法做到这一点。 我这样做是为了使用Python读取配置文件并在shell中获取值。还有其他更好的方法来实现这一目标。 包含: 我需要将Python函数返回的值存储在shell变量中。 问题答案: 您可以通过要求Python解释器打印结果来

  • 问题内容: 我有一些用PHP编写的代码,但是我还开发了一个用Python编写的脚本。是否可以从PHP代码调用此Python脚本? 如果是,如何从PHP将参数传递给Python脚本? 我试图找到一个没有成功的答案。 有人可以给我一个提示吗? 问题答案: 您使用系统功能:http : //php.net/manual/en/function.system.php 像这样: