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 cmdlet Join-String
łączy lub łączy tekst z obiektów potoku w jeden ciąg.
Jeśli nie określono żadnych parametrów, obiekty potoku są konwertowane na ciąg i łączone z separatorem domyślnym $OFS
.
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 w celu utworzenia wyniku. Może on łą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"
Join-String
. Parametr właściwości określa nazwy katalogów. Parametr DoubleQuote opakowuje nazwy katalogów znakami podwójnego cudzysłowu.
Parametr separatora określa użycie przecinka i spacji (,
) w celu oddzielenia nazw katalogów.
Obiekty Get-ChildItem
są System.IO.DirectoryInfo i Join-String
konwertują obiekty na System.String.
Przykład 2. Używanie podciągów właściwości do dołączania nazw katalogów
W tym przykładzie użyto metody podciągów, aby uzyskać pierwsze cztery litery nazw katalogów, opakowuje dane wyjściowe w pojedynczych 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'
Join-String
.
Blok skryptu właściwości ;
) w celu oddzielenia nazw 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
Ten przykład łączy nazwy usług 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
*
) jest symbolem wieloznacznymi dla dowolnego znaku.
Obiekty są wysyłane w dół potoku do `r
), newline (`n
) i tabulator (`t
).
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. Tworzenie definicji klasy na podstawie obiektu
W tym przykładzie jest generowana definicja klasy programu PowerShell przy użyciu istniejącego obiektu jako szablonu.
W tym przykładzie kodu użyto fragmentowania, 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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-FormatString
Ciąg formatu określający sposób formatowania każdego elementu.
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-InputObject
Określa tekst do sprzężenia. Wprowadź zmienną zawierającą tekst lub wpisz polecenie lub wyrażenie, które pobiera obiekty do sprzężenia w ciągi.
Typ: | PSObject[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | 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
).
Typ: | String |
Aliasy: | op |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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
).
Typ: | String |
Aliasy: | os |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Property
Nazwa właściwości lub wyrażenie właściwości, które będzie projektować obiekt potoku na tekst.
Typ: | PSPropertyExpression |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Separator
Tekst lub znaki, takie jak przecinek lub średnik wstawiony między tekstem dla każdego obiektu potoku.
Typ: | String |
Position: | 1 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-SingleQuote
Opakowuje wartość ciągu każdego obiektu potoku w pojedynczych cudzysłowach.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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
.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |