Switch-Process
在 Linux 和 macOS 上,Cmdlet 會呼叫 execv()
函式,以提供與 POSIX 殼層類似的行為。
語法
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
Description
某些原生 Unix 命令會殼層執行某些專案(例如 ssh),並使用 bash
內建命令 exec
來繁衍取代目前進程的新進程。 根據預設,exec
不是PowerShell中的有效命令。 這會影響一些已知的腳本,例如 copy-ssh-id
和 AzCLI 的一些子命令。
Switch-Process
Cmdlet 會呼叫原生 execv()
函式,以提供與 POSIX 殼層類似的行為。 此 Cmdlet 及其別名 exec
已新增至 PowerShell 7.3.0。
PowerShell 7.3.1 已將 exec
別名變更為包裝 Switch-Process
的函式。 函式可讓您將參數傳遞至可能錯誤地系結至withCommand 參數 原生命令。
此 Cmdlet 僅適用於非 Windows 系統。
範例
範例 1 - 執行相依於 'exec' 的命令
此範例假設 PowerShell 是非 Windows 系統上的預設殼層。
ssh-copy-id
是熱門的Bash腳本,可用來在目標電腦上部署公鑰以進行金鑰型驗證。 文稿取決於bash命令,exec
。
ssh-copy-id user@host
啟用 PSExec
功能后,ssh-copy-id
腳本就會成功。
參數
-WithCommand
指定要執行的原生可執行檔(以及任何參數)。 作為自變數傳遞的所有額外值都會以字串陣列的形式傳遞,以使用第一個命令執行。
目標命令必須是原生可執行檔,而不是PowerShell命令。
類型: | String[] |
Position: | 0 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
String[]
輸出
備註
建立 Switch-Process
Cmdlet 以提供 exec
相容性是其他 POSIX 殼層。 在正常情況下,Cmdlet 不適用於PowerShell腳本。
Switch-Process
與 POSIX 殼層中的內建 exec
函式沒有功能同位,例如檔案描述元的處理方式,但應該涵蓋大部分的情況。