Windows タスクスケジューラーから、Powershellスクリプトを定期的に実行させる場合の設定方法を、すぐに忘れてしまいます(^^; 備忘録まで
操作:
プログラムの開始
設定:
プログラム/スクリプト
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
引数の追加
-Nologo -NoProfile -ExecutionPolicy Unrestricted -Command `& { C:\Scripts\Job.ps1; exit $lastexitcode }`
※戻り値を取得する目的で、exit $lastexitcode は追加しています
Powershellヘルプ
ヘルプも合せてご確認ください♪
> @powershell /?
PowerShell[.exe] [-PSConsoleFile <ファイル> | -Version <バージョン>]
[-NoLogo] [-NoExit] [-Sta] [-Mta] [-NoProfile] [-NonInteractive]
[-InputFormat {Text | XML}] [-OutputFormat {Text | XML}]
[-WindowStyle <スタイル>] [-EncodedCommand ]
[-File <ファイル パス> <引数>] [-ExecutionPolicy <実行ポリシー>]
[-Command { - | <スクリプト ブロック> [-args <引数の配列>]
| <文字列> [<コマンド パラメーター>] } ]
PowerShell[.exe] -Help | -? | /?
-PSConsoleFile
指定された Windows PowerShell コンソール ファイルを読み込みます。コンソー
ル ファイルを作成するには、Windows PowerShell の Export-Console を使用し
ます。
-Version
指定されたバージョンの Windows PowerShell を起動します。
このパラメーターでバージョン番号 (`-version 2.0` など) を入力します。
-NoLogo
スタートアップ時に著作権の見出しを非表示にします。
-NoExit
スタートアップ コマンドを実行後、終了しません。
-Sta
シングルスレッド アパートメントを使用して、シェルを起動します。
既定ではシングルスレッド アパートメント (STA) です。
-Mta
マルチスレッド アパートメントを使用して、シェルを起動します。
-NoProfile
Windows PowerShell プロファイルを読み込みません。
-NonInteractive
ユーザーに対話的なプロンプトを表示しません。
-InputFormat
Windows PowerShell に送られたデータの形式を指定します。有効な値は、`Text`
(テキスト文字列) または `XML` (シリアル化 CLIXML 形式) です。
-OutputFormat
Windows PowerShell からの出力の形式を決定します。有効な値は、`Text` (テ
キスト文字列) または `XML` (シリアル化 CLIXML 形式) です。
-WindowStyle
ウィンドウ スタイルを Normal、Minimized、Maximized、または Hidden に設定
します。
-EncodedCommand
Base-64 エンコードの文字列のコマンドを受け付けます。複雑な引用符や中かっ
こが必要なコマンドを Windows PowerShell に送るには、このパラメーターを使
用します。
-File
指定されたスクリプトをローカル スコープ (`ドット ソース`) で実行して、
スクリプトによって作成された関数と変数を現在のセッションで使用できるように
します。スクリプト ファイルのパスとパラメーターを入力します。
File はコマンド内で最後のパラメーターである必要があります。File パラメーター
名の後に入力された文字は、スクリプト ファイルのパスとスクリプトのパラメー
ターとして解釈されるためです。
-ExecutionPolicy
現在のセッションの既定の実行ポリシーを設定し、
$env:PSExecutionPolicyPreference 環境変数に保存します。
このパラメーターでは、レジストリに設定されている Windows PowerShell 実行
ポリシーは変更されません。
-Command
PowerShell のコマンド プロンプトに入力された場合と同様に、指定されたコマ
ンド (および任意のパラメーター) を実行します。NoExit が指定されていない場
合は、そのまま終了します。Command の値には、`-`、文字列、またはスクリプト
ブロックを指定できます。
Command の値が `-` の場合、コマンド テキストは標準入力から読み込まれます。
Command の値がスクリプト ブロックの場合は、スクリプト ブロックを中かっこ
({}) で囲む必要があります。スクリプト ブロックを指定できるのは、Windows
PowerShell で PowerShell.exe を実行している場合だけです。スクリプト ブロ
ックの結果は、ライブ オブジェクトではなく逆シリアル化 XML オブジェクトとし
て親シェルに返されます。
Command の値が文字列の場合、Command はコマンド内で最後のパラメーターである
必要があります。コマンドの後に入力された文字は、コマンド引数として解釈さ
れるためです。
Windows PowerShell コマンドを実行する文字列を記述するには、次の形式を使用
します。
`& {<コマンド>}`
引用符によりこれが文字列であることを示し、呼び出し演算子 (&) によりコマ
ンドが実行されます。
-Help, -?, /?
このメッセージを表示します。WindowsPowerShell で PowerShell.exe の コマン
ドを入力している場合、コマンド パラメーターの前にスラッシュ (/) ではなくハ
イフン (-) を入力してください。Cmd.exe では、ハイフンまたは スラッシュの
いずれかを使用できます。
例
PowerShell -PSConsoleFile SqlSnapIn.Psc1
PowerShell -version 2.0 -NoLogo -InputFormat text -OutputFormat XML
PowerShell -Command {Get-EventLog -LogName security}
PowerShell -Command `& {Get-EventLog -LogName security}`
# -EncodedCommand パラメーターを使用する場合:
$command = 'dir `c:\program files` '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand
検証環境
Windows7 SP1 Powershell 4.0