共用方式為


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[]

輸出

Object

備註

建立 Switch-Process Cmdlet 以提供 exec 相容性是其他 POSIX 殼層。 在正常情況下,Cmdlet 不適用於PowerShell腳本。 Switch-Process 與 POSIX 殼層中的內建 exec 函式沒有功能同位,例如檔案描述元的處理方式,但應該涵蓋大部分的情況。