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
SessionEnvGet-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
Выходы
Строка