Delen via


about_Pwsh

Korte beschrijving

Hierin wordt uitgelegd hoe u de pwsh opdracht-line-interface gebruikt. Geeft de ine-parameters van de opdracht-lweer en beschrijft de syntaxis.

Lange beschrijving

Syntaxis

pwsh[.exe]
   [[-File] <filePath> [args]]
   [-Command { - | <script-block> [-args <arg-array>]
                 | <string> [<CommandParameters>] } ]
   [-ConfigurationName <string>]
   [-CustomPipeName <string>]
   [-EncodedCommand <Base64EncodedCommand>]
   [-ExecutionPolicy <ExecutionPolicy>]
   [-InputFormat {Text | XML}]
   [-Interactive]
   [-Login]
   [-MTA]
   [-NoExit]
   [-NoLogo]
   [-NonInteractive]
   [-NoProfile]
   [-OutputFormat {Text | XML}]
   [-SettingsFile <SettingsFilePath>]
   [-SSHServerMode]
   [-STA]
   [-Version]
   [-WindowStyle <style>]
   [-WorkingDirectory <directoryPath>]

pwsh[.exe] -h | -Help | -? | /?

Parameters

Alle parameters zijn hoofdlettergevoelig-i.

-File | -f

Als de waarde van File is, wordt -de opdrachttekst gelezen uit standaardinvoer. Als u pwsh -File - zonder omgeleide standaardinvoer uitvoert, wordt een normale sessie gestart. Dit is hetzelfde als het helemaal niet opgeven van de File parameter.

Dit is de standaardparameter als er geen parameters aanwezig zijn, maar er wel waarden aanwezig zijn op de opdrachtregel. Het opgegeven script wordt uitgevoerd in het lokale bereik ('dot-sourced'), zodat de functies en variabelen die door het script worden gemaakt, beschikbaar zijn in de huidige sessie. Voer het pad naar het scriptbestand en eventuele parameters in. Bestand moet de laatste parameter in de opdracht zijn, omdat alle tekens die worden getypt na de bestandsnaam worden geïnterpreteerd als het pad naar het scriptbestand gevolgd door de scriptparameters.

Normaal gesproken worden de schakelparameters van een script opgenomen of weggelaten. De volgende opdracht gebruikt bijvoorbeeld de parameter All van het Get-Script.ps1 scriptbestand: -File .\Get-Script.ps1 -All

In zeldzame gevallen moet u mogelijk een Booleaanse waarde opgeven voor een switchparameter. Als u een Booleaanse waarde wilt opgeven voor een switchparameter in de waarde van de parameter Bestand , gebruikt u de parameter die normaal gesproken onmiddellijk wordt gevolgd door een dubbele punt en de Booleaanse waarde, zoals de volgende: -File .\Get-Script.ps1 -All:$False.

Parameters die aan het script worden doorgegeven, worden doorgegeven als letterlijke tekenreeksen, na interpretatie door de huidige shell. Als u bijvoorbeeld een cmd.exe omgevingsvariabelewaarde wilt doorgeven, gebruikt u de cmd.exe syntaxis: pwsh -File .\test.ps1 -TestParam %windir%

Als het script daarentegen wordt uitgevoerd pwsh -File .\test.ps1 -TestParam $env:windir in cmd.exe , ontvangt het script de letterlijke tekenreeks $env:windir , omdat dit geen speciale betekenis heeft voor de huidige cmd.exe shell. De $env:windir stijl van de omgevingsvariabele verwijzing kan worden gebruikt in een opdrachtparameter , omdat deze daar wordt geïnterpreteerd als PowerShell-code.

Als u dezelfde opdracht wilt uitvoeren vanuit een Batch-script, gebruikt %~dp0 u in plaats van .\ of $PSScriptRoot om de huidige uitvoeringsmap weer te geven: pwsh -File %~dp0test.ps1 -TestParam %windir%. Als u in plaats daarvan .\test.ps1gebruikt, genereert PowerShell een fout omdat het letterlijke pad niet kan worden gevonden .\test.ps1

Wanneer het scriptbestand wordt beëindigd met een exit opdracht, wordt de afsluitcode van het proces ingesteld op het numerieke argument dat wordt gebruikt met de exit opdracht. Bij normale beëindiging is de afsluitcode altijd 0.

-CommandNet als bij , wanneer er een fout optreedt bij het beëindigen van een script, wordt de afsluitcode ingesteld op 1. In tegenstelling tot bij -Command, is de afsluitcode 0echter wanneer de uitvoering wordt onderbroken met Ctrl-C.

-Command | -c

Voert de opgegeven opdrachten (en eventuele parameters) uit alsof ze zijn getypt bij de PowerShell-opdrachtprompt en sluit vervolgens af, tenzij de NoExit parameter is opgegeven.

De waarde van Opdracht kan zijn -, een scriptblok of een tekenreeks. Als de waarde van Opdracht is, wordt -de opdrachttekst gelezen uit standaardinvoer.

