ConvertFrom-String
Извлекает и анализирует структурированные свойства из строкового содержимого.
Синтаксис
ConvertFrom-String
[-Delimiter <String>]
[-PropertyNames <String[]>]
[-InputObject] <String>
[<CommonParameters>]
ConvertFrom-String
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[-InputObject] <String>
[<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
Пример данных также предоставляет два разных возрастных формата:
6
12
Это означает, что телефоны, как (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
используется для отображения того, что свойство age является целым числом.
Параметры
-Delimiter
Задает регулярное выражение, определяющее границу между элементами. Элементы, созданные разделением, становятся свойствами в результирующем объекте. Разделитель в конечном счете используется в вызове метода Split типа [System.Text.RegularExpressions.RegularExpression]
.
Тип: | String |
Aliases: | DEL |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-IncludeExtent
Указывает, что этот командлет содержит текстовое свойство экстентов, которое удаляется по умолчанию.
Тип: | SwitchParameter |
Aliases: | IE |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputObject
Задает строки, полученные из конвейера, или переменную, содержащую строковый объект.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-PropertyNames
Задает массив имен свойств, которым следует назначать разделенные значения в результирующем объекте. Каждая строка текста, разделенная или анализируемая, создает элементы, представляющие значения свойств. Если элемент является результатом группы захвата, а эта группа захвата называется (например, (?<name>)
или (?'name')
), то имя этой группы захвата назначается свойству.
Если вы предоставляете элементы в массиве PropertyName , эти имена назначаются свойствам, которые еще не были названы.
Если вы предоставляете больше имен свойств, чем поля, PowerShell игнорирует дополнительные имена свойств. Если не указать достаточно имен свойств для имен всех полей, PowerShell автоматически назначает числовые имена свойств любым свойствам, которые не именуются: P1, P2 и т. д.
Тип: | String[] |
Aliases: | PN |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-TemplateContent
Указывает выражение или выражение, сохраненное в виде переменной, описывающее свойства, которым этот командлет назначает строки. Синтаксис спецификации поля шаблона приведен ниже {[optional-typecast]<name>:<example-value>}
.
Тип: | String[] |
Aliases: | TC |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-TemplateFile
Указывает файл в виде массива, который содержит шаблон для требуемого синтаксического анализа строки. В файле шаблона свойства и их значения заключены в квадратные скобки, как показано ниже. Если свойство, например свойство Name и связанные с ним другие свойства, отображается несколько раз, можно добавить звездочку (*
), чтобы указать, что это приводит к нескольким записям. Это позволяет избежать извлечения нескольких свойств в одну запись.
{Name*:D avid Chew} {City:Redmond}, {State:WA} {Name*:Evan Narvaez} {Name*:Антонио Морено} {City:Issaquah}, {State:WA}
Тип: | String[] |
Aliases: | TF |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UpdateTemplate
Указывает, что этот командлет сохраняет результаты алгоритма обучения в комментарий в файле шаблона. Это упрощает процесс обучения алгоритма. Чтобы использовать этот параметр, необходимо также указать файл шаблона с параметром TemplateFile .
Тип: | SwitchParameter |
Aliases: | UT |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Выходные данные
Примечания
Windows PowerShell включает следующие псевдонимы для ConvertFrom-String
:
CFS
Связанные ссылки
PowerShell