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.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:PSObject[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-OutputPrefix

Text som infogas före utdatasträngen. Strängen kan innehålla specialtecken som vagnretur (`r), ny rad (`n) och flik (`t).

Type:String
Aliases:op
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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).

Type:String
Aliases:os
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Property

Namnet på en egenskap, eller ett egenskapsuttryck, som ska konverteras till text.

Type:PSPropertyExpression
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SingleQuote

Omsluter strängvärdet för varje pipelineobjekt med enkla citattecken.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Indata

PSObject

Utdata

String