次の方法で共有


WMI タスク: スケジュールされたタスク

WMI のスケジュールされたタスクは、スケジュールされたタスクに関する情報の作成と取得を行います。 その他の例については、https://www.microsoft.com/technet の TechNet ScriptCenter を参照してください。

このトピックに示したスクリプト例では、ローカル コンピューターからのみデータを取得します。 スクリプトを使用してリモート コンピューターからデータを取得する方法の詳細については、「リモート コンピューター上の WMI への接続」を参照してください。

以下の手順では、スクリプトの実行方法を説明します。

スクリプトを実行するには

  1. コードをコピーし、拡張子 .vbs を付けたファイル (filename.vbs など) に保存します。 テキスト エディターによってファイルに .txt 拡張子が追加されていないことを確認します。
  2. コマンド プロンプト ウィンドウを開き、ファイルを保存したディレクトリに移動します。
  3. コマンド プロンプトで「cscript filename.vbs」と入力します。
  4. イベント ログにアクセスできない場合は、管理者特権でのコマンド プロンプトから実行しているかどうかを確認します。 セキュリティ イベント ログなどの一部のイベント ログは、ユーザー アクセス制御 (UAC) によって保護されている場合があります。

注意

既定では、cscript により、コマンド プロンプト ウィンドウにスクリプトの出力が表示されます。 WMI スクリプトでは大量の出力が生成される可能性があるため、出力をファイルにリダイレクトすることが必要になる場合があります。 コマンド プロンプトで「cscript filename.vbs > outfile.txt」と入力し、filename.vbs スクリプトの出力を outfile.txt にリダイレクトします。

次の表に、ローカル コンピューターからさまざまな種類のデータを取得するために使用できるスクリプトの例の一覧を示します。

操作方法 WMI のクラスまたはメソッド
...どのようにして、スクリプトを使用してスケジュールされたタスクを作成しますか? Win32_ScheduledJob クラスと Create メソッドを使用します。 このタスクを Windows 7 以降で機能させることが困難な場合は、Win32_ScheduledJobの備考セクションを参照してください。設定によって、クラスを使用できなくなる可能性があります。
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
JobID = "Test"
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreate = objNewJob.Create _
    ("Notepad.exe", "********143000.000000-420", True , 1 OR 4 OR 16, ,True, JobId) 
If errJobCreate = 0 Then
    WScript.Echo "Job created successfully: " & VBNewLine _
        & "Notepad.exe scheduled to run repeately at 14.30 (2:30 P.M.) PST" & VBNewLine _
        & "on Mon, Wed, and Fri."
Else
    WScript.Echo "Job not created. Error code = " & errJobCreate
End If

文字列 "********143000.000000-420" (Create メソッドの StartTime パラメーター値で使用) では、"**********143000.000000" がタスクは 14.30 (2:30 P.M.) で開始することを指定し、"-420" がタイム ゾーンを指定します。 タイム ゾーン番号は、ローカル時刻変換の現在のバイアスです。 バイアスとは、UTC 時刻とローカル時刻との間の差分です。 タイム ゾーンのバイアスを計算するには、タイム ゾーンがグリニッジ標準時 (GMT) より進んでいる、または遅れている時間数に 60 を掛けます (タイム ゾーンが GMT より進んでいる場合は正の数を使用し、タイム ゾーンが GMT より遅れている場合は負の数を使用します)。 タイム ゾーンで夏時間が使用されている場合は、さらに 60 を計算に追加します。 たとえば、太平洋標準時ゾーンは GMT より 8 時間遅れているため、夏時間が使用されているときのバイアスは -420 (-8 * 60 + 60) に、夏時間が使用されていないときは -480 (-8 * 60) になります。 Win32_TimeZone クラスのバイアス プロパティにクエリを実行して、バイアスの値を調べることもできます。

...どのようにして、コンピューター上のすべてのスケジュールされたタスクの一覧を返しますか?

Win32_ScheduledJob クラスを使用します。 このクラスが返すことができるのは、スクリプトと AT.exe のどちらかを使用して作成されたジョブだけであることに注意してください。 [スケジュールされたタスク] ウィザードによって作成または変更されたジョブに関する情報を返すことはできません。

VB
strComputer = "."
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledJobs = objWMIService.ExecQuery ("Select * from Win32_ScheduledJob")
For Each objJob in colScheduledJobs
    Wscript.Echo "Command: " & objJob.Command & VBNewLine _
    & "Days Of Month: " & objJob.DaysOfMonth & VBNewLine _
    & "Days Of Week: " & objJob.DaysOfWeek & VBNewLine _
    & "Description: " & objJob.Description & VBNewLine _
    & "Elapsed Time: " & objJob.ElapsedTime & VBNewLine _
    & "Install Date: " & objJob.InstallDate & VBNewLine _
    & "Interact with Desktop: " & objJob.InteractWithDesktop & VBNewLine _
    & "Job ID: " & objJob.JobId & VBNewLine _
    & "Job Status: " & objJob.JobStatus & VBNewLine _
    & "Name: " & objJob.Name & VBNewLine _
    & "Notify: " & objJob.Notify & VBNewLine _
    & "Owner: " & objJob.Owner & VBNewLine _
    & "Priority: " & objJob.Priority & VBNewLine _
    & "Run Repeatedly: " & objJob.RunRepeatedly & VBNewLine _
    & "Start Time: " & objJob.StartTime & VBNewLine _
    & "Status: " & objJob.Status & VBNewLine _
    & "Time Submitted: " & objJob.TimeSubmitted & VBNewLine _
    & "Until Time: " & objJob.UntilTime
Next

スクリプトおよびアプリケーション用の WMI タスク

WMI C++ アプリケーションの例

TechNet ScriptCenter