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"
に切り替えようとしたところ、うまくいきました。ユーザーがログオフしている場合でも、タスクをスケジュール設定して実行する方法があるかどうか疑問に思っています。
何時間もの調査の後、Blake Morrison(Microsoft)のブログの1つが登場しました。それはそれについて言及しました
.vbs/.ps1スクリプトを実行している場合は、.cmd/.batスクリプトから起動してみてください
そのブログでは、タスクスケジューラを使用する際の多くのルールやヒントについても説明しています。
したがって、VBScriptを呼び出す.cmd/.batファイルを作成してください。例えば: cscript.exe YourScript.vbs
は.cmd/.batスクリプトにあります。
面倒なことは何ですか?私は.cmd/.batを使用せず、スクリプトは機能します! (Windows7はこちら)
(スケジュールされたタスクとしての)私のVBSスクリプトは、これら4のどのシナリオでもうまく動作します
最初のシナリオで、画面に黒いコマンドウィンドウが点滅しているのはそれだけです。
アクション設定:
または
単純にファイルを作成する私のスクリプト:
Set objFSO = CreateObject("Scripting.FileSystemObject")
filename = "C:\Temp\" & Hour(Time) & Minute(Time) & Second(Time)
Set objFile = objFSO.CreateTextFile(filename)
次のようなバッチファイルを記述します。
echo "Started!" > c:\foldergoeshere\log.txt
cscript.exe "C:\...\script.vbs" > c:\foldergoeshere\log.txt
echo "Stopped!" > c:\foldergoeshere\log.txt
次に、VBSの代わりにバッチファイルをスケジュールします。これにより、実行を妨げている原因を確認できます。コンソール(CMD)で実行中に発生したと思われるエラーは、代わりに「Started!」の間にそのログファイルに出力されます。そして「やめた!」
.vbsファイルは目に見えない形で実行されています。これは、「ログオンしたかどうか」オプションを指定して実行した結果です。
ユーザーがコンピュータを使用するのを妨害することは許可されません、つまり、あなたは自分自身を助けることができますが、他の人を助けることはできません。
タスクスケジューラのヘルプメニューから次のテキストをお読みください。
タスクセキュリティコンテキスト
タスクの実行時に、タスクの実行がスケジュールされているアカウントにログオンしていない場合でも、タスクを実行するように指定できます。
これを行うには、「ユーザーがログオンしているかどうかにかかわらず実行する」というラベルの付いたラジオボタンを選択します。
このラジオボタンが選択されている場合、タスクはインタラクティブに実行されません。
タスクを対話的に実行するには、[ユーザーがログオンしているときのみ実行する]ラジオボタンを選択します。
グレッグはこれに答えた https://superuser.com/a/81607
基本的に、2つのフォルダーを作成する必要があります。
フォルダー(64ビットWindowsでは2つ)を作成する必要があります。
(32ビット、常に)C:\ Windows\System32\config\systemprofile\Desktop
(64ビット)C:\ Windows\SysWOW64\config\systemprofile\Desktop
私の問題を修正しました(バットを必要とせず、.vbsファイルをポイントすることができました)。
計画どおりに実行されているVBScriptが数か月から数年にわたって問題なく機能したが、何も変更されていなくても突然機能しなくなったことを2回以上経験しました。ここおよび他の場所に記載されているすべてのレシピを使用してタスクを反応させようとしましたが、成功しませんでした。私の回避策は、元のタスクからすべての設定をコピーしてnew計画済みタスクを作成することでした。