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-Service
použí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 |