連載
» 2017年01月17日 05時00分 UPDATE

Windows PowerShell基本Tips(12):【 New-ScheduledTaskAction 】コマンドレット――タスクスケジューラで実行するアクションを作成する

本連載は、Windows PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介いていきます。今回は「New-ScheduledTaskAction」コマンドレットです。

[国井傑(Microsoft MVP for Directory Services),株式会社ソフィアネットワーク]
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「タスクスケジューラ」で実行させるアクションを作成するための「New-ScheduledTaskAction」コマンドレットを解説します。

New-ScheduledTaskActionコマンドレットとは?

 「New-ScheduledTaskAction」は、Windows PowerShellを利用して「タスクスケジューラ」の新しいタスクを作成する際、実行するアクションを定義するためのコマンドレットです。

 前回(New-ScheduledTaskTriggerコマンドレット――タスクスケジューラの条件を設定する)も紹介しましたが、PowerShellで新しいタスクを作成する場合は、次の3つを指定する必要があります。

  • タスクを実行するための条件
  • 実行するアクション(プログラム)
  • 条件とアクションを組み合わせたタスク

 このとき、「実行するアクション(プログラム)を定義する」ために使用するのが、今回紹介するNew-ScheduledTaskActionコマンドレットです。

 前回紹介したNew-ScheduledTaskTriggerコマンドレットと、New-ScheduledTaskActionコマンドレットを組み合わせると、「Register-ScheduledTask」コマンドレットを使って新しいタスクを作成できるようになります。Register-ScheduledTaskコマンドレットについては、次回紹介します。


New-ScheduledTaskActionコマンドレットの書式

New-ScheduledTaskAction [オプション]



New-ScheduledTaskActionコマンドレットの主なオプション

 New-ScheduledTaskActionコマンドレットの主なオプションは次の通りです。

オプション 意味
-Execute 実行するプログラムを指定する
-Argument 実行するプログラムの引数を指定する。省略可能
-WorkingDirectory プログラム実行時に一時ファイルなどを保存するフォルダを指定する。省略可能


PowerShellコマンドレットを実行する

 タスクスケジューラを利用してPowerShellコマンドレットを実行する場合は、「-Execute」オプションで「PowerShell.exe」を実行するように呼び出し、「-Argument」オプションで実行するコマンドレットを指定します。

 -Argumentオプションで指定するのは引数となるため、PowerShellのコマンドレットを実行するのであれば、PowerShell.exeの引数として「-Command」オプションを指定します。そして、-Commandに続けて実行するコマンドレットを指定することで、任意のコマンドレットを実行できるようになります。

 以下の実行例では、本連載第4回で紹介した「Remove-Item」コマンドレットで、「C:\temp」フォルダ内の全てのファイルを削除しています。

コマンドレット実行例

New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Command Remove-Item c:\temp\*.*"

(Remove-Itemコマンドレットで「C:\temp」フォルダ内の全てのファイルを削除するアクションを定義する)(画面1


画面1 画面1 「PowerShell.exe」を呼び出して、「Remove-Item」コマンドレットを実行するような命令を$task変数に格納している

 -Executeオプションの後に「"cmd.exe"」と記述すれば、PowerShellの代わりにコマンドプロンプト(cmd.exe)を起動することができます。その場合、-Argumentの後にはコマンドプロンプトで実行可能なコマンドを記述してください。

 また、New-ScheduledTaskActionコマンドレットを実行した結果は、この後で「Register-ScheduledTask」コマンドレットで利用します。Register-ScheduledTaskコマンドレットでNew-ScheduledTaskActionコマンドレットの実行結果が利用できるように、必ず変数(この例では変数「$task」)に格納してください。



システム情報をファイルに格納する

 例えば、Windowsコンピュータの各種情報を参照する際に使用する「システム情報(msinfo32.exe)」で表示される内容を、「C:\Report」フォルダに「msinfo.txt」という名前で保存するとします。「msinfo32.exe」は、「/Report」オプションを指定すると、表示される内容をファイルとして保存することができます。

 以下の実行例では、「-Execute」で「msinfo32.exe」を実行するように呼び出し、「-Argument」で「/report」オプションと保存するファイルの名前、そして「-WorkingDirectory」でファイル作成時に使用するワーキングディレクトリとして「C:\Report」フォルダを指定しています。

コマンドレット実行例

New-ScheduledTaskAction -Execute "msinfo32.exe" -Argument "/report C:\Report\msinfo.txt" -WorkingDirectory "C:\Report"

(「システム情報」で表示される内容を「C:\Report」フォルダに「msinfo.txt」として保存する)(画面2


画面2 画面2 「C:\Report」フォルダに「msinfo.txt」ファイルを作成して、「msinfo32.exe」で表示される内容を保存する命令を$task変数に格納している


筆者紹介

国井 傑(くにい すぐる)

株式会社ソフィアネットワーク取締役。1997年よりマイクロソフト認定トレーナーとして、Active DirectoryやActive Directoryフェデレーションサービス(AD FS)など、ID管理を中心としたトレーニングを提供している。2007年よりMicrosoft MVP for Directory Servicesを連続して受賞。なお、テストで作成するユーザーアカウントには必ずサッカー選手の名前が登場するほどのサッカー好き。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。