簡短描述
說明如何使用 pwsh 命令-line 介面。 顯示命令-line 參數並描述語法。
完整描述
如需 Windows PowerShell 5.1 命令 ine 選項的相關信息-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 的值可以是 - 或 filepath 和選擇性參數。 如果 File 的值是 -,則會從標準輸入讀取命令。
如果沒有參數存在,但命令行中有值,則這是預設參數。 指定的腳本會在新會話的本機範圍 (“dot-sourced”) 中執行,讓腳本所建立的函式和變數可在新的會話中使用。 輸入腳本 filepath 和任何參數。 檔案必須是命令中的最後一個參數,因為在 File 參數名稱之後輸入的所有字元都會解譯為腳本 filepath,後面接著腳本參數。
一般而言,腳本的 switch 參數會包含或省略。
例如,下列命令會使用 參數:Get-Script.ps1
在罕見的情況下,您可能需要提供 switch 參數的布爾 值。 若要在 File 參數的值中提供
傳遞至腳本的參數會在由目前殼層解譯之後,以常值字串的形式傳遞。 例如,如果您位於 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環境變數參考的樣式可以在 Command 參數內使用,因為它被解譯為 PowerShell 程式代碼。
同樣地,如果您想要從 Batch 腳本執行相同的命令,您可以使用 %~dp0 而非 .\ 或 $PSScriptRoot 來表示目前的執行目錄: pwsh -File %~dp0test.ps1 -TestParam %windir%。 如果您改用 .\test.ps1 ,PowerShell 會擲回錯誤,因為它找不到常值路徑 .\test.ps1
注意
File 參數無法使用預期自變數值陣列的參數來支援腳本。 不幸的是,這是原生命令取得自變數值的方式限制。 當您呼叫原生可執行檔(例如 powershell 或 pwsh)時,它不知道該怎麼處理陣列,因此它會以字串的形式傳遞。
如果 File 的值是 -,則會從標準輸入讀取命令。
在沒有重新導向標準輸入的情況下執行 pwsh -File - 會啟動一般會話。 這與完全不指定 File 參數相同。 從標準輸入讀取時,輸入語句會一次執行一個語句,就像是在 PowerShell 命令提示字元中輸入一樣。 如果語句無法正確剖析,則不會執行 語句。 進程結束代碼取決於輸入中最後一個 (executed) 命令的狀態。 一般終止時,結束代碼一律 0為 。 當文稿檔案以 exit 命令終止時,進程結束代碼會設定為搭配 exit 命令使用的數值自變數。
類似於 -Command,當發生文稿終止錯誤時,結束代碼會設定為 1。 不過,不同於 -Command,當執行以 Ctrl時,結束代碼為 。+ 如需詳細資訊,請參閱 $LASTEXITCODE about_Automatic_Variables。
注意
從 PowerShell 7.2 起, File 參數只接受 .ps1 Windows 上的檔案。 如果提供另一個檔類型,則會擲回錯誤。 此行為是 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 的值是字串,則 Command 必須是 pwsh 的最後一個參數,因為後續的所有自變數都會解譯為要執行的命令的一部分。
從現有的PowerShell工作話內呼叫時,結果會以還原串行化 XML 物件的形式傳回父殼層,而不是實時物件。 對於其他殼層,結果會以字串的形式傳回。
如果 Command 的值是 -,則會從標準輸入讀取命令。 使用命令參數搭配標準輸入時,您必須重新導向標準輸入。 例如:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | pwsh -NoProfile -Command -
這個範例會產生下列輸出:
in
hi there
out
從標準輸入讀取時,輸入會一次剖析並執行一個語句,就像是在 PowerShell 命令提示字元中輸入一樣。 如果輸入程式代碼無法正確剖析,則不會執行 語句。 除非您使用 -NoExit 參數,否則當沒有從標準輸入讀取的輸入時,PowerShell 會話就會結束。
進程結束代碼取決於輸入中最後一個 (executed) 命令的狀態。 結束代碼是 0 當 $? 是 $true 或 1 當 為 $?時$false。 如果最後一個命令是外部程式或明確設定 或 0以外的1結束代碼的PowerShell腳本,則會將1結束代碼轉換成進程結束代碼。 同樣地,當腳本終止 (runspace-terminating) 錯誤,例如 throw 或 -ErrorAction Stop發生,或執行以 Ctrl+C 中斷時,就會傳回值 1。
若要保留特定的結束代碼,請將 新增 exit $LASTEXITCODE 至您的命令字串或腳本區塊。 如需詳細資訊,請參閱 $LASTEXITCODE about_Automatic_Variables。
-CommandWithArgs |-cwa
這是在 7.4 中新增的實驗性功能,並成為 PowerShell 7.5-preview.5 的主流功能。
使用自變數執行 PowerShell 命令。 不同於 -Command,此參數會填入 $args 命令可使用的已建-i置 n 變數。
第一個字串是 命令。 以空格符分隔的其他字串是自變數。
例如:
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
這個範例會產生下列輸出:
arg: arg1
arg: arg2
注意
以引號 剖析自變數會導致範例在 或 cmd.exepowershell.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 實例的可預測機制。 通常搭配 參數使用。
此參數是在 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作為登入殼層。 如果在另一個位置傳遞此參數,則會忽略此參數。
若要在 Unixpwshike作系統上將 -l 設定為登入殼層:
確認的完整絕對路徑
pwsh列在 底下/etc/shells- 此路徑通常是在Linux或
/usr/bin/pwshmacOS上類似/usr/local/bin/pwsh - 使用某些安裝方法時,此專案會在安裝時間自動新增
- 如果
pwsh不在 中/etc/shells,請使用編輯器將路徑附加至pwsh最後一行。 這需要提高的許可權才能編輯。
- 此路徑通常是在Linux或
使用 chsh 公用程式將目前使用者的殼層設定為
pwsh:chsh -s /usr/bin/pwsh
警告
Windows 子系統 Linux 版 (WSL) 目前不支援將登入殼層設定pwsh為登入殼層,而且嘗試設定pwsh為登入殼層,可能會導致無法以互動方式啟動WSL。
-MTA
使用多線程 Apartment 啟動 PowerShell。 此參數僅適用於 Windows。 在非 Windows 平臺上使用此參數會導致錯誤。
-NoExit |-noe
在執行啟動命令之後,不會結束。
範例: pwsh -NoExit -Command Get-Date
-NoLogo |-nol
在互動式會話啟動時隱藏橫幅。
-NonInteractive |-noni
此參數是用來建立不應該需要使用者輸入的會話。 這適用於在排程工作或 CI/CD 管線中執行的腳本。 任何嘗試使用互動式功能,例如 Read-Host 或確認提示,都會導致語句終止錯誤,而不是停止回應。
-NoProfile |-nop
不會載入 PowerShell 設定檔。
-NoProfile載入時間
隱藏載入時間超過 500 毫秒時啟動時顯示的 PowerShell 配置檔載入時間文字。
-OutputFormat |-o |-of
決定如何格式化 PowerShell 的輸出。 有效值為 「Text」 (文字字串) 或 「XML」 (串行化 CLIXML 格式)。
範例: pwsh -o XML -c Get-Date
在 PowerShell 工作階段內呼叫時,您會取得還原串行化的物件作為輸出而非純文字字串。 從其他殼層呼叫時,輸出會格式化為 CLIXML 文字的字串數據。
-SettingsFile |-settings
覆寫會話的系統-wide powershell.config.json 配置檔。 根據預設,系統會從 -w 目錄中的 powershell.config.json 讀取系統$PSHOMEide 設定。
請注意,自變數所 -ConfigurationName 指定的端點不會使用這些設定。
範例: pwsh -SettingsFile C:\myproject\powershell.config.json
-SSHServerMode |-sshs
用於sshd_config以 SSH 子系統身分執行 PowerShell。 它不適用於或支援任何其他用途。
-STA
使用單個線程 Apartment 啟動 PowerShell。 這是預設值。 此參數只能在 Windows 平臺上使用。 在非 Windows 平臺上使用此參數會導致錯誤。
-Version |-v
顯示此 PowerShell 可執行檔的版本。 會忽略其他參數。
-WindowStyle |-w
設定工作階段的視窗樣式。 有效值為 Normal、Minimized、Maximized 和 Hidden。 此參數僅適用於 Windows。 在非 Windows 平臺上使用此參數會導致錯誤。
-WorkingDirectory | -wd-w|o
在啟動時執行 來設定初始工作目錄。 支援任何有效的 PowerShell 檔案路徑。
若要在主目錄中啟動 PowerShell,請使用: pwsh -WorkingDirectory ~
-Help、-?, /?
顯示的說明 pwsh。 如果您要在PowerShell中輸入 pwsh 命令,請在命令參數前面加上連字元 (-),而不是正斜線 (/)。