0

在 windows 命令行中,我输入以下命令以启用 windows 功能:

>dism.exe -online -Enable-Feature -FeatureName:MSMQ-HTTP

此命令运行良好并启用 MSMQ-HTTP 功能。现在我正在编写一个 Python 脚本来自动化这个过程,我的代码

subprocess.check_output(['dism.exe', '-online', '-Enable-Feature', '-FeatureName:MSMQ-HTTP'], shell=True)

返回一个令人讨厌的错误,CalledProcessError: Command '['dism.exe', '-online', '-Enable-Feature', '-FeatureName:MSMQ-HTTP']' 返回非零退出状态 11。

谁能阐明为什么这不起作用?

4

1 回答 1

0

Python 的子进程模块和 DISM.exe 存在一些位问题。即使指定 C:\Windows\system32\dism.exe 绝对路径,我也收到错误代码 11。

我最终的解决方案是编写一个 10 行的批处理文件:

@echo off
if EXIST %WINDIR%\system32\dism.exe ( 
  set DISM=%WINDIR%\system32\dism.exe 
) 
if EXIST %WINDIR%\SysNative\dism.exe ( 
  set DISM=%WINDIR%\SysNative\dism.exe 
)
%DISM% -online -Enable-Feature -FeatureName:MSMQ-ADIntegration
%DISM% -online -Enable-Feature -FeatureName:MSMQ-HTTP
%DISM% -online -Enable-Feature -FeatureName:MSMQ-Triggers

这个小批处理文件是通过子进程从我的 Python 脚本中调用的:

def MSMQ():
    p = subprocess.Popen(r"PrereqInstall\SetMSMQFeatures.bat", shell=True)
    stout, stderr = p.communicate()
于 2013-06-03T17:08:36.477 回答