Join-String
Kombiniert Objekte aus der Pipeline in einer einzelnen Zeichenfolge.
Syntax
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>]
Beschreibung
Das Join-String
Cmdlet verknüpft Oder kombiniert Text aus Pipelineobjekten in eine einzelne Zeichenfolge.
Wenn keine Parameter angegeben werden, werden die Pipelineobjekte in eine Zeichenfolge konvertiert und mit dem Standardtrennzeichen $OFS
verknüpft.
Hinweis
Beim Festlegen $OFS
des Werts wird zum Verknüpfen von Arrays verwendet, wenn diese in Zeichenfolgen konvertiert werden, bis die Variable auf $null
zurückgesetzt wird. Da die Verwendung $OFS
unbeabsichtigte Auswirkungen an anderer Stelle im Code haben kann, empfiehlt es sich, stattdessen den Separator-Parameter zu verwenden.
Durch Angeben eines Eigenschaftsnamens wird der Wert der Eigenschaft in eine Zeichenfolge konvertiert und in eine Zeichenfolge eingebunden.
Anstelle eines Eigenschaftennamens kann ein Skriptblock verwendet werden. Das Ergebnis des Skriptblocks wird in eine Zeichenfolge konvertiert, bevor es zum Ergebnis verknüpft wird. Es kann entweder den Text der -Eigenschaft eines Objekts oder das Ergebnis des Objekts kombinieren, das in eine Zeichenfolge konvertiert wurde.
Dieses Cmdlet wurde in PowerShell 6.2 eingeführt.
Beispiele
Beispiel 1: Verzeichnisnamen verknüpfen
In diesem Beispiel werden Verzeichnisnamen verknüpft, die Ausgabe in doppelte Anführungszeichen umschließt und die Verzeichnisnamen durch ein Komma und Leerzeichen (,
) getrennt. Die Ausgabe ist ein Zeichenfolgenobjekt.
Get-ChildItem -Directory C:\ | Join-String -Property Name -DoubleQuote -Separator ', '
"PerfLogs", "Program Files", "Program Files (x86)", "Users", "Windows"
Get-ChildItem
verwendet den Directory-Parameter , um alle Verzeichnisnamen für das C:\
Laufwerk abzurufen.
Die -Objekte werden an die Pipeline Join-String
gesendet. Der Parameter Property gibt die Verzeichnisnamen an. Der DoubleQuote-Parameter umschließt die Verzeichnisnamen mit doppelten Anführungszeichen.
Der Separator-Parameter gibt an, dass ein Komma und Leerzeichen (,
) verwendet werden, um die Verzeichnisnamen zu trennen.
Die Get-ChildItem
Objekte sind System.IO.DirectoryInfo und Join-String
konvertiert die Objekte in System.String.
Beispiel 2: Verwenden einer Eigenschaftenunterzeichenfolge zum Verknüpfen von Verzeichnisnamen
In diesem Beispiel wird eine Subzeichenfolgenmethode verwendet, um die ersten vier Buchstaben von Verzeichnisnamen abzurufen, die Ausgabe in Anführungszeichen umschließt und die Verzeichnisnamen durch ein Semikolon (;
) getrennt.
Get-ChildItem -Directory C:\ | Join-String -Property {$_.Name.SubString(0,4)} -SingleQuote -Separator ';'
'Perf';'Prog';'Prog';'User';'Wind'
Get-ChildItem
verwendet den Directory-Parameter , um alle Verzeichnisnamen für das C:\
Laufwerk abzurufen.
Die -Objekte werden an die Pipeline Join-String
gesendet.
Der Skriptblock property parameter verwendet die automatische Variable ($_
), um die Name-Eigenschaftsteilzeichenfolge jedes Objekts anzugeben. Die Teilzeichenfolge ruft die ersten vier Buchstaben jedes Verzeichnisnamens ab. Die Teilzeichenfolge gibt die Start- und Endposition des Zeichens an. Der SingleQuote-Parameter umschließt die Verzeichnisnamen mit anführungszeichen. Der Separator-Parameter gibt an, dass ein Semikolon (;
) verwendet wird, um die Verzeichnisnamen zu trennen.
Weitere Informationen zu automatischen Variablen und Teilzeichenfolgen finden Sie unter about_Automatic_Variables und Teilzeichenfolge.
Beispiel 3: Anzeigen der Joinausgabe in einer separaten Zeile
In diesem Beispiel werden Dienstnamen mit jedem Dienst in einer separaten Zeile verknüpft und durch eine Registerkarte eingerückt.
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
verwendet den Name-Parameter mit, um Dienste anzugeben, die mit se*
beginnen. Das Sternchen (*
) ist ein Platzhalter für ein beliebiges Zeichen.
Die Objekte werden an die Pipeline gesendet, die Join-String
den Property-Parameter verwendet, um die Dienstnamen anzugeben. Der Separator-Parameter gibt drei Sonderzeichen an, die einen Wagenrücklauf (`r
), einen Zeilenumbruch (`n
) und eine Registerkarte (`t
) darstellen. OutputPrefix fügt eine Bezeichnung Services:
mit einer neuen Zeile und registerkarte vor der ersten Zeile der Ausgabe ein.
Weitere Informationen zu Sonderzeichen finden Sie unter about_Special_Characters.
Beispiel 4: Create einer Klassendefinition aus einem Objekt
In diesem Beispiel wird eine PowerShell-Klassendefinition generiert, die ein vorhandenes Objekt als Vorlage verwendet.
In diesem Codebeispiel wird splatting verwendet, um die Zeilenlänge zu verringern und die Lesbarkeit zu verbessern. Weitere Informationen finden Sie unter 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
}
Parameter
-DoubleQuote
Umschließt den Zeichenfolgenwert jedes Pipelineobjekts in doppelte Anführungszeichen.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatString
Gibt eine Formatzeichenfolge an, die angibt, wie jedes Pipelineobjekt vor dem Hinzufügen formatiert werden soll. Verwenden Sie den {0}
Platzhalter, um das aktuelle Objekt darzustellen. Wenn Sie die geschweiften Klammern ({}
) in der formatierten Zeichenfolge beibehalten müssen, können Sie sie mit escapen, indem Sie die geschweiften Klammern ({{
und }}
) verdoppeln.
Weitere Informationen finden Sie unter String.Format-Methode und Zusammengesetzte Formatierung.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Gibt den text an, der verknüpft werden soll. Geben Sie eine Variable ein, die den Text enthält, oder geben Sie einen Befehl oder Ausdruck ein, der die Objekte abruft, die in Zeichenfolgen verknüpft werden sollen.
Type: | PSObject[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-OutputPrefix
Text, der vor der Ausgabezeichenfolge eingefügt wird. Die Zeichenfolge kann Sonderzeichen wie Wagenrücklauf (`r
), Zeilenumbruch (`n
) und Registerkarte (`t
) enthalten.
Type: | String |
Aliases: | op |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutputSuffix
Text, der an die Ausgabezeichenfolge angefügt wird. Die Zeichenfolge kann Sonderzeichen wie Wagenrücklauf (`r
), Zeilenumbruch (`n
) und Registerkarte (`t
) enthalten.
Type: | String |
Aliases: | os |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Property
Der Name einer Eigenschaft oder eines Eigenschaftsausdrucks, der in Text konvertiert werden soll.
Type: | PSPropertyExpression |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Separator
Text oder Zeichen wie ein Komma oder Semikolon, das zwischen den Text für jedes Pipelineobjekt eingefügt wird.
Standardmäßig werden die Pipelineobjekte ohne Trennzeichen verknüpft. Wenn die Einstellungsvariable Ausgabefeldtrennzeichen ($OFS
) festgelegt ist, wird dieser Wert verwendet, es sei denn, dieser Parameter wird angegeben.
Hinweis
Beim Festlegen $OFS
des Werts wird zum Verknüpfen von Arrays verwendet, wenn diese in Zeichenfolgen konvertiert werden, bis die Variable auf $null
zurückgesetzt wird. Da die Verwendung $OFS
unbeabsichtigte Auswirkungen an anderer Stelle im Code haben kann, empfiehlt es sich, stattdessen den Separator-Parameter zu verwenden.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SingleQuote
Umschließt den Zeichenfolgenwert jedes Pipelineobjekts in einzelnen Anführungszeichen.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseCulture
Verwendet das Listentrennzeichen für die aktuelle Kultur als Elementtrennzeichen. Verwenden Sie den folgenden Befehl, um das Listentrennzeichen für eine Kultur zu suchen: (Get-Culture).TextInfo.ListSeparator
.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |