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-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
использует параметр каталога для получения всех имен каталогов для диска 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 |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-FormatString
Указывает строку формата, указывающую, как каждый объект конвейера должен быть отформатирован перед присоединением к ним. Используйте заполнитель {0}
для представления текущего объекта. Если вам нужно сохранить фигурные скобки ({}
) в форматируемой строке, их можно сбежать, удвоив фигурные скобки ({{
и }}
).
Дополнительные сведения см. в методе String.Format и составном форматировании.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputObject
Указывает текст для присоединения. Введите переменную, содержащую текст, или введите команду или выражение, которое получает объекты для объединения в строки.
Тип: | PSObject[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-OutputPrefix
Текст, вставленный перед выходной строкой. Строка может содержать специальные символы, такие как возврат каретки (`r
), newline (`n
) и tab (`t
).
Тип: | String |
Aliases: | op |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-OutputSuffix
Текст, добавляемый к выходной строке. Строка может содержать специальные символы, такие как возврат каретки (`r
), newline (`n
) и tab (`t
).
Тип: | String |
Aliases: | os |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Property
Имя свойства или выражения свойства, которое необходимо преобразовать в текст.
Тип: | PSPropertyExpression |
Position: | 0 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Separator
Текст или символы, такие как запятая или точка с запятой, вставленные между текстом для каждого объекта конвейера.
По умолчанию объекты конвейера объединяются без разделителя. Если задана переменная разделителя полей вывода ($OFS
), то это значение используется, если этот параметр не указан.
Заметка
При установке $OFS
его значение используется для объединения массивов при преобразовании в строки, пока переменная не сбрасывается в $null
. Так как использование $OFS
может иметь непреднамеренные эффекты в другом месте кода, лучше использовать вместо этого параметр Разделитель.
Тип: | String |
Position: | 1 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-SingleQuote
Упаковывает строковое значение каждого объекта конвейера в одинарные кавычки.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UseCulture
Использует разделитель списка для текущего языка и региональных параметров в качестве разделителя элементов. Чтобы найти разделитель списка для языка и региональных параметров, используйте следующую команду: (Get-Culture).TextInfo.ListSeparator
.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Выходные данные
Связанные ссылки
PowerShell