Поделиться через


Join-String

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

Синтаксис

Default (по умолчанию)

Join-String
    [[-Property] <PSPropertyExpression>]
    [[-Separator] <String>]
    [-OutputPrefix <String>]
    [-OutputSuffix <String>]
    [-UseCulture]
    [-InputObject <PSObject[]>]
    [<CommonParameters>]

SingleQuote

Join-String
    [[-Property] <PSPropertyExpression>]
    [[-Separator] <String>]
    [-OutputPrefix <String>]
    [-OutputSuffix <String>]
    [-SingleQuote]
    [-UseCulture]
    [-InputObject <PSObject[]>]
    [<CommonParameters>]

DoubleQuote

Join-String
    [[-Property] <PSPropertyExpression>]
    [[-Separator] <String>]
    [-OutputPrefix <String>]
    [-OutputSuffix <String>]
    [-DoubleQuote]
    [-UseCulture]
    [-InputObject <PSObject[]>]
    [<CommonParameters>]

Format

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

Объекты отправляются вниз по конвейеру, чтобы Join-String, использующий параметр свойства, чтобы указать имена служб. Параметр разделителя задает три специальных символа, представляющих возврат каретки (`r), newline (`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

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

DoubleQuote
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-FormatString

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

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

Свойства параметра

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

Format
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-InputObject

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

Свойства параметра

Тип:

PSObject[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-OutputPrefix

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

Свойства параметра

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:оп

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-OutputSuffix

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

Свойства параметра

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:ОС

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Property

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

Свойства параметра

Тип:PSPropertyExpression
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:0
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Separator

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

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

Замечание

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

Свойства параметра

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:1
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-SingleQuote

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

SingleQuote
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-UseCulture

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

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

PSObject

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

String