Sdílet prostřednictvím


Join-String

Kombinuje objekty z kanálu do jednoho řetězce.

Syntaxe

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

Rutina Join-String spojí nebo zkombinuje text z objektů kanálu do jednoho řetězce.

Pokud nejsou zadány žádné parametry, objekty kanálu jsou převedeny na řetězec a spojené s výchozím oddělovačem $OFS.

Poznámka:

Když nastavíte $OFS jeho hodnotu, použije se ke spojení polí při jejich převodu na řetězce, dokud proměnná nebude resetována na $null. Vzhledem k tomu, že použití $OFS může mít nežádoucí účinky jinde v kódu, je nejlepší místo toho použít parametr Oddělovač .

Zadáním názvu vlastnosti se hodnota vlastnosti převede na řetězec a spojí se do řetězce.

Místo názvu vlastnosti lze použít blok skriptu. Výsledek bloku skriptu se před spojením převede na řetězec a vytvoří výsledek. Může buď zkombinovat text vlastnosti objektu, nebo výsledek objektu, který byl převeden na řetězec.

Tato rutina byla představena v PowerShellu 6.2.

Příklady

Příklad 1: Připojení názvů adresářů

Tento příklad spojí názvy adresářů, zabalí výstup do dvojitých uvozovek a rozdělí názvy adresářů čárkou a mezerou (, ). Výstup je objekt řetězce.

Get-ChildItem -Directory C:\ | Join-String -Property Name -DoubleQuote -Separator ', '

"PerfLogs", "Program Files", "Program Files (x86)", "Users", "Windows"

Get-ChildItem pomocí parametru Directory získá všechny názvy adresářů pro jednotku C:\ . Objekty se odesílají do kanálu do Join-String. Parametr Property určuje názvy adresářů. Parametr DoubleQuote zabalí názvy adresářů dvojitými uvozovkami. Parametr Oddělovač určuje použití čárky a mezery (, ) k oddělení názvů adresářů.

Objekty Get-ChildItem jsou System.IO.DirectoryInfo a Join-String převádí objekty na System.String.

Příklad 2: Použití podřetětědce vlastnosti pro připojení názvů adresářů

Tento příklad používá metodu podřetědce k získání prvních čtyř písmen názvů adresářů, zabalí výstup do jednoduchých uvozovek a odděluje názvy adresářů středníkem (;).

Get-ChildItem -Directory C:\ | Join-String -Property {$_.Name.SubString(0,4)} -SingleQuote -Separator ';'

'Perf';'Prog';'Prog';'User';'Wind'

Get-ChildItem pomocí parametru Directory získá všechny názvy adresářů pro jednotku C:\ . Objekty se odesílají do kanálu do Join-String.

Blok skriptu parametru vlastnosti používá automatickou proměnnou ($_) k určení podřetědce vlastnosti Name každého objektu. Podřetětěr získá první čtyři písmena každého názvu adresáře. Podřetězce určuje počáteční a koncové pozice znaku. Parametr SingleQuote zabalí názvy adresářů do jednoduchých uvozovek. Parametr Oddělovač určuje použití středníku (;) k oddělení názvů adresářů.

Další informace o automatických proměnných a podřetěžcích najdete v tématu about_Automatic_Variables a podřetěžce.

Příklad 3: Zobrazení výstupu spojení na samostatném řádku

Tento příklad spojí názvy služeb s každou službou na samostatném řádku a odsadí se tabulátorem.

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-Servicepoužívá parametr Name k určení služeb, které začínají se*. Hvězdička (*) je zástupný znak pro libovolný znak.

Objekty se odesílají do kanálu, do Join-String kterého se pomocí parametru Property určí názvy služeb. Parametr Oddělovač určuje tři speciální znaky, které představují návrat na začátek řádku (`r), nový řádek (`n) a tabulátor (`t). OutputPrefix vloží popisek Services: s novým řádkem a tabulátorem před první řádek výstupu.

Další informace o speciálních znaznachách najdete v tématu about_Special_Characters.

Příklad 4: Vytvoření definice třídy z objektu

Tento příklad vygeneruje definici třídy PowerShellu pomocí existujícího objektu jako šablony.

Tento vzorový kód používá k zmenšení délky řádků a zlepšení čitelnosti. Další informace najdete v tématu 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
}

Parametry

-DoubleQuote

Zabalí řetězcovou hodnotu každého objektu kanálu do dvojitých uvozovek.

Typ:SwitchParameter
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-FormatString

Určuje formátovací řetězec, který určuje, jak má být každý objekt kanálu formátován před jejich spojením. {0} Zástupný symbol slouží k reprezentaci aktuálního objektu. Pokud potřebujete zachovat složené závorky ({}) ve formátovaném řetězci, můžete je utéct tak, že složených závorek ({{ a }}).

Další informace naleznete v String.Format metoda a složené formátování.

Typ:String
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-InputObject

Určuje text, který se má spojit. Zadejte proměnnou, která obsahuje text, nebo zadejte příkaz nebo výraz, který získá objekty pro spojení s řetězci.

Typ:PSObject[]
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-OutputPrefix

Text vložený před výstupní řetězec. Řetězec může obsahovat speciální znaky, jako je návrat na začátek řádku (`r), nový řádek (`n) a tabulátor (`t).

Typ:String
Aliasy:op
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-OutputSuffix

Text, který je připojený k výstupnímu řetězci. Řetězec může obsahovat speciální znaky, jako je návrat na začátek řádku (`r), nový řádek (`n) a tabulátor (`t).

Typ:String
Aliasy:os
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Property

Název vlastnosti nebo výraz vlastnosti, který se má převést na text.

Typ:PSPropertyExpression
Position:0
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Separator

Text nebo znaky, například čárka nebo středník vložený mezi text každého objektu kanálu.

Ve výchozím nastavení jsou objekty kanálu spojené bez oddělovače. Pokud je nastavena proměnná předvolby Oddělovač výstupních polí ($OFS), použije se tato hodnota, pokud není zadaný tento parametr.

Poznámka:

Když nastavíte $OFS jeho hodnotu, použije se ke spojení polí při jejich převodu na řetězce, dokud proměnná nebude resetována na $null. Vzhledem k tomu, že použití $OFS může mít nežádoucí účinky jinde v kódu, je nejlepší místo toho použít parametr Oddělovač .

Typ:String
Position:1
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-SingleQuote

Zabalí řetězcovou hodnotu každého objektu kanálu do jednoduchých uvozovek.

Typ:SwitchParameter
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-UseCulture

Použije oddělovač seznamu pro aktuální jazykovou verzi jako oddělovač položek. K vyhledání oddělovače seznamu pro jazykovou verzi použijte následující příkaz: (Get-Culture).TextInfo.ListSeparator.

Typ:SwitchParameter
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

Vstupy

PSObject

Výstupy

String