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 函式的功能不符,例如檔案描述符的處理方式,但應該能涵蓋大多數情況。