Switch-Process

在 Linux 和 macOS 上,Cmdlet 會呼叫 函 execv() 式,以提供與 POSIX 殼層類似的行為。

Syntax

Switch-Process
      [[-WithCommand] <String[]>]
      [<CommonParameters>]

Description

某些原生 Unix 命令會殼層執行某些專案(例如 ssh),並使用 bash 內建命令 exec 來繁衍取代目前進程的新進程。 根據預設, exec PowerShell 中不是有效的命令。 這會影響一些已知的腳本,例如 copy-ssh-id AzCLI 的一些子命令。

Cmdlet 會 Switch-Process 呼叫原生 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命令。

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

String[]

輸出

Object

備註

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