DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VBScriptファイルの起動方法

分類:[ASP.NET]

ASP.Netより、IIS起動サーバ内にあるVBScriptがキックできなくて困っています。
下記のように記述していますが、

 スクリプト "C:\textScript.vbs" のスクリプト エンジン "VBScript" が見つかりません。


といったエラーが発生し、Scriptが起動できません。
WScript.exeのパラメータで、「//E:vbscript」を指定しても同様のエラーが
発生します。


  Dim procSet As New ProcessStartInfo
  Dim strParam As String
  '**************************
  ' コマンドパラメータの作成
  '**************************
  'メール送信VBScriptファイル
  strParam = " C:\textScript.vbs "

  procSet.Arguments = strParam
  procSet.ErrorDialog = False
  procSet.RedirectStandardOutput = True
  procSet.RedirectStandardError = True
  procSet.FileName = Environment.GetFolderPath(Environment.SpecialFolder.System) & "\WScript.exe"
  procSet.WindowStyle = ProcessWindowStyle.Hidden
  procSet.UseShellExecute = False

  'プロセスの起動
  Using obj As Process = Process.Start(procSet)

   obj.WaitForExit()
   Dim standardoutput As String = obj.StandardOutput.ReadToEnd()
   Dim standarderror As String = obj.StandardError.ReadToEnd()
   Dim ret As Integer = obj.ExitCode

  End Using
■No21817に返信(celestiaさんの記事)
>  スクリプト "C:\textScript.vbs" のスクリプト エンジン "VBScript" が
> 見つかりません。
> といったエラーが発生し、Scriptが起動できません。
>   procSet.FileName = Environment.GetFolderPath
> (Environment.SpecialFolder.System) & "\WScript.exe"
>

そのフォルダ先にWScript.exeが入っているのでしょうか?
単純に、"WScript.exe" だけでいいのでは?
> そのフォルダ先にWScript.exeが入っているのでしょうか?


「wscript.exe」はシステムフォルダに入っていますよね?
デバッグすると、「C:\WINDOWS\system32\wscript.exe」がセットされおり、
実際にこのファイルは存在します。



> 単純に、"WScript.exe" だけでいいのでは?

こちらでも実施しましたが、結果は同じでした。
まずは、サーバ上のコマンドプロンプトで
スクリプト "C:\textScript.vbs" が動くのかどうか確認されてみては?
(見当違いの発言でしたら、お許しください)
■No21820に返信(y4yamaさんの記事)
> まずは、サーバ上のコマンドプロンプトで
> スクリプト "C:\textScript.vbs" が動くのかどうか確認されてみては?
> (見当違いの発言でしたら、お許しください)

実施内容の報告が不足しており、もうしわけありませんでした。

コマンドプロンプトより、下記内容で実施しましたが、問題なく動作しております。

「C:\textScript.vbs」を直接起動
「wscript.exe C:\textScript.vbs」wscriptを指定して起動
「wscript.exe //E:vbscript C:\textScript.vbs」スクリプトエンジンを指定して起動
■No21821に返信(celestiaさんの記事)
> コマンドプロンプトより、下記内容で実施しましたが、問題なく動作しております。

そのコマンドプロンプトを実行しているアカウントと、
ASP.NET の実行アカウントは、同一のユーザになっていますか?
>
> そのコマンドプロンプトを実行しているアカウントと、
> ASP.NET の実行アカウントは、同一のユーザになっていますか?


回答が遅くなり申し訳御座いません。

アカウントに関しても問題ありませんでした。



ログ出力および、コマンド起動によりメール送信を行っているのですが、
引数に問題があったようです。

コマンドの引数の中に、メール送信用メッセージの項目があるのですが、
通常プログラム内に記述されている内容であれば、必ず1行しかメッセージが
なかったのですが、global.asax内ではトレース情報を出力しているために
そのメッセージが複数行になっていました。

よって、不要な改行が含まれてしまい、起動できていなかったようです。




今回の原因に直接起因しませんでしたが、コマンド起動アカウントや
フォルダ権限を意識していなかったので勉強になりました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板