Join-String
Kombinerar objekt från pipelinen till en enda sträng.
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>]
Description
Cmdleten Join-String
sammanfogar, eller kombinerar, text från pipelineobjekt till en enda sträng.
Om inga parametrar anges konverteras pipelineobjekten till en sträng och kopplas med standardavgränsaren $OFS
.
Kommentar
När du anger $OFS
dess värde används för att koppla matriser när de konverteras till strängar tills variabeln återställs till $null
. Eftersom användning $OFS
kan ha oavsiktliga effekter någon annanstans i koden är det bäst att använda parametern Separator i stället.
Genom att ange ett egenskapsnamn konverteras egenskapens värde till en sträng och kopplas till en sträng.
I stället för ett egenskapsnamn kan ett skriptblock användas. Skriptblockets resultat konverteras till en sträng innan det kopplas till resultatet. Den kan antingen kombinera texten i ett objekts egenskap eller resultatet av objektet som konverterades till en sträng.
Den här cmdleten introducerades i PowerShell 6.2.
Exempel
Exempel 1: Koppla katalognamn
I det här exemplet kopplas katalognamn, utdata omsluts med dubbla citattecken och katalognamnen avgränsas med kommatecken och blanksteg (,
). Utdata är ett strängobjekt.
Get-ChildItem -Directory C:\ | Join-String -Property Name -DoubleQuote -Separator ', '
"PerfLogs", "Program Files", "Program Files (x86)", "Users", "Windows"
Get-ChildItem
använder parametern Directory för att hämta alla katalognamn för C:\
enheten.
Objekten skickas ned i pipelinen till Join-String
. Egenskapsparametern anger katalognamnen. Parametern DoubleQuote omsluter katalognamnen med dubbla citattecken.
Parametern Avgränsare anger att du ska använda kommatecken och blanksteg (,
) för att avgränsa katalognamnen.
Objekten Get-ChildItem
är System.IO.DirectoryInfo och Join-String
konverterar objekten till System.String.
Exempel 2: Använd en egenskapsundersträng för att koppla katalognamn
I det här exemplet används en substring-metod för att hämta de första fyra bokstäverna i katalognamn, omsluter utdata med enkla citattecken och separerar katalognamnen med ett semikolon (;
).
Get-ChildItem -Directory C:\ | Join-String -Property {$_.Name.SubString(0,4)} -SingleQuote -Separator ';'
'Perf';'Prog';'Prog';'User';'Wind'
Get-ChildItem
använder parametern Directory för att hämta alla katalognamn för C:\
enheten.
Objekten skickas ned i pipelinen till Join-String
.
Skriptblocket för egenskapsparametern använder automatisk variabel ($_
) för att ange varje objekts namnegenskapsundersträng. Delsträngen hämtar de första fyra bokstäverna i varje katalognamn. Delsträngen anger tecknets start- och slutpositioner. Parametern SingleQuote omsluter katalognamnen med enkla citattecken. Parametern Avgränsare anger att ett semikolon (;
) ska användas för att avgränsa katalognamnen.
Mer information om automatiska variabler och delsträngar finns i about_Automatic_Variables och Delsträng.
Exempel 3: Visa kopplingsutdata på en separat rad
I det här exemplet kopplas tjänstnamn till varje tjänst på en separat rad och dras in av en flik.
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
använder parametern Namn med för att ange tjänster som börjar med se*
. Asterisken (*
) är ett jokertecken för alla tecken.
Objekten skickas ned i pipelinen till Join-String
som använder egenskapsparametern för att ange tjänstnamnen. Parametern Avgränsare anger tre specialtecken som representerar en vagnretur (`r
), ny rad (`n
) och flik (`t
). OutputPrefix infogar en etikett Services:
med en ny rad och flik före den första raden med utdata.
Mer information om specialtecken finns i about_Special_Characters.
Exempel 4: Skapa en klassdefinition från ett objekt
Det här exemplet genererar en PowerShell-klassdefinition med hjälp av ett befintligt objekt som en mall.
Det här kodexemplet använder splatting för att minska radlängden och förbättra läsbarheten. Mer information finns i 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
}
Parametrar
-DoubleQuote
Omsluter strängvärdet för varje pipelineobjekt med dubbla citattecken.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-FormatString
Anger en formatsträng som anger hur varje pipelineobjekt ska formateras innan de ansluts. {0}
Använd platshållaren för att representera det aktuella objektet. Om du behöver behålla klammerparenteserna ({}
) i den formaterade strängen kan du undvika dem genom att fördubbla klammerparenteserna ({{
och }}
).
Mer information finns i metoden String.Format och sammansatt formatering.
Typ: | String |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-InputObject
Anger den text som ska kopplas. Ange en variabel som innehåller texten eller skriv ett kommando eller uttryck som hämtar objekten att ansluta till strängar.
Typ: | PSObject[] |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-OutputPrefix
Text som infogas före utdatasträngen. Strängen kan innehålla specialtecken som vagnretur (`r
), ny rad (`n
) och flik (`t
).
Typ: | String |
Alias: | op |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-OutputSuffix
Text som läggs till i utdatasträngen. Strängen kan innehålla specialtecken som vagnretur (`r
), ny rad (`n
) och flik (`t
).
Typ: | String |
Alias: | os |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Property
Namnet på en egenskap, eller ett egenskapsuttryck, som ska konverteras till text.
Typ: | PSPropertyExpression |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Separator
Text eller tecken, till exempel ett kommatecken eller semikolon som infogas mellan texten för varje pipelineobjekt.
Som standard är pipelineobjekten anslutna utan avgränsare. Om inställningsvariabeln för utdatafältavgränsare ($OFS
) har angetts används det värdet såvida inte den här parametern har angetts.
Kommentar
När du anger $OFS
dess värde används för att koppla matriser när de konverteras till strängar tills variabeln återställs till $null
. Eftersom användning $OFS
kan ha oavsiktliga effekter någon annanstans i koden är det bäst att använda parametern Separator i stället.
Typ: | String |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-SingleQuote
Omsluter strängvärdet för varje pipelineobjekt med enkla citattecken.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-UseCulture
Använder listavgränsaren för den aktuella kulturen som objektavgränsare. Om du vill hitta listavgränsaren för en kultur använder du följande kommando: (Get-Culture).TextInfo.ListSeparator
.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |