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 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 łączone z separatorem $OFSdomyślnym .

Uwaga

Po ustawieniu $OFS jej wartości jest używana do łączenia tablic, gdy są konwertowane na ciągi, dopóki zmienna nie zostanie zresetowana do $null. Ponieważ użycie $OFS polecenia może mieć niezamierzone efekty w innym miejscu kodu, najlepiej zamiast tego 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 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"

Get-ChildItem używa parametru Directory , aby pobrać wszystkie nazwy katalogów C:\ dla dysku. Obiekty są wysyłane w dół potoku do Join-Stringelementu . Parametr Property 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-ChildItemSystem.IO.DirectoryInfo i Join-String konwertuje 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 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 C:\ dla dysku. Obiekty są wysyłane w dół potoku do Join-Stringelementu .

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 znakami pojedynczego cudzysłowu. Parametr Separator określa, aby używać średnika (;) do oddzielania 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

Get-Service używa parametru Name z parametrem , aby określić usługi rozpoczynające się od se*. Gwiazdka (*) jest symbolem wieloznacznymi dla dowolnego znaku.

Obiekty są wysyłane w dół potoku, który Join-String używa parametru Property do określenia nazw usług. Parametr Separator określa trzy znaki specjalne reprezentujące powrót karetki (`r), nowy wiersz (`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. 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

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 uniknąć, podwojając nawiasy klamrowe ({{ i }}).

Aby uzyskać więcej informacji, zobacz metodę String.Format i formatowanie złożone.

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 ma zostać przekonwertowane 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.

Domyślnie obiekty potoku są łączone bez separatora. Jeśli jest ustawiona zmienna preferencji Separator pola wyjściowego ($OFS), ta wartość jest używana, chyba że określono ten parametr.

Uwaga

Po ustawieniu $OFS jej wartości jest używana do łączenia tablic, gdy są konwertowane na ciągi, dopóki zmienna nie zostanie zresetowana do $null. Ponieważ użycie $OFS polecenia może mieć niezamierzone efekty w innym miejscu kodu, najlepiej zamiast tego użyć parametru Separator .

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