Dela via


Om pwsh

Kort beskrivning

Förklarar hur du använder kommandoradsgränssnittet pwsh. Visar kommandoradsparametrarna och beskriver syntaxen.

Lång beskrivning

Syntax

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]
   [-NoExit]
   [-NoLogo]
   [-NonInteractive]
   [-NoProfile]
   [-OutputFormat {Text | XML}]
   [-SettingsFile <SettingsFilePath>]
   [-Version]
   [-WindowStyle <style>]
   [-WorkingDirectory <directoryPath>]

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

Parametrar

Alla parametrar är skiftlägesokänsliga.

-Fil | -f

Om värdet för File är -läss kommandotexten från standardindata. Om du kör pwsh -File - utan omdirigerade standardindata startas en vanlig session. Det här är samma sak som att inte ange parametern File alls.

Det här är standardparametern om inga parametrar finns men värden finns på kommandoraden. Det angivna skriptet körs i det lokala omfånget ("dot-sourced"), så att de funktioner och variabler som skriptet skapar är tillgängliga i den aktuella sessionen. Ange sökvägen till skriptfilen och eventuella parametrar. Filen måste vara den sista parametern i kommandot eftersom alla tecken som skrivs efter filparameternamnet tolkas som skriptfilens sökväg följt av skriptparametrarna.

Normalt inkluderas eller utelämnas växelparametrarna för ett skript. Följande kommando använder till exempel parametern Alla i Get-Script.ps1-skriptfilen: -File .\Get-Script.ps1 -All

I sällsynta fall kan du behöva ange ett booleskt värde för en växelparameter. Om du vill ange ett booleskt värde för en växelparameter i värdet för parametern File använder du parametern som normalt följs omedelbart av ett kolon och det booleska värdet, till exempel följande: -File .\Get-Script.ps1 -All:$False.

Parametrar som skickas till skriptet skickas som literalsträngar efter tolkning av det aktuella gränssnittet. Om du till exempel är i cmd.exe och vill skicka ett miljövariabelvärde använder du cmd.exe syntax: pwsh -File .\test.ps1 -TestParam %windir%

Om du däremot kör pwsh -File .\test.ps1 -TestParam $env:windir i cmd.exe resulterar det i att skriptet tar emot strängen literal $env:windir eftersom den inte har någon särskild betydelse för det aktuella cmd.exe-gränssnittet. Den $env:windir stilen för miljövariabelreferensen kan användas i en Kommando parameter, eftersom den tolkas som PowerShell-kod.

Om du vill köra samma kommando från ett Batch-skriptanvänder du %~dp0 i stället för .\ eller $PSScriptRoot för att representera den aktuella körningskatalogen: pwsh -File %~dp0test.ps1 -TestParam %windir%. Om du i stället använde .\test.ps1utlöser PowerShell ett fel eftersom den inte kan hitta den literala sökvägen .\test.ps1

När skriptfilen avslutas med ett exit kommando anges processens slutkod till det numeriska argumentet som används med kommandot exit. Vid normal avslutning är slutkoden alltid 0.

På samma sätt som -Command, när ett skriptavslutande fel inträffar, är slutkoden inställd på 1. Men till skillnad från med -Command, när körningen avbryts med Ctrl-C är slutkoden 0.

-Kommando | -c

Kör de angivna kommandona (och eventuella parametrar) som om de hade skrivits i PowerShell-kommandotolken och avslutas sedan, såvida inte parametern NoExit anges.

Värdet för Kommando kan vara -, ett skriptblock eller en sträng. Om värdet för Kommando är -, läss kommandotexten från standardindata.

Parametern Command accepterar bara ett skriptblock för körning när det kan identifiera värdet som skickas till Command som en ScriptBlock- typ. Detta är endast möjligt när du kör pwsh från en annan PowerShell-värd. ScriptBlock- typ kan finnas i en befintlig variabel, returneras från ett uttryck eller parsas av PowerShell-värden som ett literalskriptblock omgivet av klammerparenteser ({}), innan det skickas till pwsh.

pwsh -Command {Get-WinEvent -LogName security}

I cmd.exefinns det inget skriptblock (eller ScriptBlock typ), så värdet som skickas till Kommandoalltid vara en sträng. Du kan skriva ett skriptblock i strängen, men i stället för att köras fungerar det precis som om du skrev det i en vanlig PowerShell-prompt och skriver ut innehållet i skriptblocket tillbaka till dig.

En sträng som skickas till Kommando körs fortfarande som PowerShell-kod, så skriptblockets klammerparenteser krävs ofta inte i första hand när du kör från cmd.exe. Om du vill köra ett infogat skriptblock som definierats i en sträng kan anropa operatorn& användas:

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

Om värdet för Kommando är en sträng måste Kommando vara den sista parametern för pwsh, eftersom alla argument som följer den tolkas som en del av kommandot som ska köras.

