ConvertFrom-String
Извлекает и анализирует структурированные свойства из строкового содержимого.
Синтаксис
ByDelimiter (По умолчанию)
ConvertFrom-String
[-InputObject] <String>
[-Delimiter <String>]
[-PropertyNames <String[]>]
[<CommonParameters>]
TemplateParsing
ConvertFrom-String
[-InputObject] <String>
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[<CommonParameters>]
Описание
Командлет ConvertFrom-String извлекает структурированные свойства из строкового содержимого и анализирует их. Этот командлет создает объект, анализируя текст из традиционного текстового потока. Для каждой строки в конвейере командлет разделяет входные данные по разделителю или выражению синтаксического анализа, а затем присваивает имена свойств каждому из результирующего разделенного элемента. Эти имена свойств можно указать; Если это не так, они автоматически создаются для вас.
Набор параметров по умолчанию командлета ByDelimiterразбивается точно на разделитель регулярных выражений. Он не выполняет сопоставление кавычки или экранирование разделителя, так как командлет Import-Csv выполняется.
Альтернативный набор параметров командлета TemplateParsingсоздает элементы из групп, захваченных регулярным выражением. Дополнительные сведения о регулярных выражениях см. в about_Regular_Expressions.
Этот командлет поддерживает два режима: базовый синтаксический анализ с разделителями и автоматически создаваемый анализ на основе примера.
Синтаксический анализ с разделителями по умолчанию разделяет входные данные в пробелах и назначает имена свойств результирующей группе.
Разделитель можно настроить, настроив ConvertFrom-String результаты в один из командлетов Format-*, или использовать параметр разделителя.
Командлет также поддерживает автоматически созданный анализ на основе FlashExtract, исследовательской работы Microsoft Research.
Примеры
Пример 1. Создание объекта с именами свойств по умолчанию
"Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
Эта команда создает объект с именами свойств по умолчанию, P1 и P2.
Пример 1A. Получение сведений о созданном объекте
Эта команда создает один объект со свойствами P1, P2; оба свойства имеют тип String по умолчанию.
"Hello World" | ConvertFrom-String | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
P1 NoteProperty string P1=Hello
P2 NoteProperty string P2=World
Пример 2. Создание объекта с именами свойств по умолчанию с помощью разделителя
Эта команда создает объект с доменом и именем пользователя с помощью обратной косой черты (\) в качестве разделителя. Символ обратной косой черты должен быть экранирован с другой обратной косой чертой при использовании регулярных выражений.
"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"
P1 P2
-- --
Contoso Administrator
Пример 3. Создание объекта, содержащего два именованных свойства
В следующем примере создаются объекты из записей файлов windows hosts.
$content = Get-Content C:\Windows\System32\drivers\etc\hosts
$content = $content -match "^[^#]"
$content | ConvertFrom-String -PropertyNames IP, Server
IP Server
-- ------
192.168.7.10 W2012R2
192.168.7.20 W2016
192.168.7.101 WIN8
192.168.7.102 WIN10
Командлет Get-Content сохраняет содержимое файла узлов Windows в $content. Вторая команда удаляет комментарии в начале файла узлов с помощью регулярного выражения, соответствующего любой строке, которая не начинается (#). Последняя команда преобразует оставшийся текст в объекты с свойствами Сервера и IP-.
Пример 4. Используйте выражение в качестве значения параметра TemplateContent, сохраните результаты в переменной.
Эта команда использует выражение в качестве значения параметра TemplateContent. Выражение сохраняется в переменной для простоты. Windows PowerShell понимает, что строка, используемая в конвейере для ConvertFrom-String, имеет три свойства:
- Имя
- телефонной
- возраст
$template = @'
{Name*:Phoebe Cat}, {phone:425-123-6789}, {age:6}
{Name*:Lucky Shot}, {phone:(206) 987-4321}, {age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
Write-Output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4
Name phone age
---- ----- ---
Phoebe Cat 425-123-6789 6
Lucky Shot (206) 987-4321 12
Elephant Wise 425-888-7766 87
Wild Shrimp (111) 222-3333 1
Каждая строка входных данных вычисляется примером совпадений. Если строка соответствует примерам, заданным в шаблоне, значения извлекаются и передаются в выходную переменную.
Примеры данных, $template, предоставляют два разных формата телефонов:
425-123-6789(206) 987-4321
Пример данных также предоставляет два разных возрастных формата:
612
Это означает, что такие телефоны, как (206) 987 4321, не будут распознаны, так как нет примеров данных, которые соответствуют этому шаблону, так как нет дефисов.
Пример 5. Указание типов данных для созданных свойств
Это тот же пример, что и пример 4, приведенный выше. Разница заключается в том, что строка шаблона включает тип данных для каждого требуемого свойства.
$template = @'
{[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
{[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
Write-Output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4
Name phone age
---- ----- ---
Phoebe Cat 425-123-6789 6
Lucky Shot (206) 987-4321 12
Elephant Wise 425-888-7766 87
Wild Shrimp (111) 222-3333 1
$PersonalData | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
age NoteProperty int age=6
Name NoteProperty string Name=Phoebe Cat
phone NoteProperty string phone=425-123-6789
Командлет Get-Member используется для отображения того, что свойство возраста является целым числом.
Параметры
-Delimiter
Задает регулярное выражение, определяющее границу между элементами. Элементы, созданные разделением, становятся свойствами в результирующем объекте. Разделитель в конечном счете используется в вызове метода Split типа [System.Text.RegularExpressions.RegularExpression].
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | DEL |
Наборы параметров
ByDelimiter
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-IncludeExtent
Указывает, что этот командлет содержит текстовое свойство экстентов, которое удаляется по умолчанию.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | Internet Explorer |
Наборы параметров
TemplateParsing
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-InputObject
Задает строки, полученные из конвейера, или переменную, содержащую строковый объект.
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | 0 |
| Обязательно: | True |
| Значение из конвейера: | True |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-PropertyNames
Задает массив имен свойств, которым следует назначать разделенные значения в результирующем объекте. Каждая строка текста, разделенная или анализируемая, создает элементы, представляющие значения свойств. Если элемент является результатом группы захвата, а эта группа захвата называется (например, (?<name>) или (?'name')), то имя этой группы захвата назначается свойству.
Если вы предоставляете элементы в массиве propertyName
Если вы предоставляете больше имен свойств, чем поля, PowerShell игнорирует дополнительные имена свойств. Если не указать достаточно имен свойств для имен всех полей, PowerShell автоматически назначает числовые имена свойств любым свойствам, которые не именуются: P1, P2и т. д.
Свойства параметров
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | PN |
Наборы параметров
ByDelimiter
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-TemplateContent
Указывает выражение или выражение, сохраненное в виде переменной, описывающее свойства, которым этот командлет назначает строки. Синтаксис спецификации поля шаблона представлен следующим образом: {[optional-typecast]<name>:<example-value>}.
Свойства параметров
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | TC |
Наборы параметров
TemplateParsing
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-TemplateFile
Указывает файл в виде массива, который содержит шаблон для требуемого синтаксического анализа строки. В файле шаблона свойства и их значения заключены в квадратные скобки, как показано ниже. Если свойство, например свойство Name и связанные с ним другие свойства, появляется несколько раз, можно добавить звездочку (*), чтобы указать, что это приводит к нескольким записям. Это позволяет избежать извлечения нескольких свойств в одну запись.
{Name*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Свойства параметров
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | ТФ |
Наборы параметров
TemplateParsing
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-UpdateTemplate
Указывает, что этот командлет сохраняет результаты алгоритма обучения в комментарий в файле шаблона. Это упрощает процесс обучения алгоритма. Чтобы использовать этот параметр, необходимо также указать файл шаблона с параметром TemplateFile.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | UT |
Наборы параметров
TemplateParsing
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
String
Выходные данные
PSCustomObject
Примечания
Windows PowerShell включает следующие псевдонимы для ConvertFrom-String:
CFS