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по умолчанию.

Примечание.

При установке $OFS значения используется для объединения массивов при преобразовании в строки до сброса $nullпеременной. Так как использование $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использует параметр Каталога для получения всех имен каталогов C:\ для диска. Объекты отправляются вниз конвейера Join-String. Параметр Property задает имена каталогов. Параметр DoubleQuote упаковывает имена каталогов с двойными кавычками. Параметр Разделителя указывает, чтобы использовать запятую и пробел (, ) для разделения имен каталогов.

Объекты Get-ChildItemSystem.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использует параметр Каталога для получения всех имен каталогов C:\ для диска. Объекты отправляются вниз конвейера Join-String.

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

Дополнительные сведения об автоматических переменных и подстроках см. в 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 для указания имен служб. Параметр Разделителя задает три специальных символа, представляющих возвращаемый каретки (), newline (`r`n) и tab (`t). OutputPrefix вставляет метку Services: с новой строкой и вкладкой перед первой строкой выходных данных.

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

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

В этом примере создается определение класса 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

Указывает строку формата, указывающую, как каждый объект конвейера должен быть отформатирован перед присоединением к ним. {0} Используйте заполнитель для представления текущего объекта. Если вам нужно сохранить фигурные скобки ({}) в форматируемой строке, вы можете сбежать из них, удвоив фигурные скобки ({{ и }}).

Дополнительные сведения см. в методе String.Format и составном форматировании.

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

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

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

-OutputSuffix

Текст, добавляемый к выходной строке. Строка может содержать специальные символы, такие как возврат каретки (), newline (`r`n) и tab (`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

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

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

Примечание.

При установке $OFS значения используется для объединения массивов при преобразовании в строки до сброса $nullпеременной. Так как использование $OFS может иметь непреднамеренные эффекты в другом месте кода, рекомендуется использовать параметр Разделителя .

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