Dela via


Switch-Process

I Linux och macOS anropar cmdleten funktionen execv() för att tillhandahålla liknande beteende som POSIX-gränssnitt.

Syntax

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

Description

Vissa inbyggda Unix-kommandon kör något (till exempel ssh) och använder det bash inbyggda kommandot exec för att skapa en ny process som ersätter den aktuella. Som standard är exec inte ett giltigt kommando i PowerShell. Detta påverkar vissa kända skript som copy-ssh-id och vissa underkommandon för AzCLI.

Cmdleten Switch-Process anropar funktionen native execv() för att tillhandahålla liknande beteende som POSIX-gränssnitt. Den här cmdleten och dess alias, exec, lades till i PowerShell 7.3.0.

PowerShell 7.3.1 ändrade exec alias till en funktion som omsluter Switch-Process. Med funktionen kan du skicka parametrar till det interna kommandot som kan ha felaktigt bundet till parametern WithCommand.

Den här cmdleten är endast tillgänglig för system som inte är Windows-system.

Exempel

Exempel 1 – Kör ett kommando som är beroende av "exec"

Det här exemplet förutsätter att PowerShell är standardgränssnittet i ett system som inte är Windows. ssh-copy-id är ett populärt bash-skript för att distribuera offentliga nycklar på måldatorer för nyckelbaserad autentisering. Skriptet beror på bash-kommandot exec.

ssh-copy-id user@host

Med funktionen PSExec aktiverad lyckas ssh-copy-id-skriptet.

Parametrar

-WithCommand

Anger den inbyggda körbara filen (och eventuella parametrar) som ska köras. Alla ytterligare värden som skickas som argument skickas som en matris med strängar som ska köras med det första kommandot.

Målkommandot måste vara en intern körbar fil, inte ett PowerShell-kommando.

Typ:String[]
Position:0
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

String[]

Utdata

Object

Kommentarer

Cmdleten Switch-Process skapades för att ge exec kompatibilitet är andra POSIX-gränssnitt. Under normala förhållanden är cmdleten inte avsedd att användas i PowerShell-skript. Switch-Process har inte funktionsparitet med den inbyggda exec funktionen i POSIX-gränssnitt, till exempel hur filbeskrivningar hanteras, men bör omfatta de flesta fall.