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 einer einzelnen Zeichenfolge.
Wenn keine Parameter angegeben werden, werden die Pipelineobjekte in eine Zeichenfolge konvertiert und mit dem Standardtrennzeichen $OFS
verknüpft.
Hinweis
Wenn Sie den Wert festlegen $OFS
, wird der Wert verwendet, um Arrays zu verbinden, wenn sie in Zeichenfolgen konvertiert werden, bis die Variable zurückgesetzt $null
wird. Da die Verwendung $OFS
unbeabsichtigte Effekte an anderer Stelle in Ihrem Code haben kann, ist es am besten, stattdessen den Parameter Separator zu verwenden.
Durch Angeben eines Eigenschaftsnamens wird der Wert der Eigenschaft in eine Zeichenfolge konvertiert und mit einer Zeichenfolge verknüpft.
Anstelle eines Eigenschaftennamens kann ein Skriptblock verwendet werden. Das Ergebnis des Skriptblocks wird in eine Zeichenfolge konvertiert, bevor es verknüpft ist, um das Ergebnis zu bilden. Sie 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 beitreten
In diesem Beispiel werden Verzeichnisnamen verknüpft, die Ausgabe in doppelte Anführungszeichen eingeschlossen und die Verzeichnisnamen durch 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 Parameter "Directory ", um alle Verzeichnisnamen für das C:\
Laufwerk abzurufen.
Die Objekte werden an die Pipeline gesendet.Join-String
Der Parameter Property gibt die Verzeichnisnamen an. Der Parameter DoubleQuote umschließt die Verzeichnisnamen mit doppelten Anführungszeichen.
Der Parameter Separator gibt an, dass ein Komma und ein 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 Eigenschaftsunterzeichenfolge zum Verknüpfen von Verzeichnisnamen
In diesem Beispiel wird eine Teilzeichenfolgenmethode verwendet, um die ersten vier Buchstaben von Verzeichnisnamen abzurufen, die Ausgabe in einfache Anführungszeichen umgebrochen 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 Parameter "Directory ", um alle Verzeichnisnamen für das C:\
Laufwerk abzurufen.
Die Objekte werden an die Pipeline gesendet.Join-String
Der Skriptblock des Property-Parameters verwendet die automatische Variable ($_
) zum Angeben der Teilzeichenfolge der Name-Eigenschaft jedes Objekts. Die Teilzeichenfolge ruft die ersten vier Buchstaben jedes Verzeichnisnamens ab. Die Teilzeichenfolge gibt die Anfangs- und Endpositionen des Zeichens an. Der SingleQuote-Parameter umschließt die Verzeichnisnamen durch Einfache Anführungszeichen. Der Parameter Separator gibt an, dass zum Trennen der Verzeichnisnamen ein Semikolon (;
) verwendet wird.
Weitere Informationen zu automatischen Variablen und Teilzeichenfolgen finden Sie unter about_Automatic_Variables und Teilzeichenfolge.
Beispiel 3: Anzeigen der Verknüpfungsausgabe in einer separaten Zeile
In diesem Beispiel werden Dienstnamen mit jedem Dienst in einer separaten Zeile verknüpft und von einer Registerkarte eingezogen.
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 Parameter Name , um Dienste anzugeben, die mit se*
. Das Sternchen (*
) ist ein Wildcard für ein beliebiges Zeichen.
Die Objekte werden an die Pipeline gesendet, an Join-String
die der Parameter Property zum Angeben der Dienstnamen verwendet wird. Der Parameter Separator gibt drei Sonderzeichen an, die einen Wagenrücklauf (), einen Zeilenumbruch (`r
`n
) und eine Registerkarte (`t
) darstellen. OutputPrefix fügt eine Beschriftung Services:
mit einer neuen Zeile und einer neuen Registerkarte vor der ersten Ausgabezeile ein.
Weitere Informationen zu Sonderzeichen finden Sie unter about_Special_Characters.
Beispiel 4: Erstellen einer Klassendefinition aus einem Objekt
In diesem Beispiel wird eine PowerShell-Klassendefinition mithilfe eines vorhandenen Objekts als Vorlage generiert.
In diesem Codebeispiel wird das 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.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-FormatString
Gibt eine Formatzeichenfolge an, die angibt, wie jedes Pipelineobjekt vor dem Verknüpfen 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 diese escapen, indem Sie die geschweiften geschweiften Klammern ({{
und }}
) verdoppeln.
Weitere Informationen finden Sie unter der String.Format-Methode und der zusammengesetzten Formatierung.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 mit Zeichenfolgen verknüpft werden sollen.
Typ: | PSObject[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-OutputPrefix
Text, der vor der Ausgabezeichenfolge eingefügt wird. Die Zeichenfolge kann Sonderzeichen wie Wagenrücklauf (), Zeilenumbruch (`r
`n
) und Tabstopp (`t
) enthalten.
Typ: | String |
Aliase: | op |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-OutputSuffix
Text, der an die Ausgabezeichenfolge angefügt wird. Die Zeichenfolge kann Sonderzeichen wie Wagenrücklauf (), Zeilenumbruch (`r
`n
) und Tabstopp (`t
) enthalten.
Typ: | String |
Aliase: | os |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Property
Der Name einer Eigenschaft oder eines Eigenschaftsausdrucks, der in Text konvertiert werden soll.
Typ: | PSPropertyExpression |
Position: | 0 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Separator
Text oder Zeichen wie ein Komma oder Semikolon, das zwischen dem 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 ist angegeben.
Hinweis
Wenn Sie den Wert festlegen $OFS
, wird der Wert verwendet, um Arrays zu verbinden, wenn sie in Zeichenfolgen konvertiert werden, bis die Variable zurückgesetzt $null
wird. Da die Verwendung $OFS
unbeabsichtigte Effekte an anderer Stelle in Ihrem Code haben kann, ist es am besten, stattdessen den Parameter Separator zu verwenden.
Typ: | String |
Position: | 1 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-SingleQuote
Umschließt den Zeichenfolgenwert jedes Pipelineobjekts in einfache Anführungszeichen.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 finden: (Get-Culture).TextInfo.ListSeparator
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |