Поиск по сайту:

Join-String (Microsoft.PowerShell.Utility)


Join-String

Модуль:
Microsoft.PowerShell.Utility

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

Синтаксис

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 может иметь непредвиденные последствия в других местах вашего кода, лучше использовать вместо него параметр Separator.

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

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

Этот командлет был представлен в 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 and Substring.

Пример 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) и знак табуляции (). `т). 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

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-FormatString

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

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

Тип :

String

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-InputObject

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

Тип :

PSОбъект[]

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-OutputPrefix

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

Тип :

String

Псевдонимы:

op

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-OutputSuffix

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

Тип :

String

Псевдонимы:

os

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Property

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

Тип :

PSPropertyExpression

Позиция:

0

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Separator

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

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

Примечание

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

Тип :

String

Позиция:

1

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-SingleQuote

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

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-UseCulture

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

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

PSObject

Выходы

Строка