web-dev-qa-db-ja.com

スクリプトがタスクスケジューラで実行されません。どうして?

自分で実行しているときに正常に実行されるvbscriptスクリプトがあります。

何らかの理由で、タスクスケジューラの下で管理ユーザーとして実行すると、実行されますが、ログファイルに書き込まれません。私がそれを実行するユーザーは管理者であるため、それは権限であってはなりません。

Win2008 64ビットマシンで32ビットdllを呼び出すスクリプト。

C:\ windows\SysWOW64\cscript.exe Bob.vbs

また、ローカルディレクトリを実行元に設定しました。

皮肉なことに、タスクスケジューラは、タスクの実行を「正常に終了」すると言います。

また、タスクスケジューラには正常に実行されている他のスクリプトがあります。このスクリプトだけです。

誰かが私がチェックできるもののリストを持っていますか?

13
GordyII

SVNサーバーでスケジュールされたタスクを実行すると、同様の問題が発生しました。

私のスクリプトは、現在の作業ディレクトリ(タスク用に「開始」フォルダーとして指定したディレクトリ)だと思ったものに書き込んでいました。サーバーにログオンしてスクリプトを実行すると、問題なく動作しました。スケジュールされたジョブとして実行する場合は、そうなりません。

私の場合、スケジューラが作業ディレクトリを、タスクに指定したディレクトリ(「開始」フォルダ)ではなく、ジョブの実行に使用されるユーザーアカウントのTEMP環境変数で指定されたディレクトリに再割り当てしたように見えました)。

TEMPフォルダーでアカウントを確認し、ファイルがあるかどうかを確認します。

6
Patrick Cuff

DOSバッチファイルとVB Windows 2008 ServerおよびWindows 7のスクリプトでこの問題が発生しました。いずれの場合でも、スケジュールされたタスクアクションの "start in"フォルダを設定すると、すべてうまくいきました。

7
Jared

Win2008 64ビットマシンを実行している場合:これは(最終的に)同じサーバーで動作しました。タスクスケジューラは、バッチファイル(runvbs.batなど)を実行して、32ビットバージョンのコマンドラインインタープリターで次のようにcscriptを呼び出します。

@echo off
%windir%\syswow64\cmd.exe /C "c:\windows\system32\cscript.exe //B //nologo import_some_data.vbs"

二重引用符に注意してください

アクセス許可にはAdministratorsグループを使用し、最高の特権で実行しました。

構成:Windows®7、Windows Server™2008 R2

[アクションの編集]ダイアログでは、次のようになっています。

アクション:プログラムを開始します

プログラム/スクリプト:runvbs.bat

開始:c:\ inetpub\wwwroot\asp\importstuff \

5
Arbor

私はこれに本当に問題があり(まあ朝)、この解決策を見つけました ここ

Windowsタスクスケジューラで、[ユーザーまたはグループの変更]ボタンをクリックして、[管理者]グループを追加する必要がありました。

それが誰かを助けることを願っています。

5
john

この同じ問題を解決しました。データベースへの接続時にスクリプトが失敗し、修正後、XLSファイルの作成時に失敗しました。バットファイルを作成し、以下の内容を追加しました。このbatファイルは私のvbスクリプトを呼び出し、32ビットモードで実行します。

%windir%\SysWoW64\cmd.exe /C "c:\windows\system32\cscript.exe //B //nologo C:\ScheduledJobs\PrimeReconDev\myVBScript.vbs"

上記の内容のbatファイルを実行するタスクスケジュールを設定し、実行ユーザーを管理者に割り当てます。これを行うには、[全般]タブの[ユーザーまたはグループの変更]オプションを歌います。一度完了すると、問題なく正常に実行できました。私は最初は自分と同じように実行していて、管理者グループに属していますが、それでも失敗していました。ビルトイン管理者として実行するとトリックが行われました

1
Damion Willi

代替ソリューション:

ユーザーがログインしている場合にのみ実行

タスクマネージャ内でその選択を行います。


私はそれが他の誰かを助けることを願っています。

0
Elias

バットジョブが保存されているパスをアクションタブのStart inに追加するまで、同じ問題が発生しました。

タスク→プロパティ→アクション→スタートの編集(オプション)を右クリックします。

バットジョブへのパスを記入してください。

0
kingkeamo

同じ問題がありました。タスクの次の文字列を使用->実行フィールドCMD/C "CMD/C c:\ Test\MyScript.vbsのような"私のVBScriptへのフルパス "

0
kjsm

VBSスクリプトをスケジュールするときにコードが実行されないという過去の同様の問題がありました-これは問題になる可能性があります!誰かがこれを解決できるかどうかも知りたいです。 (ちなみに、コードをC#コンソールアプリケーションとして書き直すことで解決しました)

0
Chris

Windows 2008の場合は、タスクが管理者権限で実行されるようにする必要があります。

一般タブ-(チェック)最高の権限で実行

0
guest

私も同じ問題を抱えていました。

以前使用していた絶対パス( "U:\ workingDirectory\logs\log")ではなく、相対パス( "logs\log")を使用して修正しました。

どうやらタスクスケジューラを介してスクリプトを実行するときは、相対パスを使用する必要があります。

0
ignis

この問題が発生したのは、完了したタスクの戻り値が問題を報告していなくても、通常、タスクで実行されているプログラムにエラーが発生しているためです。

あなたはそれを実行すると言いますが、ログに書き込みません-ログに書き込む前にクラッシュする可能性はありますか?

まだ行っていない場合は、スクリプトにエラー処理を追加してエラーをログに記録するか、少なくともスクリプトがどの程度進んでいるかを追跡してください。

0
Jay Riggs

これを理解するためにすべてを見回しましたが、今私が得たので共有します。

サーバー2003で正常に実行されたスクリプトがサーバー2012に移動しようとしていて、スクリプトの一部が実行されませんでした。

新しいタスクを作成する必要があり、一般タブで「windows server 2003、Windows XP or Windows 2000。新しいタスクを使用します。

0
Nate