Condividi tramite


about_Special_Characters

Descrizione breve

Descrive le sequenze di caratteri speciali che controllano il modo in cui PowerShell interpreta i caratteri successivi nella sequenza.

Descrizione lunga

PowerShell supporta un set di sequenze di caratteri speciali usate per rappresentare i caratteri che non fanno parte del set di caratteri standard. Le sequenze sono comunemente note come sequenze di escape.

Le sequenze di escape iniziano con il carattere backtick, noto come accento grave (ASCII 96) e fanno distinzione tra maiuscole e minuscole. Il carattere di backtick può anche essere definito carattere di escape.

Le sequenze di escape vengono interpretate solo se contenute in stringhe tra virgolette doppie (").

PowerShell riconosce queste sequenze di escape:

Sequenza Descrizione
`0 Null
`a Avviso
`b Backspace
`e Escape (aggiunto in PowerShell 6)
`f Avanzamento carta
`n Nuova riga
`r Ritorno a capo
`t Tabulazione orizzontale
`u{x} Sequenza di escape Unicode (aggiunta in PowerShell 6)
`v Tabulazione verticale

PowerShell ha anche un token speciale per contrassegnare la posizione in cui si vuole arrestare l'analisi. Tutti i caratteri che seguono questo token vengono usati come valori letterali che non vengono interpretati.

Token di analisi speciali:

Sequenza Descrizione
-- Considerare i valori rimanenti come argomenti non parametri
--% Interrompere l'analisi di tutto ciò che segue
~ Tilde

Null ('0)

Il carattere null (`0) viene visualizzato come spazio vuoto nell'output di PowerShell. Questa funzionalità consente di usare PowerShell per leggere ed elaborare file di testo che usano caratteri Null, ad esempio la terminazione di stringhe o gli indicatori di terminazione dei record. Il carattere speciale Null non è equivalente alla $null variabile , che archivia un valore Null .

Avviso ('a)

Il carattere di avviso (`a) invia un segnale di segnale acustico all'altoparlante del computer. È possibile usare questo carattere per avvisare un utente di un'azione in sospeso. Nell'esempio seguente vengono inviati due segnali di segnale acustico all'altoparlante del computer locale.

for ($i = 0; $i -le 1; $i++){"`a"}

Backspace ('b)

Il carattere backspace (`b) sposta il cursore indietro di un carattere, ma non elimina alcun carattere.

Nell'esempio viene scritto il backup della parola e quindi il cursore viene spostato due volte indietro. Quindi, nella nuova posizione, scrive uno spazio seguito dalla parola out.

"backup`b`b out"
back out

Escape ('e)

Nota

Questo carattere speciale è stato aggiunto in PowerShell 6.0.

Il carattere di escape (`e) viene usato più comunemente per specificare una sequenza di terminale virtuale (sequenza di escape ANSI) che modifica il colore del testo e altri attributi di testo, ad esempio il grassetto e la sottolineatura. Queste sequenze possono essere usate anche per il posizionamento e lo scorrimento del cursore. L'host di PowerShell deve supportare sequenze di terminale virtuale. È possibile controllare il valore booleano di $Host.UI.SupportsVirtualTerminal per determinare se queste sequenze ANSI sono supportate.

Per altre informazioni sulle sequenze di escape ANSI, vedere l'articolo sul codice di escape ANSI in Wikipedia.

Nell'esempio seguente viene restituito testo con un colore di primo piano verde.

$fgColor = 32 # green
"`e[${fgColor}mGreen text`e[0m"
Green text

Feed modulo ('f)

Il carattere del feed di modulo (`f) è un'istruzione di stampa che espelle la pagina corrente e continua la stampa nella pagina successiva. Il carattere del feed del modulo influisce solo sui documenti stampati. Non influisce sull'output dello schermo.

Nuova riga ('n)

Il carattere nuova riga (`n) inserisce un'interruzione di riga immediatamente dopo il carattere.

In questo esempio viene illustrato come usare il nuovo carattere di riga per creare interruzioni di riga in un Write-Host comando.

"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.

Ritorno a capo ('r)

Il carattere ritorno a capo (`r) sposta il cursore di output all'inizio della riga corrente e continua la scrittura. Tutti i caratteri nella riga corrente vengono sovrascritti.

In questo esempio, il testo prima che il ritorno a capo venga sovrascritto.

Write-Host "These characters are overwritten.`rI want this text instead "

Si noti che il testo prima che il `r carattere non venga eliminato, viene sovrascritto.

I want this text instead written.

Scheda orizzontale ('t)

Il carattere di tabulazione orizzontale (`t) passa alla tabulazione successiva e continua a scrivere a quel punto. Per impostazione predefinita, la console di PowerShell ha una tabulazione ogni ottavo spazio.

In questo esempio vengono inserite due schede tra ogni colonna.

"Column1`t`tColumn2`t`tColumn3"
Column1         Column2         Column3

Carattere Unicode ('u{x})

Nota

Questo carattere speciale è stato aggiunto in PowerShell 6.0.

La sequenza di escape Unicode (`u{x}) consente di specificare qualsiasi carattere Unicode in base alla rappresentazione esadecimale del punto di codice. Sono inclusi i caratteri Unicode sopra il piano multilingue di base (>0xFFFF) che include caratteri emoji, ad esempio il carattere thumbs up (`u{1F44D}). La sequenza di escape Unicode richiede almeno una cifra esadecimale e supporta fino a sei cifre esadecimali. Il valore esadecimale massimo per la sequenza è 10FFFF.

In questo esempio viene restituito il simbolo freccia verso l'alto verso il basso (↕).

"`u{2195}"

Scheda Verticale ('v)

Il carattere di tabulazione verticale (`v) passa alla tabulazione verticale successiva e scrive l'output rimanente in quel punto. Il rendering della scheda verticale è dipendente dal dispositivo e dal terminale.

Write-Host "There is a vertical tab`vbetween the words."

Negli esempi seguenti viene illustrato l'output sottoposto a rendering della scheda verticale in alcuni ambienti comuni.

L'applicazione host della console di Windows interpreta (`v) come carattere speciale senza spaziatura aggiuntiva aggiunta.

There is a vertical tab♂between the words.

Il Terminale Windows esegue il rendering del carattere di tabulazioni verticale come ritorno a capo e avanzamento riga. Il resto dell'output viene stampato all'inizio della riga successiva.

There is a vertical tab
between the words.

Nelle stampanti o in console basate su UNIX, il carattere di tabulazioni verticale passa alla riga successiva e scrive l'output rimanente in quel punto.

There is a vertical tab
                       between the words.

Continuazione di riga

Il carattere di backtick può essere usato anche alla fine di una riga come segnale al parser di PowerShell che il comando continua nella riga successiva. Per altre informazioni, vedere about_Parsing.

Token di fine parametri (--)

Il token end-of-parameters (--) indica che tutti gli argomenti che seguono devono essere passati nel formato effettivo come se le virgolette doppie fossero posizionate intorno a esse. Ad esempio, è -- possibile restituire la stringa -InputObject senza usare virgolette o averla interpretata come parametro:

Write-Output -- -InputObject
-InputObject

Si tratta di una convenzione specificata nella specifica POSIX Shell e Utilities.

Token di arresto dell'analisi (--%)

Il token di interruzione dell'analisi (--%) impedisce a PowerShell di interpretare le stringhe come comandi ed espressioni di PowerShell. In questo modo tali stringhe possono essere passate ad altri programmi per l'interpretazione.

Posizionare il token di interruzione dell'analisi dopo il nome del programma e prima degli argomenti del programma che potrebbero causare errori.

In questo esempio, il Icacls comando usa il token di analisi di arresto.

icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F

PowerShell invia la stringa seguente a Icacls.

X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

In questo secondo esempio la variabile $HOME viene passata due volte al cmd.exe /c echo comando .

cmd.exe /c echo $HOME --% $HOME

L'output mostra che la prima istanza di $HOME viene interpretata da PowerShell in modo che il valore della variabile venga passato a cmd. La seconda istanza di $HOME viene eseguita dopo il token di analisi di arresto, quindi viene passata come stringa letterale.

C:\Users\username  $HOME

Per altre informazioni sul token di arresto dell'analisi, vedere about_Parsing.

Tilde (~)

Il carattere tilde (~) ha un significato speciale in PowerShell. Quando viene usato con i comandi di PowerShell all'inizio di un percorso, PowerShell espande il carattere tilde nella home directory dell'utente. Se si usa il carattere tilde ovunque in un percorso, viene considerato come un carattere letterale.

Per altre informazioni sul token di arresto dell'analisi, vedere about_Parsing.

Vedi anche