about_Pwsh

簡単な説明

コマンド-line インターフェイスを使用するpwsh方法について説明します。 コマンド-line パラメーターを表示し、構文について説明します。

長い説明

構文

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 同じです。

これは、パラメーターが存在しないが、コマンド ラインに値が存在する場合の既定のパラメーターです。 指定されたスクリプトはローカル スコープ ("dot-sourced") で実行されるため、スクリプトによって作成される関数と変数は現在のセッションで使用できます。 スクリプト ファイルのパスと (存在する場合) パラメーターを入力します。 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

注意

File パラメーターは、引数値の配列を受け取るパラメーターを使用するスクリプトをサポートできません。 残念ながら、これはネイティブ コマンドが引数値を取得する方法の制限です。 ネイティブ実行可能ファイル (またはpwshなどpowershell) を呼び出すと、配列の処理がわからないため、文字列として渡されます。

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

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

注意

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 最後のコマンドが外部プログラムまたは PowerShell スクリプトで、その終了コード以外の終了コードを 0 明示的に設定する場合、 1その終了コードはプロセス終了コードに 1 変換されます。 特定の終了コードを保持するには、コマンド文字列またはスクリプト ブロックに追加 exit $LASTEXITCODE します。

同様に、値 1 は、スクリプト終了 (runspace-terminating) エラー (a や throw-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 コンピューターにのみ適用されます。 環境変数は $env:PSExecutionPolicyPreference 、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
    • インストール方法によっては、インストール時にこのエントリが自動的に追加されます
    • 存在/etc/shellsしない場合pwshは、エディターを使用して、最後の行のパスをpwsh追加します。 これには、編集する管理者特権が必要です。
  • chsh ユーティリティを使用して、現在のユーザーのシェルを次にpwsh設定します。

    chsh -s /usr/bin/pwsh
    

警告

ログイン シェルとしての設定pwshは現在、Linux 用 Windows サブシステム (WSL) ではサポートされていないため、ログイン シェルとして設定pwshしようとすると、WSL を対話形式で起動できなくなる可能性があります。

-MTA

マルチスレッド アパートメントを使用して PowerShell を起動します。 このスイッチは 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 プラットフォームでのみ使用できます。

-Version | -v

PowerShell のバージョンを表示します。 追加のパラメーターは無視されます。

-WindowStyle | -w

セッションのウィンドウ スタイルを設定します。 使用できる値は、Normal、Minimized、Maximized、Hidden です。

-WorkingDirectory | -wd

起動時に実行して、最初の作業ディレクトリを設定します。 有効な PowerShell ファイル パスがサポートされています。

ホーム ディレクトリで PowerShell を起動するには、次のコマンドを使用します。 pwsh -WorkingDirectory ~

-Help, -?, /?

のヘルプを表示します pwsh。 PowerShell で pwsh コマンドを入力する場合は、コマンド パラメーターの前にスラッシュ () ではなくハイフン (-/) を付けます。