ARGOMENTO about_Quoting_Rules DESCRIZIONE BREVE Descrive le regole per l'utilizzo delle virgolette singole e doppie in Windows PowerShell. DESCRIZIONE DETTAGLIATA Le virgolette sono utilizzate per specificare una stringa letterale. Una stringa può essere racchiusa tra virgolette singole (') o doppie ("). Le virgolette sono utilizzate anche per creare una stringa here. Una stringa here è una stringa racchiuse tra virgolette singole o doppie in cui le virgolette sono interpretate letteralmente. Una stringa here si può estendere su più righe. Tutte le righe di una stringa here vengono interpretate come stringhe, anche se non sono racchiuse tra virgolette. Nei comandi ai computer remoti, le virgolette definiscono le parti del comando che vengono eseguite nel computer remoto. In una sessione remota, le virgolette determinano anche se le variabili in un comando sono interpretate prima nel computer locale o nel computer remoto. Stringhe racchiuse tra virgolette semplici e doppie Se si racchiude una stringa tra virgolette doppie, i nomi di variabile preceduti dal simbolo del dollaro ($) vengono sostituiti con il valore della variabile prima che la stringa venga passata al comando per essere elaborata. Ad esempio: $i = 5 "Il valore di $i è $i." L'output di questo comando è il seguente: Il valore di 5 è 5 Inoltre, in una stringa racchiusa tra virgolette doppie, vengono valutate le espressioni e il risultato viene inserito nella stringa. Ad esempio: "Il valore di $(2+3) è 5." L'output di questo comando è il seguente: Il valore di 5 è 5 Se si racchiude una stringa tra virgolette semplici, la stringa viene passata al comando esattamente come la si digita. Non viene eseguita alcuna sostituzione. Ad esempio: $i = 5 'Il valore di $i è $i.' L'output di questo comando è il seguente: Il valore di $i è $i. Analogamente, le espressioni in stringhe racchiuse tra virgolette singole non sono valutate. Vengono interpretati come valori letterali. Ad esempio: 'Il valore di $(2+3) è 5.' L'output di questo comando è il seguente: Il valore di $(2+3) è 5. Per impedire la sostituzione di un valore di variabile in una stringa racchiusa tra virgolette doppie, utilizzare il carattere di apice inverso (`)(ASCII 96) che rappresenta il carattere di escape di Windows PowerShell. Nell'esempio seguente, il carattere di apice inverso che precede la prima variabile $i impedisce che il nome della variabile venga sostituito con il suo valore in Windows PowerShell. Ad esempio: $i = 5 "Il valore di `$i è $i." L'output di questo comando è il seguente: Il valore di $i è 5. Per fare sì che le virgolette doppie vengano visualizzate in una stringa, racchiudere l'intera stringa tra virgolette semplici. Ad esempio: 'Dice il detto: "Vivi e lascia vivere".' L'output di questo comando è il seguente: Dice il detto: "Vivi e lascia vivere". È anche possibile includere una stringa racchiusa tra virgolette singole in una stringa racchiusa tra virgolette doppie. Ad esempio: "Dice il detto: 'Vivi e lascia vivere'." L'output di questo comando è il seguente: Dice il detto: 'Vivi e lascia vivere'. In alternativa, raddoppiare le virgolette attorno a una frase racchiusa tra virgolette doppie. Ad esempio: "Dice il detto: ""Vivi e lascia vivere""." L'output di questo comando è il seguente: Dice il detto: "Vivi e lascia vivere". Per includere una virgoletta singola in una stringa racchiusa tra virgolette singole, utilizzare una seconda virgoletta singola consecutiva. Ad esempio: 'l''esempio' L'output di questo comando è il seguente: l'esempio Per forzare Windows PowerShell a interpretare letteralmente una virgoletta doppia, utilizzare un carattere di apice inverso. In questo modo si impedisce a Windows PowerShell di interpretare le virgolette come un delimitatore di stringa. Ad esempio: "Utilizzare le virgolette (`") per iniziare una stringa." Poiché il contenuto delle stringhe racchiuse tra virgolette singole è interpretato letteralmente, non è possibile utilizzare il carattere di apice inverso per forzare l'interpretazione di un carattere letterale in una stringa racchiusa tra virgolette singole. Ad esempio, il comando seguente genera un errore poiché Windows PowerShell non riconosce il carattere di escape. La seconda virgoletta viene, viceversa, interpretata come la fine della stringa. PS C:\> 'Utilizzare una virgoletta (`') per iniziare una stringa.' Token ')' imprevisto nell'espressione o nell'istruzione. At line:1 char:27 + 'Utilizzare una virgoletta (`') <<<< per iniziare una stringa.' Stringhe here racchiuse tra virgolette semplici e doppie Le regole di uso delle virgolette per le stringe here sono leggermente diverse. Una stringa here è una stringa racchiuse tra virgolette singole o doppie in cui le virgolette sono interpretate letteralmente. Una stringa here si può estendere su più righe. Tutte le righe di una stringa here vengono interpretate come stringhe, anche se non sono racchiuse tra virgolette. Come nelle stringhe normali, le variabili sono sostituite dal loro valore nelle stringhe here racchiuse tra virgolette doppie. Nelle stringhe here racchiuse tra virgolette singole, le variabili non sono sostituite dal loro valore. È possibile utilizzare stringhe here per qualsiasi testo, ma sono particolarmente utili per i tipi di testo seguenti: - testo che contiene virgolette letterali; - più righe di testo, ad esempio il testo in un documento HTML o XML; - il testo della Guida per uno script o funzione. Una stringa here può presentare qualsiasi dei formati seguenti, dove <Invio> rappresenta il carattere nascosto di avanzamento di riga o di nuova riga che viene aggiunto quando si preme il tasto INVIO. Formato 1: @"<Invio> <string> [string] ...<Invio> "@ Formato 2: @'<Invio> <string> [string] ...<Invio> '@ In entrambi i formati, la virgoletta di chiusura deve essere il primo carattere nella riga. Una stringa here contiene tutto il testo tra i due caratteri nascosti. Nella stringa here, tutte le virgolette sono interpretate letteralmente. Ad esempio: @" Per accedere alla Guida, digitare "get-help" "@ L'output di questo comando è il seguente: Per accedere alla Guida, digitare "get-help" L'utilizzo di una stringa here può semplificare l'utilizzo di una stringa in un comando. Ad esempio: @" Utilizzare una virgoletta (') per iniziare una stringa. "@ L'output di questo comando è il seguente: Utilizzare una virgoletta (') per iniziare una stringa. Nelle stringhe here racchiuse tra virgolette singole, le variabili sono interpretate letteralmente e vengono riprodotte esattamente. Ad esempio: @' La variabile $profile contiene il percorso del profilo di Windows PowerShell. '@ L'output di questo comando è il seguente: La variabile $profile contiene il percorso del profilo di Windows PowerShell. Nelle stringhe here racchiuse tra virgolette doppie, le variabili sono sostituite dai loro valori. Ad esempio: @" Anche se non è stato creato un profilo, il percorso del file di profilo è: $profile. "@ L'output di questo comando è il seguente: Anche se non è stato creato un profilo il percorso del file di profilo è: C:\Users\User01\Documenti\WindowsPowerShell\Microsoft.PowerShell_profile.ps1. Le stringhe here sono utilizzate in genere per assegnare più righe a una variabile. Ad esempio, la stringa here seguente assegna una pagina di XML alla variabile $page. $page = [XML] @" <command:command xmlns:maml="https://schemas.microsoft.com/maml/2004/10" xmlns:command="https://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="https://schemas.microsoft.com/maml/dev/2004/10"> <command:details> <command:name> Format-Table </command:name> <maml:description> <maml:para>Formats the output as a table.</maml:para> </maml:description> <command:verb>format</command:verb> <command:noun>table</command:noun> <dev:version></dev:version> </command:details> ... </command:command> "@ Le stringhe here rappresentano inoltre un formato pratico per l'input nel cmdlet ConvertFrom-StringData che converte le stringhe here in tabelle hash. Per ulteriori informazioni, vedere ConvertFrom-StringData. VEDERE ANCHE about_Escape_Characters ConvertFrom-StringData