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
использует параметр 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
Упаковывает строковое значение каждого объекта конвейера в двойные кавычки.
Тип: | 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
Текст, вставленный перед выходной строкой. Строка может содержать специальные символы, такие как возврат каретки (), newline (`r
`n
) и tab (`t
).
Тип: | String |
Aliases: | op |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-OutputSuffix
Текст, добавляемый к выходной строке. Строка может содержать специальные символы, такие как возврат каретки (), newline (`r
`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