Join-String
Combina oggetti dalla pipeline in una singola stringa.
Sintassi
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-SingleQuote]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-DoubleQuote]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-FormatString <String>]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
Descrizione
Il Join-String
cmdlet unisce o combina testo da oggetti pipeline in una singola stringa.
Se non vengono specificati parametri, gli oggetti pipeline vengono convertiti in una stringa e uniti con il separatore $OFS
predefinito .
Nota
Quando si imposta $OFS
il relativo valore viene usato per unire matrici quando vengono convertite in stringhe fino a quando la variabile non viene reimpostata su $null
. Poiché l'uso $OFS
di può avere effetti imprevisti altrove nel codice, è preferibile usare invece il parametro Separator .
Specificando un nome di proprietà, il valore della proprietà viene convertito in una stringa e unito in una stringa.
Anziché un nome di proprietà, è possibile usare un blocco di script. Il risultato del blocco di script viene convertito in una stringa prima che venga unito al risultato. Può combinare il testo della proprietà di un oggetto o il risultato dell'oggetto convertito in una stringa.
Questo cmdlet è stato introdotto in PowerShell 6.2.
Esempio
Esempio 1: Aggiungere nomi di directory
Questo esempio unisce i nomi di directory, esegue il wrapping dell'output tra virgolette doppie e separa i nomi di directory con una virgola e uno spazio (,
). L'output è un oggetto stringa.
Get-ChildItem -Directory C:\ | Join-String -Property Name -DoubleQuote -Separator ', '
"PerfLogs", "Program Files", "Program Files (x86)", "Users", "Windows"
Get-ChildItem
usa il parametro Directory per ottenere tutti i nomi di directory per l'unità C:\
.
Gli oggetti vengono inviati alla pipeline a Join-String
. Il parametro Property specifica i nomi di directory. Il parametro DoubleQuote esegue il wrapping dei nomi di directory con virgolette doppie.
Il parametro Separator consente di utilizzare una virgola e uno spazio (,
) per separare i nomi di directory.
Gli Get-ChildItem
oggetti sono System.IO.DirectoryInfo e Join-String
convertono gli oggetti in System.String.
Esempio 2: Usare una sottostringa di proprietà per aggiungere nomi di directory
Questo esempio usa un metodo di sottostringa per ottenere le prime quattro lettere di nomi di directory, esegue il wrapping dell'output tra virgolette singole e separa i nomi di directory con un punto e virgola (;
).
Get-ChildItem -Directory C:\ | Join-String -Property {$_.Name.SubString(0,4)} -SingleQuote -Separator ';'
'Perf';'Prog';'Prog';'User';'Wind'
Get-ChildItem
usa il parametro Directory per ottenere tutti i nomi di directory per l'unità C:\
.
Gli oggetti vengono inviati alla pipeline a Join-String
.
Il blocco script del parametro Property usa la variabile automatica ($_
) per specificare la sottostringa della proprietà Name di ogni oggetto. La sottostringa ottiene le prime quattro lettere di ogni nome di directory. La sottostringa specifica le posizioni iniziale e finale del carattere. Il parametro SingleQuote esegue il wrapping dei nomi di directory con virgolette singole. Il parametro Separator consente di specificare l'utilizzo di un punto e virgola (;
) per separare i nomi di directory.
Per altre informazioni sulle variabili automatiche e le sottostringhe, vedere about_Automatic_Variables e Substring.
Esempio 3: Visualizzare l'output di join in una riga separata
Questo esempio unisce i nomi dei servizi a ogni servizio in una riga separata e rientrati da una scheda.
Get-Service -Name se* | Join-String -Property Name -Separator "`r`n`t" -OutputPrefix "Services:`n`t"
Services:
seclogon
SecurityHealthService
SEMgrSvc
SENS
Sense
SensorDataService
SensorService
SensrSvc
SessionEnv
Get-Service
usa il parametro Name con per specificare i servizi che iniziano con se*
. L'asterisco (*
) è un carattere jolly per qualsiasi carattere.
Gli oggetti vengono inviati nella pipeline a Join-String
che utilizza il parametro Property per specificare i nomi del servizio. Il parametro Separator consente di specificare tre caratteri speciali che rappresentano un ritorno a capo (`r
), una nuova riga (`n
) e una scheda (`t
). OutputPrefix inserisce un'etichetta Services:
con una nuova riga e una nuova scheda prima della prima riga di output.
Per altre informazioni sui caratteri speciali, vedere about_Special_Characters.
Esempio 4: Creare una definizione di classe da un oggetto
Questo esempio genera una definizione di classe di PowerShell usando un oggetto esistente come modello.
Questo esempio di codice usa lo splatting per ridurre la lunghezza della riga e migliorare la leggibilità. Per altre informazioni, vedere about_Splatting.
$obj = [pscustomobject] @{Name = "Joe"; Age = 42}
$parms = @{
Property = "Name"
FormatString = ' ${0}'
OutputPrefix = "class {`n"
OutputSuffix = "`n}`n"
Separator = "`n"
}
$obj.PSObject.Properties | Join-String @parms
class {
$Name
$Age
}
Parametri
-DoubleQuote
Esegue il wrapping del valore stringa di ogni oggetto pipeline tra virgolette doppie.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-FormatString
Specifica una stringa di formato che specifica la modalità di formattazione di ogni oggetto pipeline prima di unirle. Utilizzare il {0}
segnaposto per rappresentare l'oggetto corrente. Se è necessario mantenere le parentesi graffe ({}
) nella stringa formattata, è possibile eseguirne l'escape raddoppiando le parentesi graffe ({{
e }}
).
Per altre informazioni, vedere il metodo String.Format e la formattazione composita.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-InputObject
Specifica il testo da unire. Immettere una variabile contenente il testo o digitare un comando o un'espressione che ottiene gli oggetti da unire in stringhe.
Tipo: | PSObject[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-OutputPrefix
Testo inserito prima della stringa di output. La stringa può contenere caratteri speciali, ad esempio ritorno a capo (`r
), nuova riga (`n
) e tabulazioni (`t
).
Tipo: | String |
Alias: | op |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-OutputSuffix
Testo aggiunto alla stringa di output. La stringa può contenere caratteri speciali, ad esempio ritorno a capo (`r
), nuova riga (`n
) e tabulazioni (`t
).
Tipo: | String |
Alias: | os |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Property
Nome di una proprietà o di un'espressione di proprietà da convertire in testo.
Tipo: | PSPropertyExpression |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Separator
Testo o caratteri, ad esempio una virgola o un punto e virgola inserito tra il testo per ogni oggetto pipeline.
Per impostazione predefinita, gli oggetti pipeline vengono uniti senza un separatore. Se la variabile di preferenza Separatore campo di output ($OFS
) è impostata, tale valore viene utilizzato a meno che non venga specificato questo parametro.
Nota
Quando si imposta $OFS
il relativo valore viene usato per unire matrici quando vengono convertite in stringhe fino a quando la variabile non viene reimpostata su $null
. Poiché l'uso $OFS
di può avere effetti imprevisti altrove nel codice, è preferibile usare invece il parametro Separator .
Tipo: | String |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-SingleQuote
Esegue il wrapping del valore stringa di ogni oggetto pipeline tra virgolette singole.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-UseCulture
Usa il separatore di elenco per le impostazioni cultura correnti come delimitatore di elemento. Per trovare il separatore di elenco per le impostazioni cultura, usare il comando seguente: (Get-Culture).TextInfo.ListSeparator
.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |