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 に答える