Python subprocess.checkoutput 调用过程错误
在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']' returned non-zero exit status 11。
有人能告诉我为什么这个不工作吗?
1 个回答
0
在使用Python的subprocess模块和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脚本调用的,使用了subprocess模块:
def MSMQ():
p = subprocess.Popen(r"PrereqInstall\SetMSMQFeatures.bat", shell=True)
stout, stderr = p.communicate()