Udostępnij za pośrednictwem


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"

używa parametru directory Directory, aby pobrać wszystkie nazwy katalogów dla dysku . Obiekty są wysyłane w dół potoku do 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-ChildItemSystem.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'

używa parametru directory Directory, aby pobrać wszystkie nazwy katalogów dla dysku . Obiekty są wysyłane w dół potoku do Join-String.

Blok skryptu właściwości używa zmiennej automatycznej () do określenia podciągów właściwości nazwa 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 znakami pojedynczego cudzysłowu. Parametr separatora określa użycie średnika (;) 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

używa parametru Name w celu określenia usług rozpoczynających się od . Gwiazdka (*) jest symbolem wieloznacznymi dla dowolnego znaku.

Obiekty są wysyłane w dół potoku do , który używa parametru właściwości w celu określenia nazw usług. Parametr separatora określa trzy znaki specjalne reprezentujące powrót karetki (`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

Dane wejściowe

PSObject

Dane wyjściowe

String