Delen via


Switch-Process

In Linux en macOS roept de cmdlet de execv() functie aan om vergelijkbaar gedrag te bieden als POSIX-shells.

Syntax

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

Description

Sommige systeemeigen Unix-opdrachten worden uitgevoerd om iets (zoals ssh) uit te voeren en de bash ingebouwde opdracht exec te gebruiken om een nieuw proces te maken dat de huidige vervangt. Is standaard exec geen geldige opdracht in PowerShell. Dit is van invloed op enkele bekende scripts, zoals copy-ssh-id en enkele subopdrachten van AzCLI.

De Switch-Process cmdlet roept de systeemeigen execv() functie aan om vergelijkbaar gedrag te bieden als POSIX-shells. Deze cmdlet en de alias, execzijn toegevoegd in PowerShell 7.3.0.

PowerShell 7.3.1 heeft de exec alias gewijzigd in een functie die wordt verpakt Switch-Process. Met de functie kunt u parameters doorgeven aan de systeemeigen opdracht die mogelijk per ongeluk is gebonden aan de parameter WithCommand .

Deze cmdlet is alleen beschikbaar voor niet-Windows-systemen.

Voorbeelden

Voorbeeld 1: Voer een opdracht uit die afhankelijk is van 'exec'

In dit voorbeeld wordt ervan uitgegaan dat PowerShell de standaardshell is op een niet-Windows-systeem. ssh-copy-id is een populair bash-script voor het implementeren van openbare sleutels op doelcomputers voor verificatie op basis van sleutels. Het script is afhankelijk van de bash-opdracht. exec

ssh-copy-id user@host

Als de PSExec functie is ingeschakeld, slaagt het ssh-copy-id script.

Parameters

-WithCommand

Hiermee geeft u het systeemeigen uitvoerbare bestand (en eventuele parameters) moet worden uitgevoerd. Alle extra waarden die als argumenten worden doorgegeven, worden doorgegeven als een matrix met tekenreeksen die moeten worden uitgevoerd met de eerste opdracht.

De doelopdracht moet een systeemeigen uitvoerbaar bestand zijn, niet een PowerShell-opdracht.

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

Invoerwaarden

String[]

Uitvoerwaarden

Object

Notities

De Switch-Process cmdlet is gemaakt om compatibiliteit te bieden exec , zijn andere POSIX-shells. Onder normale omstandigheden is de cmdlet niet bedoeld voor gebruik in PowerShell-scripts. Switch-Process heeft geen functiepariteit met de ingebouwde functie in POSIX-shells exec , zoals hoe bestandsdescriptors worden verwerkt, maar moet in de meeste gevallen worden behandeld.