Powershell スクリプトのバッチ起動方法

シェアする

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