De parameter Command accepteert alleen een scriptblok voor uitvoering wanneer deze de waarde kan herkennen die is doorgegeven aan Command als een ScriptBlock-type . Dit is alleen mogelijk wanneer deze wordt uitgevoerd pwsh vanaf een andere PowerShell-host. Het ScriptBlock-type kan zijn opgenomen in een bestaande variabele, worden geretourneerd door een expressie of door de PowerShell-host worden geparseerd als een letterlijk scriptblok tussen accolades ({}), voordat deze wordt doorgegeven aan pwsh.

pwsh -Command {Get-WinEvent -LogName security}

In cmd.exebestaat er niet zoiets als een scriptblok (of scriptbloktype ), dus de waarde die wordt doorgegeven aan Opdracht is altijd een tekenreeks. U kunt een scriptblok in de tekenreeks schrijven, maar in plaats van dat het wordt uitgevoerd, gedraagt het zich precies alsof u het hebt getypt bij een typische PowerShell-prompt, waarbij de inhoud van het scriptblok weer naar u wordt afgedrukt.

Een tekenreeks die wordt doorgegeven aan de opdracht, wordt nog steeds uitgevoerd als PowerShell-code, dus de accolades voor scriptblokken zijn vaak niet vereist bij het uitvoeren van .cmd.exe Voor het uitvoeren van een inline scriptblok dat is gedefinieerd in een tekenreeks, kan de aanroepoperator& worden gebruikt:

pwsh -Command "& {Get-WinEvent -LogName security}"

Als de waarde van Opdracht een tekenreeks is, moet Command de laatste parameter voor pwsh zijn, omdat alle argumenten die erop volgen, worden geïnterpreteerd als onderdeel van de opdracht die moet worden uitgevoerd.

Wanneer de resultaten worden aangeroepen vanuit een bestaande PowerShell-sessie, worden de resultaten geretourneerd naar de bovenliggende shell als gedeserialiseerde XML-objecten, niet als live-objecten. Voor andere shells worden de resultaten geretourneerd als tekenreeksen.

Als de waarde van Opdracht is, wordt -de opdrachttekst gelezen uit standaardinvoer. U moet standaardinvoer omleiden wanneer u de opdrachtparameter met standaardinvoer gebruikt. Bijvoorbeeld:

@'
"in"

"hi" |
  % { "$_ there" }

"out"
'@ | powershell -NoProfile -Command -

In dit voorbeeld wordt de volgende uitvoer geproduceerd:

in
hi there
out

De afsluitcode van het proces wordt bepaald door de status van de laatste (uitgevoerde) opdracht in het scriptblok. De afsluitcode is 0 wanneer $? is $true of 1 wanneer $? is $false. Als de laatste opdracht een extern programma of een PowerShell-script is waarmee expliciet een andere afsluitcode dan 0 of 1wordt ingesteld, wordt die afsluitcode geconverteerd naar 1 voor afsluitcode van het proces. Als u de specifieke afsluitcode wilt behouden, voegt u toe exit $LASTEXITCODE aan de opdrachtreeks of het scriptblok.

Op dezelfde manier wordt de waarde 1 geretourneerd wanneer een script-afsluitfout (runspace-terminating) optreedt, zoals een throw of -ErrorAction Stop, of wanneer de uitvoering wordt onderbroken met Ctrl-C.

-ConfigurationName | -config

Hiermee geeft u een configuratie-eindpunt op waarin PowerShell wordt uitgevoerd. Dit kan elk eindpunt zijn dat is geregistreerd op de lokale computer, inclusief de standaard powershell-eindpunten voor externe communicatie of een aangepast eindpunt met specifieke mogelijkheden voor gebruikersrollen.

Voorbeeld: pwsh -ConfigurationName AdminRoles

-CustomPipeName

Hiermee geeft u de naam voor een extra IPC-server (named pipe) die wordt gebruikt voor foutopsporing en andere communicatie tussen processen. Dit biedt een voorspelbaar mechanisme om verbinding te maken met andere PowerShell-exemplaren. Wordt meestal gebruikt met de parameter CustomPipeName op Enter-PSHostProcess.

Deze parameter is geïntroduceerd in PowerShell 6.2.

Bijvoorbeeld:

# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe

-EncodedCommand | -e | -ec

Accepteert een Base64-encoded tekenreeksversie van een opdracht. Gebruik deze parameter om opdrachten naar PowerShell te verzenden waarvoor complexe, geneste aanhalingstekens zijn vereist. De Base64-weergave moet een UTF-16LE-gecodeerde tekenreeks zijn.

Bijvoorbeeld:

$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -encodedcommand $encodedCommand

-ExecutionPolicy | -ex | -ep

Hiermee stelt u het standaarduitvoeringsbeleid voor de huidige sessie in en slaat u dit op in de omgevingsvariabele $env:PSExecutionPolicyPreference . Deze parameter wijzigt het permanent geconfigureerde uitvoeringsbeleid niet.

Deze parameter is alleen van toepassing op Windows-computers. De $env:PSExecutionPolicyPreference omgevingsvariabele bestaat niet op niet-Windows-platforms.

