パフォーマンスモニタの警告で、バッチファイルが実行しない。


Win2003Serverのパフォーマンスモニタ、バッチファイルの設定について教えてください。

警告で、「トリガされたときの操作」-「次のプログラムを実行する」
で、.batのファイルを指定し、アラートメールを送ろうとしているのですが、
送信できません。

バッチファイルの中身は、Blat.exeのコマンドを書いたものです。
バッチファイル単体では問題なく動作するのですが、
トリガからのバッチファイル実行ができていないようです。

ログを見てもエラーが出ていませんし、
バッチ実行と同時に、ログエントリの作成も設定し、
このログエントリは問題なく行っているようです。

ただ、バッチファイルを設定するだけでは、
動いてくれないんでしょうか。

教えてください。
お願いします。

回答の条件
  • 1人5回まで
  • 登録:2006/08/08 20:51:10
  • 終了:2006/08/15 20:56:05

回答(6件)

id:kurukuru-neko No.1

kurukuru-neko回答回数1844ベストアンサー獲得回数1552006/08/08 23:10:39

ポイント20pt

バッチは実行モジュールではないから。

プログラム c:\windows\system32\cmd.exe /c xxx.bat

で動作しませんか?

[IIS]SMTP を利用してコマンド プロンプトで電子メールを送る

http://support.microsoft.com/default.aspx?scid=kb;ja;193685

NetKids iMark

http://www.istinc.co.jp/netkids/nki.html

id:tkono711

ご回答ありがとうございます。

c:\windows\system32\cmd.exe /c xxx.bat

