about_Special_Characters
Kort beskrivning
Beskriver de specialteckensekvenser som styr hur PowerShell tolkar nästa tecken i sekvensen.
Lång beskrivning
PowerShell stöder en uppsättning specialteckensekvenser som används för att representera tecken som inte ingår i standardteckenuppsättningen. Sekvenserna kallas ofta escape-sekvenser.
Escape-sekvenser börjar med backtick-tecknet, som kallas gravaccenter (ASCII 96), och är skiftlägeskänsliga. Backtick-tecknet kan också kallas escape-tecknet.
Escape-sekvenser tolkas endast när de finns i dubbelciterade ("
) strängar.
PowerShell identifierar dessa escape-sekvenser:
Sequence | beskrivning |
---|---|
`0 |
Null |
`a |
Varning |
`b |
Backstegstangent |
`e |
Escape (läggs till i PowerShell 6) |
`f |
Formulärfeed |
`n |
Ny rad |
`r |
Vagnretur |
`t |
Vågrät flik |
`u{x} |
Unicode-escape-sekvens (läggs till i PowerShell 6) |
`v |
Lodrät flik |
PowerShell har också en särskild token för att markera var du vill att parsningen ska stoppas. Alla tecken som följer den här token används som literalvärden som inte tolkas.
Särskilda parsningstoken:
Sequence | beskrivning |
---|---|
-- |
Behandla återstående värden som argument, inte parametrar |
--% |
Sluta parsa något som följer |
~ |
Tilde |
Null ('0)
Null-tecknet (`0
) visas som ett tomt utrymme i PowerShell-utdata.
Med den här funktionen kan du använda PowerShell för att läsa och bearbeta textfiler som använder null-tecken, till exempel strängavslut eller indikatorer för postavslut. Specialtecknet null motsvarar inte variabeln $null
, som lagrar ett null-värde .
Avisering ('a)
Aviseringstecknet (`a
) skickar en signal till datorns högtalare.
Du kan använda det här tecknet för att varna en användare om en kommande åtgärd. I följande exempel skickas två pipsignaler till den lokala datorns högtalare.
for ($i = 0; $i -le 1; $i++){"`a"}
Backspace ('b)
Backspace-tecknet (`b
) flyttar markören tillbaka ett tecken, men det tar inte bort några tecken.
Exemplet skriver ordet backup och flyttar sedan tillbaka markören två gånger. På den nya positionen skriver du sedan ett blanksteg följt av ordet out.
"backup`b`b out"
back out
Escape ('e)
Kommentar
Det här specialtecknet lades till i PowerShell 6.0.
Escape-tecknet (`e
) används oftast för att ange en virtuell terminalsekvens (ANSI-escape-sekvens) som ändrar färgen på text och andra textattribut, till exempel fetstil och understrykning. Dessa sekvenser kan också användas för markörplacering och rullning. PowerShell-värden måste ha stöd för virtuella terminalsekvenser. Du kan kontrollera det booleska värdet för $Host.UI.SupportsVirtualTerminal
för att avgöra om dessa ANSI-sekvenser stöds.
Mer information om ANSI-escapesekvenser finns i artikeln om ANSI-escape-kod på Wikipedia.
I följande exempel matas text ut med en grön förgrundsfärg.
$fgColor = 32 # green
"`e[${fgColor}mGreen text`e[0m"
Green text
Formulärfeed ('f)
Formulärflödet (`f
) är en utskriftsinstruktion som matar ut den aktuella sidan och fortsätter att skriva ut på nästa sida. Tecknet för formulärfeed påverkar endast utskrivna dokument. Det påverkar inte skärmutdata.
Ny rad ('n)
Det nya radtecknet (`n
) infogar en radbrytning omedelbart efter tecknet.
Det här exemplet visar hur du använder det nya radtecknet för att skapa radbrytningar i ett Write-Host
kommando.
"There are two line breaks to create a blank line`n`nbetween the words."
There are two line breaks to create a blank line
between the words.
Vagnretur ('r)
Vagnreturtecknet (`r
) flyttar utdatamarkören till början av den aktuella raden och fortsätter att skriva. Alla tecken på den aktuella raden skrivs över.
I det här exemplet skrivs texten innan vagnreturen över.
Write-Host "These characters are overwritten.`rI want this text instead "
Observera att texten innan `r
tecknet inte tas bort, den skrivs över.
I want this text instead written.
Vågrät flik (inte)
Det vågräta fliktecknet (`t
) går vidare till nästa tabbstopp och fortsätter att skriva vid den tidpunkten. Som standard har PowerShell-konsolen ett tabbstopp vid var åttonde plats.
Det här exemplet infogar två flikar mellan varje kolumn.
"Column1`t`tColumn2`t`tColumn3"
Column1 Column2 Column3
Unicode-tecken ('u{x})
Kommentar
Det här specialtecknet lades till i PowerShell 6.0.
Med Unicode-escape-sekvensen (`u{x}
) kan du ange valfritt Unicode-tecken med den hexadecimala representationen av dess kodpunkt. Detta inkluderar Unicode-tecken ovanför det grundläggande flerspråkiga planet (>0xFFFF
) som innehåller emoji-tecken som tummen upp (`u{1F44D}
) tecken. Unicode-escape-sekvensen kräver minst en hexadecimal siffra och stöder upp till sex hexadecimala siffror. Det maximala hexadecimala värdet för sekvensen är 10FFFF
.
I det här exemplet matas upp nedåtpilen (↕) ut.
"`u{2195}"
Lodrät flik ('v)
Det lodräta fliktecknet (`v
) avancerar till nästa lodräta tabbstopp och skriver återstående utdata vid den tidpunkten. Återgivningen av den lodräta fliken är enhets- och terminalberoende.
Write-Host "There is a vertical tab`vbetween the words."
I följande exempel visas de renderade utdata från den lodräta fliken i vissa vanliga miljöer.
Värdprogrammet för Windows-konsolen tolkar (`v
) som ett specialtecken utan extra avstånd.
There is a vertical tab♂between the words.
Windows-terminalen renderar det lodräta fliktecknet som en vagnretur och radmatning. Resten av utdata skrivs ut i början av nästa rad.
There is a vertical tab
between the words.
På skrivare eller i en unix-baserad konsol går det lodräta tabbtecknet vidare till nästa rad och skriver återstående utdata vid den tidpunkten.
There is a vertical tab
between the words.
Radfortsättning
Backtick-tecknet kan också användas i slutet av en rad som en signal till PowerShell-parsern att kommandot fortsätter på nästa rad. Mer information finns i about_Parsing.
Token för slutparametrar (--
)
Token för slutparametrar (--
) anger att alla argument som följer den ska skickas i deras faktiska form som om dubbla citattecken placerades runt dem. Om du till exempel använder --
kan du mata ut strängen -InputObject
utan att använda citattecken eller låta den tolkas som en parameter:
Write-Output -- -InputObject
-InputObject
Detta är en konvention som anges i POSIX Shell- och Utilities-specifikationen.
Stoppa parsningstoken (--%)
Token för stoppparsning (--%
) förhindrar att PowerShell tolkar strängar som PowerShell-kommandon och -uttryck. Detta gör att dessa strängar kan skickas till andra program för tolkning.
Placera stop-parsing-token efter programnamnet och före programargument som kan orsaka fel.
I det här exemplet Icacls
använder kommandot stop-parsing-token.
icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F
PowerShell skickar följande sträng till Icacls
.
X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
I det andra exemplet skickar vi variabeln $HOME
till cmd.exe /c echo
kommandot två gånger.
cmd.exe /c echo $HOME --% $HOME
Utdata visar att den första instansen av $HOME
tolkas av PowerShell så att värdet för variabeln skickas till cmd
. Den andra instansen av $HOME
kommer efter stop-parsing-token, så den skickas som en literalsträng.
C:\Users\username $HOME
Mer information om token för stoppparsning finns i about_Parsing.
Tilde (~)
Tilde-tecknet (~
) har en särskild betydelse i PowerShell. När den används med PowerShell-kommandon i början av en sökväg expanderar PowerShell tilde-tecknet till användarens hemkatalog. Om du använder tilde-tecknet någon annanstans i en sökväg behandlas det som ett literaltecken.
Mer information om token för stoppparsning finns i about_Parsing.