När de anropas inifrån en befintlig PowerShell-session returneras resultatet till det överordnade gränssnittet som deserialiserade XML-objekt, inte levande objekt. För andra gränssnitt returneras resultatet som strängar.

Om värdet för Kommando är -, läss kommandotexten från standardindata. Du måste omdirigera standardindata när du använder parametern Command med standardindata. Till exempel:

@'
"in"

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

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

Det här exemplet genererar följande utdata:

in
hi there
out

Processens slutkod bestäms av status för det senaste kommandot (körs) i skriptblocket. Slutkoden 0 när $? är $true eller 1 när $? är $false. Om det sista kommandot är ett externt program eller ett PowerShell-skript som uttryckligen anger en annan slutkod än 0 eller 1konverteras slutkoden till 1 för processens slutkod. Om du vill behålla den specifika slutkoden lägger du till exit $LASTEXITCODE i kommandosträngen eller skriptblocket.

På samma sätt returneras värdet 1 när ett skriptavslutande (runspace-terminerande) fel, till exempel en throw eller -ErrorAction Stop, inträffar eller när körningen avbryts med Ctrl-C.

-ConfigurationName | -config

Anger en konfigurationsslutpunkt där PowerShell körs. Det kan vara vilken slutpunkt som helst som är registrerad på den lokala datorn, inklusive standardslutpunkterna för PowerShell-fjärrkommunikation eller en anpassad slutpunkt som har specifika funktioner för användarroller.

Exempel: pwsh -ConfigurationName AdminRoles

-CustomPipeName

Anger namnet som ska användas för en ytterligare IPC-server (namngiven pipe) som används för felsökning och annan kommunikation mellan processer. Detta ger en förutsägbar mekanism för att ansluta till andra PowerShell-instanser. Används vanligtvis med parametern CustomPipeNameEnter-PSHostProcess.

Den här parametern introducerades i PowerShell 6.2.

Till exempel:

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

-EncodedCommand | -e | -ec

Accepterar en Base64-kodad strängversion av ett kommando. Använd den här parametern för att skicka kommandon till PowerShell som kräver komplex, kapslad citat. Base64-representationen måste vara en UTF-16-kodad sträng.

Till exempel:

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

-ExecutionPolicy | -ex | -ep

Anger standardkörningsprincipen för den aktuella sessionen och sparar den i miljövariabeln $env:PSExecutionPolicyPreference. Den här parametern ändrar inte de beständigt konfigurerade körningsprinciperna.

Den här parametern gäller endast för Windows-datorer. Miljövariabeln $env:PSExecutionPolicyPreference finns inte på plattformar som inte är Windows-plattformar.

-InputFormat | -in | -if

Beskriver formatet för data som skickas till PowerShell. Giltiga värden är "Text" (textsträngar) eller "XML" (serialiserat CLIXML-format).

-Interaktiv | -i

Presentera en interaktiv uppmaning till användaren. Invertera för parametern NonInteractive.

-NoExit | -noe

Avslutas inte efter att startkommandon har körts.

Exempel: pwsh -NoExit -Command Get-Date

-NoLogo | -nol

Döljer upphovsrättsbanderollen vid start av interaktiva sessioner.

-NonInteractive | -noni

Visar ingen interaktiv uppmaning till användaren. Alla försök att använda interaktiva funktioner, till exempel Read-Host eller bekräftelsemeddelanden, resulterar i instruktionsslutfel.

-NoProfile | -nop

Läser inte in PowerShell-profilerna.

-OutputFormat | -o | -of

Avgör hur utdata från PowerShell formateras. Giltiga värden är "Text" (textsträngar) eller "XML" (serialiserat CLIXML-format).

Exempel: pwsh -o XML -c Get-Date

När du anropas med en PowerShell-session får du deserialiserade objekt som utdata ganska enkla strängar. När det anropas från andra gränssnitt är utdata strängdata formaterade som CLIXML-text.

-SettingsFile | -settings

Åsidosätter den systemomfattande powershell.config.json inställningsfilen för sessionen. Som standard läss systemomfattande inställningar från powershell.config.json i katalogen $PSHOME.

Observera att de här inställningarna inte används av slutpunkten som anges av argumentet -ConfigurationName.

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

-SSHServerMode | -sshs

Används i sshd_config för att köra PowerShell som ett SSH-undersystem. Den är inte avsedd eller stöds inte för någon annan användning.

-Version | -v

Visar versionen av PowerShell. Ytterligare parametrar ignoreras.

-WindowStyle | -w

Anger fönsterformatet för sessionen. Giltiga värden är Normal, Minimerad, Maximerad och Dold.

-WorkingDirectory | -wd

Anger den första arbetskatalogen genom att köra vid start. Alla giltiga PowerShell-filsökvägar stöds.

Om du vill starta PowerShell i din hemkatalog använder du: pwsh -WorkingDirectory ~

-Hjälp-?/?

Visar hjälp för pwsh. Om du skriver ett pwsh-kommando i PowerShell förbereder du kommandoparametrarna med bindestreck (-), inte ett snedstreck (/).