を「次のプログラムを実行する」に入れたところ、「指定したプログラムまたはコマンドファイルは存在しません。」と出てしまいます(涙

「コマンドラインの引数」あたりを設定すれば良いんですかね?

もう少しご回答を募集します。

2006/08/09 08:27:24
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912006/08/09 12:50:45

ポイント20pt

>「コマンドラインの引数」あたりを設定すれば良いんですかね?

その通りだと思います。

実行するプログラムに、

C:¥Windows¥System32¥cmd.exe

コマンドラインの引き数で、テキストメッセージのみにチェックを入れ

/C C:\test.bat

とすれば、バッチが実行されました。

実行結果がわかるように、バッチの中身で

echo START %DATE% %TIME% >>C:¥result.txt

myCommand hogegoge >>C:¥result.txt 2>&1

echo END %DATE% %TIME% >>C:¥result.txt

とすれば、実行結果がファイルで確認できると思います。

¥は半角に置き換えて読んでください。

id:tkono711

ありがとうございます。

早速試してみます。

→だめでした。 

 バッチの中身に上記のコマンドを参考に変更しましたが、それ以前にバッチをまったく実行してくれません。

あと、怪しいのは実行ユーザ名でしょうか。

今はアドミンで設定しているのですが

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1466031

こちらの方と同じ状況です。

 わたしも突然機能するようにならないでしょうかね(涙

2006/08/09 20:24:59
id:Mook No.3

Mook回答回数1312ベストアンサー獲得回数3912006/08/09 20:45:45

ポイント20pt

#2 です。

以降、ポイントは不要です。


バッチが実行されないというのは、何をもって判断されたのでしょうか。

当方も、当初は画面に実行ウィンドウが出ると思い、試行錯誤したのですが、画面にコマンドウィンドウは表示されませんでした。


そこで上記のように、実行結果をリダイレクトし、ファイルに出力するようにしたところ、該当ファイルが作成されることを確認しました。


上記のバッチを設定した際、

C:¥result.txt

のファイルは存在しませんか。


・バッチを単体で実行した場合はファイルが作成されますか。

・トリガが実施されたことは、イベントログには記録されていますか。

上記二点を確認されてはどうかと思います。


なお、回答回数の上限が二回となっていますが、上限を変更いただければ、継続して回答したいと思います。

id:tkono711

どうもご回答ありがとうございます。

Mookさんの書いていただいたresult.txtを出力する部分を追加してみたのですが、バッチファイル自体を実行すれば問題なくresult.txtの出力もしています。しかし、パフォーマンスモニタでは、閾値を超えても出力しません。

また、イベントログにはトリガの実施が記録されています。

現状としては、パフォーマンスモニタが

C:¥Windows¥System32¥cmd.exe /C C:\test.bat 自体を実行していないようです。

疑うとすれば、実行ユーザの権限と思われますが、adminでログインし、adminで実行しているので、普通に考えれば権限の問題で実行しないわけではないと思われます。

回答回数の上限を増やしました。よろしければもう少しこの問題にお付き合いください。

よろしくお願いします。

2006/08/09 21:51:58
id:kurukuru-neko No.4

kurukuru-neko回答回数1844ベストアンサー獲得回数1552006/08/10 00:36:53

ポイント20pt

原因がわかりました。

Windows のセキュリティー対策が原因です。

例えばc:\temp\のディレクトリーを作成すると


権限をみると

C:\temp>cacls c:\temp

c:\temp BUILTIN\Administrators:(OI)(CI)F

NT AUTHORITY\SYSTEM:(OI)(CI)F

SILENT\xxxx:F

CREATOR OWNER:(OI)(CI)(IO)F

BUILTIN\Users:(OI)(CI)R

BUILTIN\Users:(CI)(特殊なアクセス:)

FILE_APPEND_DATA

BUILTIN\Users:(CI)(特殊なアクセス:)

FILE_WRITE_DATA

Windowsのディレクトリーをみると

C:\temp>cacls c:\windows

c:\WINDOWS BUILTIN\Users:R

BUILTIN\Users:(OI)(CI)(IO)(特殊なアクセス:)

GENERIC_READ

GENERIC_EXECUTE

BUILTIN\Administrators:F

BUILTIN\Administrators:(OI)(CI)(IO)F

NT AUTHORITY\SYSTEM:F

NT AUTHORITY\SYSTEM:(OI)(CI)(IO)F

BUILTIN\Administrators:F

CREATOR OWNER:(OI)(CI)(IO)F


c:\tempのバッチファイルは実行できないが

c:\windowsにバッチを移動すると実行ができる。

(OSは、Windows XPの場合です)

次のプログラムを実行するにバッチのパスを

記述しても動作しました。

対策:

バッチファイルの存在するディレクトリー

実行権限を適切に設定すれば動作するようになります。

id:tkono711

返信遅くなりすいません。

ご回答ありがとうございました。

しかし、単純にバッチファイルとプログラム(この場合、blat.exeなんですが)

をwindowsの下にフォルダを作って置いたのですが、うまくいかないです。

Windows自体のバグなんでしょうか?

他のプログラム(例:IE)を設定しても、

動いてくれないです。

もう一度実行権限を調べてみます。

2006/08/11 06:47:36
id:nagoya-it No.5

nagoya-it回答回数16ベストアンサー獲得回数22006/08/12 09:04:56

ポイント20pt

バッチファイルがパフォーマンスの警告閾値超えをトリガーに動作した際のパスはBlat.exeのあるパスになっているのでしょうか?

試しにBlat.exeを起動する行をフルパスで記述、またはカレントディレクトリの変更を行うコマンドを付加して動かしてみてはいかがでしょうか?

私はCDO(Collaboration Data Objects)というWindow2000以降に標準で搭載されたコンポーネントを利用してメール送信を行うVBSを作成し、それに必要なパラメータを渡し、VBSを動作させるBATファイルをパフォーマンス警告閾値超えをトリガーに動作することをやっていました。そのBATファイルには先頭行でカレントディレクトリをVBSのある場所に変更を行うようにしています。(cd /d <アプリケーションのあるパス>)

id:Mook No.6

Mook回答回数1312ベストアンサー獲得回数3912006/08/13 12:09:42

ポイント10pt

先の回答は XP で試してやったのですが、同様の内容を Windows 2003 Server で実行したところ、tkono711 さんの言われるように、動きませんでした。

どうもいろいろと、設定が複雑のようです。


いろいろ調べてみると、どうも下記が該当しそうです。

http://www.microsoft.com/technet/prodtechnol/windowsserver20...

対話式プログラムを実行するには、[サービス] を開き、[Performance Logs and Alerts] をダブルクリックします。[ログオン] タブをクリックし、[ローカル システム アカウント] チェック ボックスと [デスクトップとの対話をサービスに許可] チェック ボックスをオンにします。

の設定をしてみてください。一応これで動くようになりました。

設定を戻す際は、ログオンユーザ名に「NT Authoring\NetworkService」を入れ、ノーパスワードで設定を戻せます。

#どちらも、変更直後サービスはエラーになりましたが、監視を設定したらそのまま起動しました。


おまけ:

こちでの試験は、Memory\Avairable MByte で設定し、プログラムで C:\Windows\Notepad.exe を設定しました。

評価後、タスクマネージャを確認してみると、これまで画面に出ていなかったと思われたタスク(notepad)が、画面には出ていなくてもプロセスとしては起動されていたようで、山のようにありました。Window に表示されていないため、タスクスケジューラからしか削除できないのですが、面倒なので、

taskkill /F /IM notepad.exe

で片付けました。

こちらもご参考までに。

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません