Join-String
Łączy obiekty z potoku w jeden ciąg.
Składnia
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>]
Opis
Polecenie Join-String
cmdlet łączy lub łączy tekst z obiektów potoku w jeden ciąg.
Jeśli nie określono parametrów, obiekty potoku są konwertowane na ciąg i połączone z separatorem $OFS
domyślnym .
Uwaga
Po ustawieniu $OFS
jej wartości jest używana do sprzężenia tablic, gdy są konwertowane na ciągi, dopóki zmienna nie zostanie zresetowana do $null
wartości . Ponieważ użycie $OFS
może mieć niezamierzone efekty w innym miejscu w kodzie, najlepiej użyć parametru Separator .
Określając nazwę właściwości, wartość właściwości jest konwertowana na ciąg i przyłączona do ciągu.
Zamiast nazwy właściwości można użyć bloku skryptu. Wynik bloku skryptu jest konwertowany na ciąg, zanim zostanie przyłączony do wyniku. Może łączyć tekst właściwości obiektu lub wynik obiektu, który został przekonwertowany na ciąg.
To polecenie cmdlet zostało wprowadzone w programie PowerShell 6.2.
Przykłady
Przykład 1. Dołączanie nazw katalogów
Ten przykład łączy nazwy katalogów, opakowuje dane wyjściowe w cudzysłowach i oddziela nazwy katalogów przecinkami i spacją (,
). Dane wyjściowe są obiektem ciągu.
Get-ChildItem -Directory C:\ | Join-String -Property Name -DoubleQuote -Separator ', '
"PerfLogs", "Program Files", "Program Files (x86)", "Users", "Windows"
Get-ChildItem
używa parametru Directory , aby pobrać wszystkie nazwy katalogów dla C:\
dysku.
Obiekty są wysyłane w dół potoku do Join-String
. Parametr Właściwość określa nazwy katalogów. Parametr DoubleQuote opakowuje nazwy katalogów znakami podwójnego cudzysłowu.
Parametr Separator określa, aby oddzielić nazwy katalogów za pomocą przecinka i spacji (,
).
Obiekty Get-ChildItem
są System.IO.DirectoryInfo i Join-String
konwertuje obiekty na System.String.
Przykład 2. Dołączanie nazw katalogów przy użyciu podciągów właściwości
W tym przykładzie użyto metody podciągów, aby uzyskać pierwsze cztery litery nazw katalogów, owija dane wyjściowe w cudzysłowach i oddziela nazwy katalogów średnikami (;
).
Get-ChildItem -Directory C:\ | Join-String -Property {$_.Name.SubString(0,4)} -SingleQuote -Separator ';'
'Perf';'Prog';'Prog';'User';'Wind'
Get-ChildItem
używa parametru Directory , aby pobrać wszystkie nazwy katalogów dla C:\
dysku.
Obiekty są wysyłane w dół potoku do Join-String
.
Blok skryptu parametru właściwości używa zmiennej automatycznej ($_
), aby określić podciąg właściwości Name każdego obiektu. Podciąg pobiera pierwsze cztery litery każdej nazwy katalogu. Podciąg określa położenie początkowe i końcowe znaku. Parametr SingleQuote opakowuje nazwy katalogów z znacznikami pojedynczego cudzysłowu. Parametr Separator określa, aby użyć średnika (;
), aby oddzielić nazwy katalogów.
Aby uzyskać więcej informacji na temat zmiennych automatycznych i podciągów, zobacz about_Automatic_Variables i podciąg.
Przykład 3. Wyświetlanie danych wyjściowych sprzężenia w osobnym wierszu
W tym przykładzie nazwy usług są łączone z każdą usługą w osobnym wierszu i wcięciem na karcie.
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
używa parametru Name z parametrem , aby określić usługi rozpoczynające się od se*
. Gwiazdka (*
) to symbol wieloznaczny dla dowolnego znaku.
Obiekty są wysyłane w dół potoku do, który używa parametru Property do Join-String
określenia nazw usług. Parametr Separator określa trzy znaki specjalne reprezentujące powrót karetki (), nowy wiersz (`r
`n
) i kartę (`t
). Element OutputPrefix wstawia etykietę Services:
z nowym wierszem i kartą przed pierwszym wierszem danych wyjściowych.
Aby uzyskać więcej informacji na temat znaków specjalnych, zobacz about_Special_Characters.
Przykład 4: Twórca definicji klasy z obiektu
W tym przykładzie jest generowana definicja klasy programu PowerShell przy użyciu istniejącego obiektu jako szablonu.
Ten przykładowy kod używa splattingu, aby zmniejszyć długość wiersza i zwiększyć czytelność. Aby uzyskać więcej informacji, zobacz 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
Opakowuje wartość ciągu każdego obiektu potoku w cudzysłowach.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatString
Określa ciąg formatu określający sposób formatowania każdego obiektu potoku przed ich dołączeniem. Użyj symbolu zastępczego {0}
, aby reprezentować bieżący obiekt. Jeśli musisz zachować nawiasy klamrowe ({}
) w sformatowanych ciągach, możesz je uciec, podwajając nawiasy klamrowe ({{
i }}
).
Aby uzyskać więcej informacji, zobacz metodę String.Format i formatowanie złożone.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Określa tekst, który ma zostać przyłączony. Wprowadź zmienną zawierającą tekst lub wpisz polecenie lub wyrażenie, które pobiera obiekty do sprzężenia w ciągi.
Type: | PSObject[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-OutputPrefix
Tekst wstawiony przed ciągiem wyjściowym. Ciąg może zawierać znaki specjalne, takie jak powrót karetki (`r
), nowy wiersz (`n
) i tabulator (`t
).
Type: | String |
Aliases: | op |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutputSuffix
Tekst dołączony do ciągu wyjściowego. Ciąg może zawierać znaki specjalne, takie jak powrót karetki (`r
), nowy wiersz (`n
) i tabulator (`t
).
Type: | String |
Aliases: | os |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Property
Nazwa właściwości lub wyrażenie właściwości, które ma zostać przekonwertowane na tekst.
Type: | PSPropertyExpression |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Separator
Tekst lub znaki, takie jak przecinek lub średnik wstawiony między tekstem dla każdego obiektu potoku.
Domyślnie obiekty potoku są sprzężone bez separatora. Jeśli zmienna preferencji separatora pól wyjściowych ($OFS
) jest ustawiona, ta wartość jest używana, chyba że określono ten parametr.
Uwaga
Po ustawieniu $OFS
jej wartości jest używana do sprzężenia tablic, gdy są konwertowane na ciągi, dopóki zmienna nie zostanie zresetowana do $null
wartości . Ponieważ użycie $OFS
może mieć niezamierzone efekty w innym miejscu w kodzie, najlepiej użyć parametru Separator .
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SingleQuote
Opakowuje wartość ciągu każdego obiektu potoku w pojedynczych cudzysłowach.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseCulture
Używa separatora listy dla bieżącej kultury jako ogranicznika elementu. Aby znaleźć separator listy dla kultury, użyj następującego polecenia: (Get-Culture).TextInfo.ListSeparator
.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |