Join-String

Объединяет объекты из конвейера в одну строку.

Синтаксис

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>]

Описание

Командлет Join-String объединяет или объединяет текст из объектов конвейера в одну строку.

Если параметры не указаны, объекты конвейера преобразуются в строку и соединяются с разделителем $OFSпо умолчанию .

При указании имени свойства значение свойства преобразуется в строку и объединяется в строку.

Вместо имени свойства можно использовать блок скрипта. Результат блока скрипта преобразуется в строку перед его соединением для формирования результата. Он может объединять текст свойства объекта или результат объекта, преобразованного в строку.

Этот командлет появился в PowerShell 6.2.

Примеры

Пример 1. Присоединение имен каталогов

В этом примере имена каталогов объединяются, выходные данные заключены в двойные кавычки и имена каталогов разделяются запятыми и пробелами (, ). Выходные данные являются строковым объектом.

Get-ChildItem -Directory C:\ | Join-String -Property Name -DoubleQuote -Separator ', '

"PerfLogs", "Program Files", "Program Files (x86)", "Users", "Windows"

Get-ChildItem использует параметр Directory для получения всех имен каталогов C:\ для диска. Объекты отправляются по конвейеру в Join-String. Параметр Property указывает имена каталогов. Параметр DoubleQuote заключает имена каталогов в двойные кавычки. Параметр Separator указывает на использование запятой и пробела (, ) для разделения имен каталогов.

Объекты Get-ChildItem являются System.IO.DirectoryInfo и Join-String преобразуют их в System.String.

Пример 2. Использование подстроки свойства для объединения имен каталогов

В этом примере метод подстроки используется для получения первых четырех букв имен каталогов, заключает выходные данные в одинарные кавычки и разделяет имена каталогов точкой с запятой (;).

Get-ChildItem -Directory C:\ | Join-String -Property {$_.Name.SubString(0,4)} -SingleQuote -Separator ';'

'Perf';'Prog';'Prog';'User';'Wind'

Get-ChildItem использует параметр Directory для получения всех имен каталогов C:\ для диска. Объекты отправляются по конвейеру в Join-String.

Блок скрипта параметра Property использует автоматическую переменную ($_) для указания подстроки свойства Name каждого объекта. Подстрока получает первые четыре буквы каждого имени каталога. Подстрока задает начальную и конечную позиции символов. Параметр SingleQuote заключает имена каталогов в одинарные кавычки. Параметр Separator указывает, что для разделения имен каталогов используется точка с запятой (;).

Дополнительные сведения об автоматических переменных и подстроках см. в разделе about_Automatic_Variables и подстрока.

Пример 3. Отображение выходных данных соединения в отдельной строке

В этом примере имена служб объединяются с каждой службой в отдельной строке и с отступом по вкладке.

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 использует параметр Name с , чтобы указать службы, начинающиеся с se*. Звездочка (*) — это подстановочный знак для любого символа.

Объекты отправляются по конвейеру Join-String в , который использует параметр Property для указания имен служб. Параметр Separator задает три специальных символа, представляющих возврат каретки (`r), новую строку (`n) и табуляция (`t). OutputPrefix вставляет метку Services: с новой строкой и вкладкой перед первой строкой выходных данных.

Дополнительные сведения о специальных символах см. в разделе about_Special_Characters.

Пример 4. Create определения класса из объекта

В этом примере создается определение класса PowerShell с использованием существующего объекта в качестве шаблона.

В этом примере кода используется сплаттинг для уменьшения длины строки и улучшения удобочитаемости. Дополнительные сведения см. в разделе 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
}

Параметры

-DoubleQuote

Заключает строковое значение каждого объекта конвейера в двойные кавычки.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FormatString

Строка формата, указывающая способ форматирования каждого элемента.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Указывает соединяемый текст. Введите переменную, содержащую текст, или введите команду или выражение, которое получает объекты для объединения в строки.

Type:PSObject[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-OutputPrefix

Текст, вставленный перед выходной строкой. Строка может содержать специальные символы, такие как возврат каретки (`r), новая строка (`n) и табуляция (`t).

Type:String
Aliases:op
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputSuffix

Текст, добавляемый к выходной строке. Строка может содержать специальные символы, такие как возврат каретки (`r), новая строка (`n) и табуляция (`t).

Type:String
Aliases:os
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Property

Имя свойства или выражения свойства, которое будет проецировать объект конвейера в текст.

Type:PSPropertyExpression
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Separator

Текст или символы, такие как запятая или точка с запятой, которые вставляются между текстом для каждого объекта конвейера.

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SingleQuote

Заключает строковое значение каждого объекта конвейера в одинарные кавычки.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseCulture

Использует разделитель списка для текущего языка и региональных параметров в качестве разделителя элементов. Чтобы найти разделитель списка для языка и региональных параметров, используйте следующую команду: (Get-Culture).TextInfo.ListSeparator.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

PSObject

Выходные данные

String