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>] } ]
    [-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

値が is -File場合、コマンド テキストは標準入力から読み取られます。 リダイレクトされた標準入力なしで実行すると pwsh -File - 、通常のセッションが開始されます。 これは、パラメーターをまったく指定しないのと File 同じです。

これは、パラメーターが存在せず、値がコマンド ラインに存在する場合の既定のパラメーターです。 指定したスクリプトは、新しいセッションのローカル スコープ ("ドット ソース") で実行されるため、スクリプトによって作成される関数と変数は新しいセッションで使用できます。 スクリプト ファイルパスと任意のパラメーターを入力します。 File パラメーター名の後に入力されたすべての文字はスクリプト ファイルパスの後にスクリプト パラメーターが続くものとして解釈されるため、コマンドの最後のパラメーターは File である必要があります。

通常、スクリプトのスイッチ パラメーターは、含めるか省略するかのいずれかです。 たとえば、次のコマンドでは、Get-Script.ps1 スクリプト ファイルの All パラメーターを使用します。 -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) を呼び出すと、配列の処理が認識されないため、文字列として渡されます。

スクリプト ファイルがコマンドで exit 終了すると、プロセス終了コードはコマンドで使用される数値引数に exit 設定されます。 通常の終了では、終了コードは常に 0.

詳細については、about_Automatic_Variables参照してください$LASTEXITCODE

同様に -Command、スクリプト終了エラーが発生すると、終了コードは 1. ただし、Ctrl+C-Command実行が中断されたときとは異なり、終了コードは .0

Note

PowerShell 7.2 の時点では、File パラメーターは Windows 上の.ps1ファイルのみを受け入れます。 別のファイルの種類が指定されている場合は、エラーがスローされます。 この動作は Windows 固有です。 他のプラットフォームでは、PowerShell は他の種類のファイルの実行を試みます。

-Command | -c

指定したコマンド (およびパラメーター) を PowerShell コマンド プロンプトで入力した場合と同様に実行し、パラメーターが指定されていない限り NoExit 終了します。

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"
'@ | powershell -NoProfile -Command -

この例を実行すると、次の出力が生成されます。

in
hi there
out

プロセス終了コードは、スクリプト ブロック内の最後の (実行された) コマンドの状態によって決まります。 終了コードは、0次の場合または1いつ$?$?$trueです。$false 最後のコマンドが外部プログラムの場合、または終了コード以外01の終了コードを明示的に設定する PowerShell スクリプトの場合、その終了コードはプロセス終了コードに1変換されます。 特定の終了コードを保持するには、コマンド文字列またはスクリプト ブロックに追加 exit $LASTEXITCODE します。

詳細については、about_Automatic_Variables参照してください$LASTEXITCODE

同様に、値 1 は、スクリプト終了 (runspace-terminating) エラー throw (a や -ErrorAction Stop、 など) が発生した場合、または Ctrl C+実行が中断されたときに返されます。

-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します。 これには、編集する管理者特権が必要です。
  • 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 コマンドを入力する場合は、コマンド パラメーターの先頭にスラッシュ () ではなくハイフン (-/) を付けます。