about_PowerShell_exe
簡単な説明
コマンド ライン インターフェイスの powershell.exe
使用方法について説明します。 コマンド ライン パラメーターを表示し、構文について説明します。
SYNTAX
PowerShell[.exe]
[-PSConsoleFile <file> | -Version <version>]
[-NoLogo]
[-NoExit]
[-Sta]
[-Mta]
[-NoProfile]
[-NonInteractive]
[-InputFormat {Text | XML}]
[-OutputFormat {Text | XML}]
[-WindowStyle <style>]
[-EncodedCommand <Base64EncodedCommand>]
[-ConfigurationName <string>]
[-File - | <filePath> <args>]
[-ExecutionPolicy <ExecutionPolicy>]
[-Command - | { <script-block> [-args <arg-array>] }
| { <string> [<CommandParameters>] } ]
PowerShell[.exe] -Help | -? | /?
パラメーター
-Command
指定したコマンド (およびパラメーター) を PowerShell コマンド プロンプトで入力したかのように実行し、パラメーターが指定されていない限り NoExit
終了します。
Command の値には、、スクリプト ブロック、または文字列を指定できます-
。 Command の値が の場合、-
コマンド テキストは標準入力から読み取られます。
Command パラメーターは、Command に渡された値を ScriptBlock 型として認識できる場合にのみ、実行用のスクリプト ブロックを受け入れます。 これは、別の PowerShell ホストから実行しているpowershell.exe
場合にのみ可能です。 ScriptBlock 型は、 に渡される前に、既存の変数に含まれるか、式から返されるか、PowerShell ホストによって中かっこ ({}
) で囲まれたリテラル スクリプト ブロックとして解析できますpowershell.exe
。
powershell -Command {Get-WinEvent -LogName security}
では cmd.exe
、スクリプト ブロック (または ScriptBlock 型) は存在しないため、 Command に渡される値は 常に 文字列になります。 文字列の中にスクリプト ブロックを記述することはできますが、実行されるのではなく、通常の PowerShell プロンプトで入力した場合とまったく同じように動作し、スクリプト ブロックの内容が出力されます。
Command に渡された文字列は引き続き PowerShell コードとして実行されるため、 からcmd.exe
実行する場合、スクリプト ブロックの中かっこは最初は必要ありません。 文字列内で定義されたインライン スクリプト ブロックを実行するには、 呼び出し演算子&
を使用できます。
powershell.exe -Command "& {Get-WinEvent -LogName security}"
Command の値が文字列の場合、その後のすべての引数が実行するコマンドの一部として解釈されるため、Command は pwsh の最後のパラメーターである必要があります。
既存の PowerShell セッション内から呼び出されると、結果は、ライブ オブジェクトではなく逆シリアル化された XML オブジェクトとして親シェルに返されます。 その他のシェルの場合、結果は文字列として返されます。
Command の値が の場合、-
コマンド テキストは標準入力から読み取られます。 標準入力で Command パラメーターを使用する場合は、標準入力をリダイレクトする必要があります。 次に例を示します。
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | powershell -NoProfile -Command -
この例を実行すると、次の出力が生成されます。
in
hi there
out
プロセス終了コードは、スクリプト ブロック内の最後の (実行された) コマンドの状態によって決まります。 終了コードは、 が 0
$true
の場合$?
、または 1
が の場合$?
です$false
。 最後のコマンドが、 または 以外0
1
の終了コードを明示的に設定する外部プログラムまたは PowerShell スクリプトの場合、終了コードはプロセス終了コード用に に1
変換されます。 特定の終了コードを保持するには、コマンド文字列またはスクリプト ブロックに を追加 exit $LASTEXITCODE
します。
詳細については、「about_Automatic_Variables」を参照してください$LASTEXITCODE
。
同様に、 や -ErrorAction Stop
などのthrow
スクリプト終了 (runspace-terminating) エラーが発生したとき、または Ctrl+C で実行が中断されると、値 1 が返されます。
-ConfigurationName <文字列>
PowerShell を実行する構成エンドポイントを指定します。 既定の PowerShell リモート処理エンドポイントや、特定のユーザー ロール機能を持つカスタム エンドポイントなど、ローカル コンピューターに登録されている任意のエンドポイントを指定できます。
-EncodedCommand <Base64EncodedCommand>
Base 64 エンコード文字列版のコマンドを許可します。 複雑な引用符や中かっこを必要とするコマンドを PowerShell に渡す場合にこのパラメーターを使用します。 文字列は UTF-16LE 文字エンコードを使用して書式設定する必要があります。
-ExecutionPolicy <ExecutionPolicy>
現在のセッションの既定の実行ポリシーを設定し、環境変数に $env:PSExecutionPolicyPreference
保存します。 このパラメーターは、レジストリに設定されている PowerShell 実行ポリシーを変更しません。 有効な値の一覧など、PowerShell 実行ポリシーについては、「about_Execution_Policies」を参照してください。
-File - | <Filepath><Args>
File の値が の場合、-
コマンド テキストは標準入力から読み取られます。
リダイレクトされた標準入力なしでを実行すると powershell -File -
、通常のセッションが開始されます。 これは、 File パラメーターをまったく指定しないのと同じです。
File の値がファイルパスの場合、スクリプトはローカル スコープ ("dot-sourced") で実行され、スクリプトによって作成される関数と変数が現在のセッションで使用できるようになります。 スクリプト ファイルパスとパラメーターを入力します。 File は、コマンド内の最後のパラメーターにする必要があります。 File パラメーターの後に入力されたすべての値は、スクリプト ファイルパスとして解釈され、そのスクリプトに渡されるパラメーターとして解釈されます。
スクリプトに渡されるパラメーターは、(現在のシェルによる解釈の後で) リテラル文字列として渡されます。 たとえば、 cmd.exe で環境変数の値を渡す場合は、 cmd.exe 構文を使用します。 powershell.exe -File .\test.ps1 -TestParam %windir%
これに対し、cmd.exe でを実行powershell.exe -File .\test.ps1 -TestParam $env:windir
すると、スクリプトは現在のcmd.exe シェルに対して特別な意味がないため、リテラル文字列$env:windir
を受け取ります。 環境変数参照のスタイルは$env:windir
、PowerShell コードとして解釈されるため、Command パラメーター内で使用できます。
同様に、Batch スクリプトから同じコマンドを実行する場合は、 または $PSScriptRoot
の.\
代わりに を使用%~dp0
して、現在の実行ディレクトリを表しますpowershell.exe -File %~dp0test.ps1 -TestParam %windir%
。
代わりに を使用 .\test.ps1
した場合、リテラル パスが見つからないため、PowerShell でエラーがスローされます .\test.ps1
File の値が filepath の場合、File パラメーター名の後に入力された文字はスクリプト ファイルパスとして解釈され、その後にスクリプト パラメーターが続くため、File はコマンドの最後のパラメーターである必要があります。
File パラメーターの値には、スクリプト パラメーターと 値を含 めることができます。 例: -File .\Get-Script.ps1 -Domain Central
通常、スクリプトのスイッチ パラメーターは、含めるか省略するかのいずれかです。
たとえば、次のコマンドでは、スクリプト ファイルの All パラメーターを Get-Script.ps1
使用します。 -File .\Get-Script.ps1 -All
まれに、パラメーターに ブール 値を指定することが必要になる場合があります。
この方法でスクリプトを実行するときに、switch パラメーターに明示的なブール値を渡すことはできません。 この制限は、PowerShell 6 (pwsh.exe
) で削除されました。
注意
File パラメーターは、引数値の配列を必要とするパラメーターを使用するスクリプトをサポートできません。 残念ながら、これはネイティブ コマンドが引数値を取得する方法の制限です。 ネイティブ実行可能ファイル (や pwsh
などpowershell
) を呼び出すと、配列の処理がわからないため、文字列として渡されます。
スクリプト ファイルが コマンドで exit
終了すると、プロセス終了コードは コマンドで使用される数値引数に exit
設定されます。 通常の終了では、終了コードは常に 0
です。
詳細については、「about_Automatic_Variables」を参照してください$LASTEXITCODE
。
-InputFormat {Text | XML}
PowerShell に送信されるデータの形式を記述します。 有効な値は Text
、(テキスト文字列) または XML
(シリアル化された CLIXML 形式) です。
-Mta
マルチスレッド アパートメントを使用して、PowerShell を起動します。 このパラメーターは、PowerShell 3.0 で導入されました。 PowerShell 2.0 では、マルチスレッド アパートメント (MTA) が既定値です。 PowerShell 3.0 では、シングルスレッド アパートメント (STA) が既定値です。
-NoExit
スタートアップ コマンドを実行後、終了しません。
-NonInteractive
このスイッチは、ユーザー入力を必要としないセッションを作成するために使用されます。 これは、スケジュールされたタスクまたは CI/CD パイプラインで実行されるスクリプトに役立ちます。 対話型機能 (プロンプトや確認プロンプトなど Read-Host
) を使用しようとすると、ステートメントがハングするのではなく、エラーが終了します。
-NoLogo
スタートアップ時に著作権の見出しを非表示にします。
-NoProfile
PowerShell プロファイルを読み込みません。
-OutputFormat {Text | XML}
PowerShell からの出力の形式を決定します。 有効な値は Text
、(テキスト文字列) または XML
(シリアル化された CLIXML 形式) です。
-PSConsoleFile <FilePath>
指定された PowerShell コンソール ファイルを読み込みます。 コンソール ファイルの名前とパスを入力します。 コンソール ファイルを作成するには、PowerShell で Export-Console コマンドレットを使用します。
-Sta
シングルスレッド アパートメントを使用して、PowerShell を起動します。 Windows PowerShell 2.0 では、マルチスレッド アパートメント (MTA) が既定値です。 Windows PowerShell 3.0 では、シングルスレッド アパートメント (STA) が既定値です。
-Version <PowerShell バージョン>
指定したバージョンの PowerShell を起動します。 有効な値は 2.0 と 3.0 です。 指定するバージョンがシステムにインストールされている必要があります。 Windows PowerShell 3.0 がコンピューターにインストールされている場合は、"3.0" が既定のバージョンです。 それ以外の場合は、"2.0" が既定のバージョンです。 詳細については、「 PowerShell のインストール」を参照してください。
-WindowStyle <ウィンドウ スタイル>
セッションのウィンドウ スタイルを設定します。 有効な値は、Normal
、Minimized
、Maximized
、Hidden
です。
-Help、-?、/?
のヘルプを PowerShell.exe
表示します。 PowerShell セッションでコマンドをPowerShell.exe
入力する場合は、コマンド パラメーターの先頭にスラッシュ/
() ではなくハイフン (-
) を付けます。 では、ハイフンまたはスラッシュ cmd.exe
を使用できます。
REMARKS
トラブルシューティングに関する注意: PowerShell 2.0 では、PowerShell コンソールから一部のプログラムを開始すると、 LastExitCode の 0xc0000142で失敗します。
例
# Create a new PowerShell session and load a saved console file
PowerShell -PSConsoleFile sqlsnapin.psc1
# Create a new PowerShell V2 session with text input, XML output, and no logo
PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML
# Execute a PowerShell Command in a session
PowerShell -Command "Get-EventLog -LogName security"
# Run a script block in a session
PowerShell -Command {Get-EventLog -LogName security}
# An alternate way to run a command in a new session
PowerShell -Command "& {Get-EventLog -LogName security}"
# To use the -EncodedCommand parameter:
$command = "dir 'c:\program files' "
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand