Switch-Process
In Linux en macOS roept de cmdlet de execv()
functie aan om vergelijkbaar gedrag te bieden als POSIX-shells.
Syntaxis
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, exec
zijn 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 |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
String[]
Uitvoerwaarden
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.