web-dev-qa-db-ja.com

WindowsタスクスケジューラがVBScriptを実行しない

Windowsタスクスケジューラを使用してVBScriptを自動化しようとしています。しかし、cscript.exe + "C:\...\script.vbs"を使用しようとしましたが、実行されませんでした。また、CMD(cscript.exe "C:\...\script.vbs")で同じコマンドを直接実行してみましたが、うまくいきました。

何が問題でしょうか?

編集:

設定を"Run only when user is logged on"から"Run whether user is logged on or not"に切り替えようとしたところ、うまくいきました。ユーザーがログオフしている場合でも、タスクをスケジュール設定して実行する方法があるかどうか疑問に思っています。

7
lovechillcool

何時間もの調査の後、Blake Morrison(Microsoft)のブログの1つが登場しました。それはそれについて言及しました

.vbs/.ps1スクリプトを実行している場合は、.cmd/.batスクリプトから起動してみてください

参照 ヘルプ!スケジュールされたタスクが実行されない…

そのブログでは、タスクスケジューラを使用する際の多くのルールやヒントについても説明しています。

したがって、VBScriptを呼び出す.cmd/.batファイルを作成してください。例えば: cscript.exe YourScript.vbsは.cmd/.batスクリプトにあります。

4
lovechillcool

面倒なことは何ですか?私は.cmd/.batを使用せず、スクリプトは機能します! (Windows7はこちら)
(スケジュールされたタスクとしての)私のVBSスクリプトは、これら4のどのシナリオでもうまく動作します

  1. c scriptおよびオプション「ユーザーがログオンしているときにのみ実行する」
  2. c scriptおよびオプション「ユーザーがログオンしているかどうかにかかわらず実行する」
  3. w scriptおよびオプション「ユーザーがログオンしているときのみ実行」
  4. w scriptおよびオプション「ユーザーがログオンしているかどうかにかかわらず実行する」

最初のシナリオで、画面に黒いコマンドウィンドウが点滅しているのはそれだけです。

アクション設定:

cscript
または
wscript

単純にファイルを作成する私のスクリプト:

Set objFSO = CreateObject("Scripting.FileSystemObject")
filename = "C:\Temp\" & Hour(Time) & Minute(Time) & Second(Time)
Set objFile = objFSO.CreateTextFile(filename)
3
ZygD

次のようなバッチファイルを記述します。

echo "Started!" > c:\foldergoeshere\log.txt
cscript.exe "C:\...\script.vbs" > c:\foldergoeshere\log.txt
echo "Stopped!" > c:\foldergoeshere\log.txt

次に、VBSの代わりにバッチファイルをスケジュールします。これにより、実行を妨げている原因を確認できます。コンソール(CMD)で実行中に発生したと思われるエラーは、代わりに「Started!」の間にそのログファイルに出力されます。そして「やめた!」

3
Jen R

.vbsファイルは目に見えない形で実行されています。これは、「ログオンしたかどうか」オプションを指定して実行した結果です。

ユーザーがコンピュータを使用するのを妨害することは許可されません、つまり、あなたは自分自身を助けることができますが、他の人を助けることはできません。

タスクスケジューラのヘルプメニューから次のテキストをお読みください。

タスクセキュリティコンテキスト

タスクの実行時に、タスクの実行がスケジュールされているアカウントにログオンしていない場合でも、タスクを実行するように指定できます。

これを行うには、「ユーザーがログオンしているかどうかにかかわらず実行する」というラベルの付いたラジオボタンを選択します。

このラジオボタンが選択されている場合、タスクはインタラクティブに実行されません

タスクを対話的に実行するには、[ユーザーがログオンしているときのみ実行する]ラジオボタンを選択します。

1
Trigger

グレッグはこれに答えた https://superuser.com/a/81607

基本的に、2つのフォルダーを作成する必要があります。

フォルダー(64ビットWindowsでは2つ)を作成する必要があります。

(32ビット、常に)C:\ Windows\System32\config\systemprofile\Desktop

(64ビット)C:\ Windows\SysWOW64\config\systemprofile\Desktop

私の問題を修正しました(バットを必要とせず、.vbsファイルをポイントすることができました)。

0
Curtis

計画どおりに実行されているVBScriptが数か月から数年にわたって問題なく機能したが、何も変更されていなくても突然機能しなくなったことを2回以上経験しました。ここおよび他の場所に記載されているすべてのレシピを使用してタスクを反応させようとしましたが、成功しませんでした。私の回避策は、元のタスクからすべての設定をコピーしてnew計画済みタスクを作成することでした。

0
Markus

あなたはこれを行うことができます。

  1. cmdをプログラムとして。

  2. /c start cscript //nologo "W:\Pathto with spaces\VBScript.vbs"
    
    • /c以下をcmdに送信します

    • startは次のパラメーターを開始します

    • cscript //nologo "W:\Path with spaces\VBScript.vbs"自明です。ファイル名にスペースを入れるためにパスを引用符で囲みました。

      スクリーンショット

      enter image description here

0
Ste