Switch-Process
在 Linux 和 macOS 上,指令小子會呼叫該 execv() 函式,提供類似 POSIX shell 的行為。
語法
Default (預設值)
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
Description
有些原生 Unix 指令會跑一台(像是 ssh),然後用 bash 內建指令 exec 來產生一個新的程序來取代現有的。 預設情況下, exec 在 PowerShell 中 是無效指令。 這影響到一些已知的腳本,例如 copy-ssh-id AzCLI的子指令。
Switch-Process指令本體呼叫原生execv()函式,提供類似 POSIX shell 的行為。 此指令檔及其別名 exec,則是在 PowerShell 7.3.0 中加入的。
PowerShell 7.3.1 將別名改 exec 成一個 包裹 Switch-Process. 這個函式允許你把可能錯誤綁定到 WithCommand 參數的原生指令。
此指令小程式僅適用於非 Windows 系統。
範例
範例 1 - 執行依賴於 'exec' 的指令
這個例子假設 PowerShell 是非 Windows 系統的預設 shell。
ssh-copy-id 是一個流行的 bash 腳本,用於在目標機器上部署公鑰以進行基於金鑰的認證。 腳本依賴於 bash 指令 exec。
ssh-copy-id user@host
啟用此功能 PSExec 後, ssh-copy-id 腳本成功。
參數
-WithCommand
指定要執行的原生執行檔(及任何參數)。 所有作為參數傳遞的額外值,都會以一個字串陣列的形式傳遞,並用第一個指令執行。
目標指令必須是原生執行檔,而非 PowerShell 指令。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 0 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
String
輸出
Object
備註
此 Switch-Process 指令本是為了提供 exec 與其他 POSIX shell 相容性而創建的。 在正常情況下,這個 cmdlet 並不是設計用來用在 PowerShell 腳本裡的。
Switch-Process 與 POSIX shell 內建 exec 函式的功能不符,例如檔案描述符的處理方式,但應該能涵蓋大多數情況。