Condividi tramite


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 $OFSpredefinito .

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

Input

PSObject

Output

String