about_Pwsh
Kort beskrivning
Förklarar hur du använder pwsh
kommandots-line-gränssnitt. Visar ine-parametrarna för kommandot-loch beskriver syntaxen.
Lång beskrivning
Information om ine-kommandoalternativen-lför Windows PowerShell 5.1 finns i about_PowerShell_exe.
Syntax
Usage: pwsh[.exe]
[-Login]
[[-File] <filePath> [args]]
[-Command { - | <script-block> [-args <arg-array>]
| <string> [<CommandParameters>] } ]
[[-CommandWithArgs <string>] [<CommandParameters>]]
[-ConfigurationFile <filePath>]
[-ConfigurationName <string>]
[-CustomPipeName <string>]
[-EncodedCommand <Base64EncodedCommand>]
[-ExecutionPolicy <ExecutionPolicy>]
[-InputFormat {Text | XML}]
[-Interactive]
[-MTA]
[-NoExit]
[-NoLogo]
[-NonInteractive]
[-NoProfile]
[-NoProfileLoadTime]
[-OutputFormat {Text | XML}]
[-SettingsFile <filePath>]
[-SSHServerMode]
[-STA]
[-Version]
[-WindowStyle <style>]
[-WorkingDirectory <directoryPath>]
pwsh[.exe] -h | -Help | -? | /?
Parametrar
Alla parametrar är skiftlägeskänsliga-i.
-File | -f
Värdet för Filen kan vara -
eller en filsökväg och valfria parametrar. Om värdet för Fil är -
, läss kommandon från standardindata.
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") för den nya sessionen, så att de funktioner och variabler som skriptet skapar är tillgängliga i den nya sessionen. Ange skriptfilsökvägen och eventuella parametrar. Filen måste vara den sista parametern i kommandot eftersom alla tecken som skrivs efter filparameternamnet tolkas som skriptfilsökvägen 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 syntaxen cmd.exe
: pwsh -File .\test.ps1 -TestParam %windir%
Om du däremot kör pwsh -File .\test.ps1 -TestParam $env:windir
i resulterar det i cmd.exe
att skriptet tar emot literalsträngen $env:windir
eftersom den inte har någon särskild betydelse för det aktuella cmd.exe
gränssnittet. Referensen $env:windir
för miljövariabeln kan användas i en kommandoparameter , eftersom den tolkas som PowerShell-kod.
På samma sätt, om du vill köra samma kommando från ett Batch-skript, skulle du använda %~dp0
i stället för .\
eller $PSScriptRoot
för att representera den aktuella körningskatalogen: pwsh -File %~dp0test.ps1 -TestParam %windir%
. Om du använder .\test.ps1
i stället genererar PowerShell ett fel eftersom det inte går att hitta den literala sökvägen .\test.ps1
Kommentar
Parametern File kan inte stödja skript med hjälp av en parameter som förväntar sig en matris med argumentvärden. Detta är tyvärr en begränsning av hur ett internt kommando hämtar argumentvärden. När du anropar en intern körbar fil (till exempel powershell
eller pwsh
) vet den inte vad den ska göra med en matris, så den skickas som en sträng.
Om värdet för Fil är -
, läss kommandon 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 alls File
. När du läser från standardindata körs indatainstruktionerna en instruktion i taget som om de hade skrivits i PowerShell-kommandotolken. Om en instruktion inte parsas korrekt körs inte -instruktionen. Processens slutkod bestäms av status för det senaste kommandot (körs) i indata. Med normal avslutning är slutkoden alltid 0
. När skriptfilen avslutas med ett exit
kommando anges processens slutkod till det numeriska argumentet som används med exit
kommandot .
-Command
På samma sätt som när ett skriptavslutande fel inträffar är slutkoden inställd på 1
. Men till skillnad från -Command
, när körningen avbryts med Ctrl+C är 0
slutkoden . Mer information $LASTEXITCODE
finns i about_Automatic_Variables.
Kommentar
Från och med PowerShell 7.2 accepterar .ps1
filparametern endast filer i Windows. Om en annan filtyp anges utlöses ett fel. Det här beteendet är Windows-specifikt. På andra plattformar försöker PowerShell köra andra filtyper.
-Command | -c
Värdet för Kommandot kan vara -
, ett skriptblock eller en sträng. Om värdet för Kommandot är -
, läss kommandotexten från standardindata.
Kommandoparametern accepterar endast ett skriptblock för körning när det kan identifiera värdet som skickas till Kommando som en ScriptBlock-typ. Detta är bara möjligt när du kör pwsh
från en annan PowerShell-värd. ScriptBlock-typen 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.exe
finns det inget sådant som ett skriptblock (eller ScriptBlock-typ ), så värdet som skickas till Kommandot är alltid 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 Kommandot 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 anropsoperatorn &
användas:
pwsh -Command "& {Get-WinEvent -LogName security}"
Om värdet för Kommandot är en sträng måste kommandot vara den sista parametern för pwsh, eftersom alla argument som följer 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 Kommandot är -
läss kommandona från standardindata. Du måste omdirigera standardindata när du använder kommandoparametern med standardindata. Till exempel:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | pwsh -NoProfile -Command -
Det här exemplet genererar följande utdata:
in
hi there
out
När du läser från standardindata parsas indata och körs en instruktion i taget, som om de hade skrivits i PowerShell-kommandotolken. Om indatakoden inte parsas korrekt körs inte -instruktionen. Om du inte använder parametern -NoExit
avslutas PowerShell-sessionen när det inte finns fler indata att läsa från standardindata.
Processens slutkod bestäms av status för det senaste kommandot (körs) i indata. Slutkoden är 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 1
konverteras slutkoden till 1
för processens slutkod. På samma sätt returneras värdet 1 när ett skriptavslutande (runspace-terminerande) fel, till exempel ett throw
eller -ErrorAction Stop
, inträffar eller när körningen avbryts med Ctrl+C.
Om du vill bevara den specifika slutkoden lägger du till exit $LASTEXITCODE
i kommandosträngen eller skriptblocket. Mer information $LASTEXITCODE
finns i about_Automatic_Variables.
-CommandWithArgs | -cwa
Det här är en experimentell funktion som lagts till i 7.4.
Kör ett PowerShell-kommando med argument. Till skillnad från -Command
fyller den här parametern den $args
inbyggda-in-variabeln som kan användas av kommandot.
Den första strängen är kommandot . Ytterligare strängar avgränsade med blanksteg är argumenten.
Till exempel:
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
Det här exemplet genererar följande utdata:
arg: arg1
arg: arg2
Kommentar
Argumentparsing med citattecken gör att exemplet misslyckas om det körs från cmd.exe
eller powershell.exe
. Om du vill köra från dessa kan du använda
REM Quoting required when run from cmd.exe
pwsh -CommandWithArgs "$args | % { ""arg: $_"" }" arg1 arg2
# Quoting required when run from powershell.exe
pwsh -CommandWithArgs '"$args | % { ""arg: $_"" }"' arg1 arg2
-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
-ConfigurationFile
Anger en filsökväg för sessionskonfiguration (.pssc
). Konfigurationen som finns i konfigurationsfilen tillämpas på PowerShell-sessionen.
Exempel: pwsh -ConfigurationFile "C:\ProgramData\PowerShell\MyConfig.pssc"
-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 CustomPipeName på Enter-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-nkodad-esträ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-16LE-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 $env:PSExecutionPolicyPreference
miljövariabeln. Den här parametern ändrar inte de beständigt konfigurerade körningsprinciperna.
Den här parametern gäller endast för Windows-datorer. På plattformar som inte är Windows ignoreras parametern och det angivna värdet.
-InputFormat | -inp | -if
Beskriver formatet för data som skickas till PowerShell. Giltiga värden är "Text" (textsträngar) eller "XML" (serialiserat CLIXML-format).
-Interactive | -i
Presentera en interaktiv uppmaning till användaren. Invertera för parametern NonInteractive.
-Login | -l
I Linux och macOS startar du PowerShell som ett inloggningsgränssnitt med hjälp av /bin/sh för att köra inloggningsprofiler som /etc/profile och ~/.profile. I Windows gör den här växeln ingenting.
Viktigt!
Den här parametern måste komma först för att starta PowerShell som ett inloggningsgränssnitt. Den här parametern ignoreras om den skickas i en annan position.
Så här konfigurerar pwsh
du som inloggningsgränssnitt på UNIX-like-operativsystem:
Kontrollera att den fullständiga absoluta sökvägen till
pwsh
visas under/etc/shells
- Den här sökvägen är vanligtvis ungefär som
/usr/bin/pwsh
i Linux eller/usr/local/bin/pwsh
i macOS - Med vissa installationsmetoder läggs den här posten till automatiskt vid installationstillfället
- Om
pwsh
inte finns i/etc/shells
använder du ett redigeringsprogram för att lägga till sökvägen tillpwsh
på den sista raden. Detta kräver utökade behörigheter för redigering.
- Den här sökvägen är vanligtvis ungefär som
Använd chsh-verktyget för att ange den aktuella användarens gränssnitt till
pwsh
:chsh -s /usr/bin/pwsh
Varning
Inställningen pwsh
som inloggningsgränssnittet stöds för närvarande inte på Windows-undersystem för Linux (WSL), och om du försöker ange pwsh
som inloggningsgränssnitt kan det leda till att WSL inte kan startas interaktivt.
-MTA
Starta PowerShell med en flertrådad lägenhet. Den här växeln är endast tillgänglig i Windows. Om du använder den här parametern på plattformar som inte är Windows resulterar det i ett fel.
-NoExit | -noe
Avslutas inte efter att startkommandon har körts.
Exempel: pwsh -NoExit -Command Get-Date
-NoLogo | -nol
Döljer banderollen vid start av interaktiva sessioner.
-NonInteractive | -noni
Den här växeln används för att skapa sessioner som inte ska kräva användarindata. Detta är användbart för skript som körs i schemalagda aktiviteter eller CI/CD-pipelines. Alla försök att använda interaktiva funktioner, till exempel Read-Host
eller bekräftelsemeddelanden, resulterar i att instruktionen avslutar fel i stället för hängande.
-NoProfile | -nop
Läser inte in PowerShell-profilerna.
-NoProfileLoadTime
Döljer powershell-profilens inläsningstidstext som visas vid start när inläsningstiden överskrider 500 millisekunder.
-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 i en PowerShell-session får du deserialiserade objekt som utdata i stället för enkla strängar. När det anropas från andra gränssnitt är utdata strängdata formaterade som CLIXML-text.
-SettingsFile | -settings
Åsidosätter system-ide-inställningsfilen-wpowershell.config.json
för sessionen. Som standard läss system-ide-inställningar-wfrån powershell.config.json
i $PSHOME
-katalogen.
Observera att de här inställningarna inte används av slutpunkten som anges av -ConfigurationName
argumentet.
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. Det är inte avsett eller stöds inte för någon annan användning.
-STA
Starta PowerShell med en entrådad lägenhet. Det här är standardinställningen. Den här växeln är endast tillgänglig på Windows-plattformen. Om du använder den här parametern på plattformar som inte är Windows resulterar det i ett fel.
-Version | -v
Visar versionen av den här körbara PowerShell-filen. Ytterligare parametrar ignoreras.
-WindowStyle | -w
Anger fönsterformatet för sessionen. Giltiga värden är Normal, Minimerad, Maximerad och Dold. Den här parametern gäller endast för Windows. Om du använder den här parametern på plattformar som inte är Windows resulterar det i ett fel.
-WorkingDirectory | -wd | -wo
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 ~
-Help, -?, /?
Visar hjälp för pwsh
. Om du skriver ett pwsh-kommando i PowerShell förbereder du kommandoparametrarna med ett bindestreck (-
), inte ett snedstreck (/
).