about_Pwsh
簡単な説明
コマンド-line インターフェイスのpwsh
使用方法について説明します。 コマンド-line パラメーターを表示し、構文について説明します。
詳細な説明
Windows PowerShell 5.1 のコマンド-l入力オプションについては、about_PowerShell_exeを参照してください。
構文
Usage: pwsh[.exe]
[-Login]
[[-File] <filePath> [args]]
[-Command { - | <script-block> [-args <arg-array>]
| <string> [<CommandParameters>] } ]
[[-CommandWithArgs <string>] [<CommandParameters>]]
[-ConfigurationFile <filePath>]
[-ConfigurationName <string>]
[-CustomPipeName <string>]
[-EncodedCommand <Base64EncodedCommand>]
[-ExecutionPolicy <ExecutionPolicy>]
[-InputFormat {Text | XML}]
[-Interactive]
[-MTA]
[-NoExit]
[-NoLogo]
[-NonInteractive]
[-NoProfile]
[-NoProfileLoadTime]
[-OutputFormat {Text | XML}]
[-SettingsFile <filePath>]
[-SSHServerMode]
[-STA]
[-Version]
[-WindowStyle <style>]
[-WorkingDirectory <directoryPath>]
pwsh[.exe] -h | -Help | -? | /?
パラメーター
すべてのパラメーターは、大文字-iと小文字が区別されます。
-File | -f
File の値には、ファイルパスと省略可能なパラメーターを指定できます-
。 File の値が指定されている場合、-
コマンドは標準入力から読み取られます。
これは、パラメーターが存在せず、値がコマンド ラインに存在する場合の既定のパラメーターです。 指定したスクリプトは、新しいセッションのローカル スコープ ("ドット ソース") で実行されるため、スクリプトによって作成される関数と変数は新しいセッションで使用できます。 スクリプト ファイルパスと任意のパラメーターを入力します。 File パラメーター名の後に入力されたすべての文字はスクリプト ファイルパスの後にスクリプト パラメーターが続くものとして解釈されるため、コマンドの最後のパラメーターは File である必要があります。
通常、スクリプトのスイッチ パラメーターは、含めるか省略するかのいずれかです。
たとえば、次のコマンドはスクリプト ファイルの All パラメーターを Get-Script.ps1
使用します。 -File .\Get-Script.ps1 -All
まれに、switch パラメーターにブール値を指定することが必要になる場合があります。 File パラメーターの値に switch パラメーターのブール値を指定するには、通常、パラメーターの直後にコロンとブール値を指定します。次に例を示します-File .\Get-Script.ps1 -All:$False
。
スクリプトに渡されるパラメーターは、(現在のシェルによる解釈の後で) リテラル文字列として渡されます。 たとえば、環境変数の cmd.exe
値を渡す場合は、次の構文を cmd.exe
使用します。 pwsh -File .\test.ps1 -TestParam %windir%
これに対し、スクリプトで実行するとpwsh -File .\test.ps1 -TestParam $env:windir
、現在cmd.exe
のシェルに対して特別な意味がないため、リテラル文字列$env:windir
を受け取cmd.exe
ります。 環境変数参照のスタイルは$env:windir
、PowerShell コードとして解釈されるため、Command パラメーター内で使用できます。
同様に、Batch スクリプトから同じコマンドを実行する場合は、現在の実行ディレクトリではなく、または$PSScriptRoot
現在の.\
実行ディレクトリを表すために使用%~dp0
しますpwsh -File %~dp0test.ps1 -TestParam %windir%
。 代わりに使用 .\test.ps1
すると、リテラル パスが見つからないため、PowerShell によってエラーがスローされます .\test.ps1
Note
File パラメーターは、引数値の配列を想定するパラメーターを使用するスクリプトをサポートできません。 残念ながら、これはネイティブ コマンドが引数値を取得する方法の制限です。 ネイティブ実行可能ファイル (またはpwsh
などpowershell
) を呼び出すと、配列の処理が認識されないため、文字列として渡されます。
File の値が指定されている場合、-
コマンドは標準入力から読み取られます。
リダイレクトされた標準入力なしで実行すると pwsh -File -
、通常のセッションが開始されます。 これは、パラメーターをまったく指定しないのと File
同じです。 標準入力から読み取ると、入力ステートメントは PowerShell コマンド プロンプトで入力されたかのように、一度に 1 つのステートメントが実行されます。 ステートメントが正しく解析されない場合、ステートメントは実行されません。 プロセス終了コードは、入力内の最後の (実行された) コマンドの状態によって決まります。 通常の終了では、終了コードは常に 0
. スクリプト ファイルがコマンドで exit
終了すると、プロセス終了コードはコマンドで使用される数値引数に exit
設定されます。
同様に -Command
、スクリプト終了エラーが発生すると、終了コードは 1
. ただし、Ctrl+C で-Command
実行が中断されたときとは異なり、終了コードは .0
詳細については、about_Automatic_Variablesを参照してください$LASTEXITCODE
。
Note
PowerShell 7.2 の時点では、File パラメーターは Windows 上の.ps1
ファイルのみを受け入れます。 別のファイルの種類が指定されている場合は、エラーがスローされます。 この動作は Windows 固有です。 他のプラットフォームでは、PowerShell は他の種類のファイルの実行を試みます。
-Command | -c
Command の値には、スクリプト ブロック、または文字列を指定できます-
。 Command の値が指定されている場合、-
コマンド テキストは標準入力から読み取られます。
Command パラメーターは、Command に渡された値を ScriptBlock 型として認識できる場合にのみ、実行用のスクリプト ブロックを受け入れます。 これは、別の PowerShell ホストから実行pwsh
されている場合にのみ可能です。 ScriptBlock 型は、渡される前に、既存の変数に含まれるか、式から返されるか、または PowerShell ホストによって中かっこ ({}
) で囲まれたリテラル スクリプト ブロックとして解析できますpwsh
。
pwsh -Command {Get-WinEvent -LogName security}
ではcmd.exe
、スクリプト ブロック (または ScriptBlock 型) は存在しないため、Command に渡される値は常に文字列です。 スクリプト ブロックは文字列内に記述できますが、実行される代わりに、一般的な PowerShell プロンプトで入力したのとまったく同じように動作し、スクリプト ブロックの内容が出力されます。
Command に渡された文字列は引き続き PowerShell コードとして実行されるため、スクリプト ブロックの中かっこは、最初の場所でcmd.exe
実行するときに必要になることが少なくありません。 文字列内で定義されたインライン スクリプト ブロックを実行するには、呼び出し演算子&
を使用できます。
pwsh -Command "& {Get-WinEvent -LogName security}"
Command の値が文字列の場合は、その後のすべての引数が実行するコマンドの一部として解釈されるため、コマンドは pwsh の最後のパラメーターである必要があります。
既存の PowerShell セッション内から呼び出されると、結果は、ライブ オブジェクトではなく逆シリアル化された XML オブジェクトとして親シェルに返されます。 他のシェルの場合、結果は文字列として返されます。
Command の値が指定されている場合、-
コマンドは標準入力から読み取られます。 標準入力で Command パラメーターを使用する場合は、標準入力をリダイレクトする必要があります。 次に例を示します。
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | pwsh -NoProfile -Command -
この例を実行すると、次の出力が生成されます。
in
hi there
out
標準入力から読み取ると、PowerShell コマンド プロンプトで入力されたかのように、入力が解析され、一度に 1 つのステートメントが実行されます。 入力コードが正しく解析されない場合、ステートメントは実行されません。 パラメーターを -NoExit
使用しない限り、PowerShell セッションは、標準入力から読み取る入力がなくなったときに終了します。
プロセス終了コードは、入力内の最後の (実行された) コマンドの状態によって決まります。 終了コードは、0
次の場合または1
いつ$?
$?
$true
です。$false
最後のコマンドが外部プログラムの場合、または終了コード以外0
1
の終了コードを明示的に設定する PowerShell スクリプトの場合、その終了コードはプロセス終了コードに1
変換されます。 同様に、値 1 は、スクリプト終了 (runspace-terminating) エラー throw
(a や -ErrorAction Stop
、 など) が発生した場合、または Ctrl C で+実行が中断されたときに返されます。
特定の終了コードを保持するには、コマンド文字列またはスクリプト ブロックに追加 exit $LASTEXITCODE
します。 詳細については、about_Automatic_Variablesを参照してください$LASTEXITCODE
。
-CommandWithArgs | -cwa
これは、7.4 で追加された試験的な機能です。
引数を使用して PowerShell コマンドを実行します。 異なり -Command
、このパラメーターは、コマンドで $args
使用できるビルドされた-in 個の変数を設定します。
最初の文字列はコマンドです。 空白で区切られた追加の文字列は引数です。
次に例を示します。
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
この例を実行すると、次の出力が生成されます。
arg: arg1
arg: arg2
Note
引用符を使用した引数の解析では、この例が実行されたcmd.exe
powershell.exe
場合に失敗します。 それらから実行するには、次のコマンドを使用できます。
REM Quoting required when run from cmd.exe
pwsh -CommandWithArgs "$args | % { ""arg: $_"" }" arg1 arg2
# Quoting required when run from powershell.exe
pwsh -CommandWithArgs '"$args | % { ""arg: $_"" }"' arg1 arg2
-ConfigurationName | -config
PowerShell を実行する構成エンドポイントを指定します。 既定の PowerShell リモート処理エンドポイントや、特定のユーザー ロール機能を持つカスタム エンドポイントなど、ローカル コンピューターに登録されている任意のエンドポイントを指定できます。
例: pwsh -ConfigurationName AdminRoles
-ConfigurationFile
セッション構成 (.pssc
) ファイル パスを指定します。 構成ファイルに含まれる構成は、PowerShell セッションに適用されます。
例: pwsh -ConfigurationFile "C:\ProgramData\PowerShell\MyConfig.pssc"
-CustomPipeName
デバッグやその他のクロスプロセス通信に使用される追加の IPC サーバー (名前付きパイプ) に使用する名前を指定します。 これにより、他の PowerShell インスタンスに接続するための予測可能なメカニズムが提供されます。 通常、CustomPipeName パラメーターと共に使用されますEnter-PSHostProcess
。
このパラメーターは、PowerShell 6.2 で導入されました。
次に例を示します。
# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe
-EncodedCommand | -e | -ec
Base64-encoded 文字列バージョンのコマンドを受け入れます。 このパラメーターを使用して、複雑で入れ子になった引用符を必要とするコマンドを PowerShell に送信します。 Base64 表現は、UTF-16LE でエンコードされた文字列である必要があります。
次に例を示します。
$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -encodedcommand $encodedCommand
-ExecutionPolicy | -ex | -ep
現在のセッションの既定の実行ポリシーを設定し、環境変数に $env:PSExecutionPolicyPreference
保存します。 このパラメーターは、永続的に構成された実行ポリシーを変更しません。
このパラメーターは Windows コンピューターにのみ適用されます。 Windows 以外のプラットフォームでは、パラメーターと指定された値は無視されます。
-InputFormat | -inp | -if
PowerShell に送信されるデータの形式を記述します。 使用できる値は、"Text" (テキスト文字列) と "XML" (シリアル化された CLIXML 形式) です。
-Interactive | -i
ユーザーに対話型プロンプトを表示します。 NonInteractive パラメーターの逆関数。
-Login | -l
Linux および macOS では、/bin/sh を使用してログイン シェルとして PowerShell を起動し、/etc/profile や ~/.profile などのログイン プロファイルを実行します。 Windows では、このスイッチは何も行いません。
重要
このパラメーターは、ログイン シェルとして PowerShell を起動するために最初に指定する必要があります。 このパラメーターは、別の位置で渡される場合は無視されます。
UNIX-like オペレーティング システムでログイン シェルとして設定pwsh
するには:
完全な絶対パスが次の下に
pwsh
表示されていることを確認します。/etc/shells
- 通常、このパスは Linux や
/usr/local/bin/pwsh
macOS の場合のようになります/usr/bin/pwsh
。 - 一部のインストール方法では、このエントリはインストール時に自動的に追加されます
- 存在しない場合
pwsh
は、エディターを使用して最後の行にパスをpwsh
追加/etc/shells
します。 これには、編集する管理者特権が必要です。
- 通常、このパスは Linux や
chsh ユーティリティを使用して、現在のユーザーのシェルを次の値に
pwsh
設定します。chsh -s /usr/bin/pwsh
警告
ログイン シェルとしての設定pwsh
は現在、Linux 用 Windows サブシステム (WSL) ではサポートされていません。ログイン シェルとして設定pwsh
しようとすると、WSL を対話形式で起動できなくなる可能性があります。
-MTA
マルチスレッド アパートメントを使用して PowerShell を起動します。 このスイッチは Windows でのみ使用できます。 Windows 以外のプラットフォームでこのパラメーターを使用すると、エラーが発生します。
-NoExit | -noe
スタートアップ コマンドを実行後、終了しません。
例: pwsh -NoExit -Command Get-Date
-NoLogo | -nol
対話型セッションの起動時にバナーを非表示にします。
-NonInteractive | -noni
このスイッチは、ユーザー入力を必要としないセッションを作成するために使用されます。 これは、スケジュールされたタスクまたは CI/CD パイプラインで実行されるスクリプトに役立ちます。 対話機能 (確認プロンプトなど Read-Host
) を使用しようとすると、ステートメントがハングするのではなく、エラーが終了します。
-NoProfile | -nop
PowerShell プロファイルは読み込まれません。
-NoProfileLoadTime
読み込み時間が 500 ミリ秒を超えると、起動時に表示される PowerShell プロファイルの読み込み時間テキストを非表示にします。
-OutputFormat | -o | -of
PowerShell からの出力の形式を決定します。 使用できる値は、"Text" (テキスト文字列) と "XML" (シリアル化された CLIXML 形式) です。
例: pwsh -o XML -c Get-Date
PowerShell セッション内で呼び出されると、逆シリアル化されたオブジェクトが出力ではなくプレーンな文字列として取得されます。 他のシェルから呼び出されると、出力は CLIXML テキストとして書式設定された文字列データになります。
-SettingsFile | -settings
セッションのシステム-wIDE powershell.config.json
設定ファイルをオーバーライドします。 既定では、システム-wIDE 設定はディレクトリ内$PSHOME
からpowershell.config.json
読み取られます。
これらの設定は、引数で指定されたエンドポイントでは -ConfigurationName
使用されません。
例: pwsh -SettingsFile c:\myproject\powershell.config.json
-SSHServerMode | -sshs
powerShell を SSH サブシステムとして実行するためにsshd_configで使用されます。 これは、他の用途に対して意図またはサポートされていません。
-STA
シングル スレッド アパートメントを使用して PowerShell を起動します。 これが既定です。 このスイッチは、Windows プラットフォームでのみ使用できます。 Windows 以外のプラットフォームでこのパラメーターを使用すると、エラーが発生します。
-Version | -v
この PowerShell 実行可能ファイルのバージョンを表示します。 追加のパラメーターは無視されます。
-WindowStyle | -w
セッションのウィンドウ スタイルを設定します。 使用できる値は、Normal、Minimized、Maximized、Hidden です。 このパラメーターは Windows にのみ適用されます。 Windows 以外のプラットフォームでこのパラメーターを使用すると、エラーが発生します。
-WorkingDirectory | -wd | -wo
起動時に実行することで、最初の作業ディレクトリを設定します。 有効な PowerShell ファイル パスがサポートされています。
ホーム ディレクトリで PowerShell を起動するには、次のコマンドを使用します。 pwsh -WorkingDirectory ~
-Help, -?, /?
のヘルプを表示します pwsh
。 PowerShell で pwsh コマンドを入力する場合は、コマンド パラメーターの先頭にスラッシュ () ではなくハイフン (-
/
) を付けます。
PowerShell