-InputFormat | -inp | -if

Beschrijft de indeling van gegevens die naar PowerShell worden verzonden. Geldige waarden zijn 'Tekst' (teksttekenreeksen) of 'XML' (geserialiseerde CLIXML-indeling).

-Interactive | -i

Geef de gebruiker een interactieve prompt. Inverse voor niet-actieve parameter.

-Login | -l

In Linux en macOS start PowerShell als een aanmeldingsshell, met behulp van /bin/sh om aanmeldingsprofielen uit te voeren, zoals /etc/profile en ~/.profile. In Windows doet deze schakeloptie niets.

Belangrijk

Deze parameter moet eerst worden gebruikt om PowerShell te starten als een aanmeldingsshell. Het doorgeven van deze parameter op een andere positie wordt genegeerd.

Instellen pwsh als de aanmeldingsshell op UNIX ike-besturingssystemen-l:

  • Controleer of het volledige absolute pad naar pwsh wordt vermeld onder /etc/shells

    • Dit pad is meestal iets zoals /usr/bin/pwsh in Linux of /usr/local/bin/pwsh in macOS
    • Bij sommige installatiemethoden wordt deze vermelding automatisch toegevoegd tijdens de installatie
    • Als pwsh niet aanwezig is in /etc/shells, gebruikt u een editor om het pad toe te voegen aan pwsh op de laatste regel. Hiervoor zijn verhoogde bevoegdheden vereist om te kunnen bewerken.
  • Gebruik het hulpprogramma chsh om de shell van uw huidige gebruiker in te stellen op pwsh:

    chsh -s /usr/bin/pwsh
    

Waarschuwing

Instellen pwsh als de aanmeldingsshell wordt momenteel niet ondersteund op Windows-subsysteem voor Linux (WSL) en een poging om in te stellen pwsh als de aanmeldingsshell kan ertoe leiden dat WSL niet interactief kan worden gestart.

-MTA

Start PowerShell met behulp van een appartement met meerdere threads. Deze schakeloptie is alleen beschikbaar in Windows.

-NoExit | -noe

Sluit niet af na het uitvoeren van opstartopdrachten.

Voorbeeld: pwsh -NoExit -Command Get-Date

-NoLogo | -nol

Hiermee verbergt u de copyrightbanner bij het starten van interactieve sessies.

-NonInteractive | -noni

Geeft geen interactieve prompt weer aan de gebruiker. Pogingen om interactieve functies te gebruiken, zoals Read-Host of bevestigingsprompts, leiden tot fouten bij het beëindigen van instructies.

-NoProfile | -nop

De PowerShell-profielen worden niet geladen.

-OutputFormat | -o | -of

Bepaalt hoe uitvoer van PowerShell wordt opgemaakt. Geldige waarden zijn 'Tekst' (teksttekenreeksen) of 'XML' (geserialiseerde CLIXML-indeling).

Voorbeeld: pwsh -o XML -c Get-Date

Wanneer u wordt aangeroepen met een PowerShell-sessie, krijgt u gedeserialiseerde objecten als uitvoer in plaats van gewone tekenreeksen. Wanneer de uitvoer wordt aangeroepen vanuit andere shells, is de uitvoer tekenreeksgegevens die zijn opgemaakt als CLIXML-tekst.

-SettingsFile | -settings

Overschrijft het bestand met systeem-ide-instellingen-wpowershell.config.json voor de sessie. Standaard worden systeem-ide-instellingen-wgelezen uit de powershell.config.json in de $PSHOME map.

Houd er rekening mee dat deze instellingen niet worden gebruikt door het eindpunt dat is opgegeven door het -ConfigurationName argument.

Voorbeeld: pwsh -SettingsFile c:\myproject\powershell.config.json

-SSHServerMode | -sshs

Wordt gebruikt in sshd_config voor het uitvoeren van PowerShell als een SSH-subsysteem. Het is niet bedoeld of wordt niet ondersteund voor ander gebruik.

-STA

Start PowerShell met behulp van een appartement met één thread. Dit is de standaardinstelling. Deze schakeloptie is alleen beschikbaar op het Windows-platform.

-Version | -v

Geeft de versie van PowerShell weer. Aanvullende parameters worden genegeerd.

-WindowStyle | -w

Hiermee stelt u de vensterstijl voor de sessie in. Geldige waarden zijn Normaal, Geminimaliseerd, Gemaximaliseerd en Verborgen.

-WorkingDirectory | -wd

Hiermee stelt u de oorspronkelijke werkmap in door uit te voeren bij het opstarten. Elk geldig PowerShell-bestandspad wordt ondersteund.

Als u PowerShell wilt starten in uw basismap, gebruikt u: pwsh -WorkingDirectory ~

-Help, -?, /?

Geeft help weer voor pwsh. Als u een pwsh-opdracht typt in PowerShell, moet u de opdrachtparameters vooraf laten gaan met een afbreekstreepje (-), niet met een schuine streep (/).