關於 pwsh
簡短描述
說明如何使用 pwsh
命令行介面。 顯示命令行參數並描述語法。
完整描述
語法
pwsh[.exe]
[[-File] <filePath> [args]]
[-Command { - | <script-block> [-args <arg-array>]
| <string> [<CommandParameters>] } ]
[-ConfigurationName <string>]
[-CustomPipeName <string>]
[-EncodedCommand <Base64EncodedCommand>]
[-ExecutionPolicy <ExecutionPolicy>]
[-InputFormat {Text | XML}]
[-Interactive]
[-NoExit]
[-NoLogo]
[-NonInteractive]
[-NoProfile]
[-OutputFormat {Text | XML}]
[-SettingsFile <SettingsFilePath>]
[-Version]
[-WindowStyle <style>]
[-WorkingDirectory <directoryPath>]
pwsh[.exe] -h | -Help | -? | /?
參數
所有參數都不區分大小寫。
-File |-F
如果的值 File
是 -
,則會從標準輸入讀取命令文字。
在沒有重新導向的標準輸入的情況下執行 pwsh -File -
會啟動一般會話。 這與完全不指定 File
參數相同。
如果沒有參數存在,但值存在於命令行中,則這是預設參數。 指定的腳本會在本機範圍中執行 (「dot-sourced」) ,讓腳本建立的函式和變數可在目前的會話中使用。 輸入指令碼檔案路徑和任何參數。 檔案必須是命令的最後一個參數,因為在 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%
相反地,在 中cmd.exe
執行pwsh -File .\test.ps1 -TestParam $env:windir
會導致腳本接收常值字串$env:windir
,因為它對目前的cmd.exe
殼層沒有特殊意義。 $env:windir
環境變數參考的樣式可以在Command 參數內使用,因為它會解譯為 PowerShell 程式代碼。
同樣地,如果您想要從 Batch 腳本執行相同的命令,您可以使用 %~dp0
或 .\
$PSScriptRoot
來代表目前的執行目錄: pwsh -File %~dp0test.ps1 -TestParam %windir%
。 如果您改用 .\test.ps1
,PowerShell 會擲回錯誤,因為它找不到常值路徑 .\test.ps1
當腳本檔案以 exit
命令終止時,進程結束代碼會設定為與 命令搭配 exit
使用的數值自變數。 一般終止時,結束代碼一律 0
為 。
類似於 -Command
,當發生文稿終止錯誤時,結束代碼會設定為 1
。 不過,不同於 -Command
,當執行以 Ctrl-C 中斷時,結束代碼會是 0
。
-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 的值是字串, 則 Command 必須是 pwsh 的最後一個參數,因為之後的所有自變數都會解譯為要執行的命令的一部分。
從現有的PowerShell工作話內呼叫時,結果會以還原串行化 XML 物件的形式傳回父殼層,而不是實時物件。 對於其他殼層,結果會以字串的形式傳回。
如果 Command 的值是 -
,則會從標準輸入讀取命令文字。 使用 Command 參數搭配標準輸入時,您必須重新導向標準輸入。 例如:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | powershell -NoProfile -Command -
這個範例會產生下列輸出:
in
hi there
out
進程結束代碼是由文本區塊內最後一個 (執行) 命令的狀態來決定。 結束代碼是 0
當 $?
是 $true
或 1
當 為 $false
時$?
。 如果最後一個命令是外部程式,或明確設定 或 1
以外的0
結束代碼的PowerShell腳本,則會將結束代碼轉換成 1
進程結束代碼。 若要保留特定的結束代碼,請將 新增 exit $LASTEXITCODE
至命令字串或腳本區塊。
同樣地,當腳本終止 (runspace 終止) 錯誤時,就會傳回值 1,例如 throw
或 -ErrorAction Stop
,或發生於以 Ctrl-C 中斷執行時。
-ConfigurationName |-配置
指定執行 PowerShell 的組態端點。 這可以是本機計算機上註冊的任何端點,包括預設PowerShell遠端端點或具有特定使用者角色功能的自定義端點。
範例: pwsh -ConfigurationName AdminRoles
-CustomPipeName
指定要用於其他 IPC 伺服器的名稱, (命名管道) 用於偵錯和其他跨進程通訊。 這提供可預測的機制來連線到其他 PowerShell 實例。 通常與 上的 Enter-PSHostProcess
CustomPipeName 參數搭配使用。
此參數是在 PowerShell 6.2 中引進的。
例如:
# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe
-EncodedCommand |-e |-電子商務
接受命令的Base64編碼字串版本。 使用此參數將命令提交至需要複雜、巢狀引號的PowerShell。 Base64 表示法必須是 UTF-16 編碼字串。
例如:
$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 |-in |-如果
描述傳送至 PowerShell 的資料格式。 有效值為 "Text" (文字字串) 或 "XML" (序列化的 CLIXML 格式)。
-Interactive |-我
向用戶顯示互動式提示。 NonInteractive 參數的反轉。
-NoExit |-noe
執行啟動命令後不要結束。
範例: pwsh -NoExit -Command Get-Date
-NoLogo |-nol
在互動式會話啟動時隱藏著作權橫幅。
-NonInteractive |-諾麗
不向使用者顯示互動式提示。 任何嘗試使用互動式功能,例如 Read-Host
或確認提示,都會導致語句終止錯誤。
-NoProfile |-nop
不會載入 PowerShell 設定檔。
-OutputFormat |-o |-of
決定 PowerShell 的輸出格式。 有效值為 "Text" (文字字串) 或 "XML" (序列化的 CLIXML 格式)。
範例: pwsh -o XML -c Get-Date
使用 PowerShell 工作話呼叫時,您會以輸出形式取得還原串行化物件,而不是純文字字串。 從其他殼層呼叫時,輸出會格式化為 CLIXML 文字的字串數據。
-SettingsFile |-設置
覆寫會話的系統範圍 powershell.config.json
配置檔。 根據預設,系統會從 powershell.config.json
目錄中的 $PSHOME
讀取全系統設定。
請注意,自變數所 -ConfigurationName
指定的端點不會使用這些設定。
範例: pwsh -SettingsFile c:\myproject\powershell.config.json
-SSHServerMode |-sshs
用於sshd_config以 SSH 子系統身分執行 PowerShell。 它不適用於任何其他用途或支援。
-Version |-V
顯示 PowerShell 的版本。 會忽略其他參數。
-WindowStyle |-w
設定工作階段的視窗樣式。 有效值為 Normal、Minimized、Maximized 和 Hidden。
-WorkingDirectory |-Wd
在啟動時執行 來設定初始工作目錄。 支援任何有效的 PowerShell 檔案路徑。
若要在主目錄中啟動 PowerShell,請使用: pwsh -WorkingDirectory ~
-Help, -?, /?
顯示的說明 pwsh
。 如果您要在 PowerShell 中輸入 pwsh 命令,請在命令參數前面加上連字元 () -
,而不是正斜線 (/
) 。