2011-02-05 37 views
0

ウェブページからリモートホスト上の.batファイルを実行しようとしています。PsExecを実行するIISから:PsExecSVCリモートホストでハングする

PSEXECSVC(ホスト上)は、サーバーが無期限に待機するバッチの実行後にハングして終了しません。

@echo off 
echo ------ Start ----- 
exit 
:まったく同じコードを実行する場合、バッチファイルは1つのライナーエコーからなる場合
奇妙な部分がある

...サービスが閉じたコンソールアプリケーションで(一番下を参照)、すべてが大丈夫です

PsExecSvcが終了し、"------ Start -----"がページに表示されます。 (これは私が欲しいものである。)一方

@echo off 
echo ------ Start ----- 
echo echo2 

exit 
PSEXECSVCは、実行の終了時にハングアップします

...

手動で殺すPSEXECSVC、唯一"------ Start -----"ショーとstderr プリント:

PsExecはのv1.98は - プロセスを実行

リモート

著作権(C)2001から2010のMark Russinovich氏

のSysinternals - www.sysinternals.com

ハンドルが無効です。 novi2にPsExecはサービスを開始しています...

をnovi2への接続

... novi2にPsExecはサービスとの接続

...

C開始:novi2に/dbInfo.batを。

:novi2にPsExecは サービスと通信..

エラー

バッチファイル内で何が実行されていても、StdOutの最初の行だけがリダイレクトされ、psexecsvcがハングします(ただし、バッチ全体が実行された後は:O)。

実行した場合:

info.bat:

@echo off 
cscript /nologo test.vbs 
exit 

Test.vbsを:

Set objOut = Wscript.StdOut 
objOut.WriteLine "----------------------------------" 
objOut.Writeline "Win32_OperatingSystem instance" 
objOut.Writeline "----------------------------------" 
objOut.close 
Wscript.quit 666 

A ConsoleApplicationがすべてを印刷し、666

IISを返しますがのみ」を取得します---------------------------------- "とStdOutとpsexecsvcがハングします...

ここには、C#でpsexecを実行するために使用されるコードがあります...

Process proc = new Process(); 

ProcessStartInfo procInfo = new ProcessStartInfo(@"C:/PsExec.exe", @"\\novi2 -u Domain\usernameadmin -p Password C:/info.bat"); 
procInfo.UseShellExecute = false; 
procInfo.RedirectStandardOutput = true; 
procInfo.RedirectStandardError = true; 

proc.StartInfo = procInfo; 

proc.Start(); 

String output = proc.StandardOutput.ReadToEnd(); 
String err = proc.StandardError.ReadToEnd(); 
Trace.WriteLine("Out >> " + output); 
Trace.WriteLine("Err >> " + err); 

proc.Close(); 

私はホストのためにIIS 7、ASP MVC3と.NET4.0サーバー上の(VS2010からのサンプルプロジェクト)とWinXPのSP3を使用しています。 問題を回避するため、IISのApplicationPoolはpsexecと同じ管理者アカウントを使用しています。

+0

Lizzそれについてのすべてのソリューションを?これはどうですか?http://www.autoitscript.com/forum/topic/42368-psexecsvcexe-problem/ – Kiquenet

答えて

2

問題はリモートホスト(novi2)のPSExecSvcがそれ自身の後でクリーンアップしなかったため、正常に実行される前に削除する必要がある可能性があります。その後、あなたはよ、リモートホスト、に対してあなたがにPSEXEC をインスタンス化している場合、

sc \\novi2 delete PSExecSvc 

また、ありません:私は今、リモートホストに対してPSEXECを開始し、各スクリプトの末尾に以下を追加します。そうのようなそのEULAを受け入れるためにあなたがスイッチを追加確保する必要があります役立ちます

psexec \\HOST1 /accepteula -u userid -p password COMMAND 

希望、

関連する問題