Поделиться через


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

Пример данных также предоставляет два разных возрастных формата:

  • 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 используется для отображения того, что свойство возраста является целым числом.

Параметры

-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