Sdílet prostřednictvím


ConvertFrom-String

Extrahuje a analyzuje strukturované vlastnosti z obsahu řetězce.

Syntax

ConvertFrom-String
                [-Delimiter <String>]
                [-PropertyNames <String[]>]
                [-InputObject] <String>
                [<CommonParameters>]
ConvertFrom-String
                [-TemplateFile <String[]>]
                [-TemplateContent <String[]>]
                [-IncludeExtent]
                [-UpdateTemplate]
                [-InputObject] <String>
                [<CommonParameters>]

Description

Rutina ConvertFrom-String extrahuje a analyzuje strukturované vlastnosti z obsahu řetězce. Tato rutina vygeneruje objekt parsováním textu z tradičního textového streamu. Pro každý řetězec v kanálu rutina rozdělí vstup oddělovačem nebo parsovacím výrazem a potom přiřadí názvy vlastností každému výslednému rozděleném elementu. Tyto názvy vlastností můžete zadat; pokud ne, automaticky se vygenerují za vás.

Výchozí sada parametrů rutiny ByDelimiter se rozdělí přesně na oddělovač regulárních výrazů. Neprovádí porovnávání uvozovek ani eskadér oddělovač, jak to dělá rutina Import-Csv .

Alternativní sada parametrů rutiny TemplateParsing generuje prvky ze skupin zachycených regulárním výrazem. Další informace o regulárních výrazech najdete v tématu about_Regular_Expressions.

Tato rutina podporuje dva režimy: základní parsování s oddělovači a automaticky generované, například řízené analýzy.

Parsování s oddělovači ve výchozím nastavení rozdělí vstup na prázdné místo a přiřadí názvy vlastností výsledným skupinám.

Oddělovač můžete přizpůsobit propojením ConvertFrom-String výsledků do jedné z Format-* rutin nebo můžete použít parametr Oddělovač .

Tato rutina také podporuje automaticky generované ukázkové parsování založené na flashExtract, výzkumné práci společnosti Microsoft Research.

Příklady

Příklad 1: Vygenerování objektu s výchozími názvy vlastností

"Hello World" | ConvertFrom-String

P1    P2
--    --
Hello World

Tento příkaz vygeneruje objekt s výchozími názvy vlastností, P1 a P2.

Příklad 1A: Seznámení s vygenerovaným objektem

Tento příkaz vygeneruje jeden objekt s vlastnostmi P1, P2; obě vlastnosti jsou ve výchozím nastavení typu 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

Příklad 2: Vygenerování objektu s výchozími názvy vlastností pomocí oddělovače

Tento příkaz vygeneruje objekt s doménou a uživatelským jménem pomocí zpětného lomítka (\) jako oddělovače. Znak zpětného lomítka musí být při použití regulárních výrazů uchvácený pomocí jiného zpětného lomítka.

"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"

P1      P2
--      --
Contoso Administrator

Příklad 3: Vygenerování objektu, který obsahuje dvě pojmenované vlastnosti

Následující příklad vytvoří objekty ze systému Windows hostuje položky souboru.

$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

Rutina Get-Content ukládá obsah souboru hostitelů Windows do $contentsouboru . Druhý příkaz odebere všechny komentáře na začátku souboru hosts pomocí regulárního výrazu, který odpovídá libovolnému řádku, který nezačíná (#). Poslední příkaz převede zbývající text na objekty s vlastnostmi serveru a IP adresy.

Příklad 4: Jako hodnotu parametru TemplateContent použijte výraz, uložte výsledky do proměnné.

Tento příkaz používá výraz jako hodnotu parametru TemplateContent . Výraz je uložen v proměnné pro jednoduchost. Windows PowerShell teď chápe, že řetězec použitý v kanálu ConvertFrom-String má tři vlastnosti:

  • Název
  • Telefon
  • Věk
$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

Každý řádek ve vstupu se vyhodnotí podle shody vzorku. Pokud řádek odpovídá příkladům zadaným ve vzoru, hodnoty se extrahují a předají výstupní proměnné.

Ukázková data $templateposkytují dva různé formáty telefonu:

  • 425-123-6789
  • (206) 987-4321

Ukázková data také poskytují dva různé věkové formáty:

  • 6
  • 12

To znamená, že telefony (206) 987 4321 jako nebudou rozpoznány, protože neexistují žádná ukázková data, která odpovídají tomuto vzoru, protože neexistují žádné spojovníky.

Příklad 5: Určení datových typů do vygenerovaných vlastností

Jedná se o stejný příklad jako příklad 4 výše. Rozdíl je v tom, že řetězec vzoru obsahuje datový typ pro každou požadovanou vlastnost.

$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

Rutina Get-Member slouží k zobrazení, že vlastnost stáří je celé číslo.

Parametry

-Delimiter

Určuje regulární výraz, který identifikuje hranici mezi prvky. Prvky vytvořené rozdělením se stanou vlastnostmi ve výsledném objektu. Oddělovač se nakonec používá ve volání Metody Split typu [System.Text.RegularExpressions.RegularExpression].

Type:String
Aliases:DEL
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeExtent

Označuje, že tato rutina obsahuje vlastnost rozsahu textu, která je ve výchozím nastavení odebrána.

Type:SwitchParameter
Aliases:IE
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Určuje řetězce přijaté z kanálu nebo proměnnou, která obsahuje objekt řetězce.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PropertyNames

Určuje pole názvů vlastností, kterým se mají přiřadit rozdělené hodnoty ve výsledném objektu. Každý řádek textu, který rozdělíte nebo parsujete, generuje prvky, které představují hodnoty vlastností. Pokud je prvkem výsledek skupiny zachycení a tato skupina zachycení je pojmenovaná (například (?<name>)(?'name') ) a název této skupiny zachycení je přiřazen k vlastnosti.

Pokud do pole PropertyName zadáte nějaké prvky, přiřadí se tyto názvy vlastnostem, které ještě nebyly pojmenovány.

Pokud zadáte více názvů vlastností, než jsou pole, PowerShell ignoruje názvy dalších vlastností. Pokud nezadáte dostatek názvů vlastností pro pojmenování všech polí, PowerShell automaticky přiřadí názvy číselných vlastností všem vlastnostem, které nemají název: P1, P2 atd.

Type:String[]
Aliases:PN
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TemplateContent

Určuje výraz nebo výraz uložený jako proměnnou, který popisuje vlastnosti, kterým tato rutina přiřazuje řetězce. Syntaxe specifikace pole šablony je následující: {[optional-typecast]<name>:<example-value>}.

Type:String[]
Aliases:TC
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TemplateFile

Určuje soubor jako pole, který obsahuje šablonu pro požadovanou analýzu řetězce. V souboru šablony jsou vlastnosti a jejich hodnoty uzavřeny v hranatých závorkách, jak je znázorněno níže. Pokud se vlastnost, například vlastnost Name a její přidružené další vlastnosti, zobrazí několikrát, můžete přidat hvězdičku (*), která označuje, že výsledkem je více záznamů. Tím se zabrání extrahování více vlastností do jednoho záznamu.

{Name*:D avid Chew} {City:Redmond}, {State:WA} {Name*:Evan Narvaez} {Name*:Antonio Moreno} {City:Issaquah}, {State:WA}

Type:String[]
Aliases:TF
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UpdateTemplate

Označuje, že tato rutina ukládá výsledky algoritmu učení do komentáře v souboru šablony. Díky tomu je proces učení algoritmu rychlejší. Chcete-li použít tento parametr, musíte také zadat soubor šablony s parametrem TemplateFile .

Type:SwitchParameter
Aliases:UT
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Vstupy

String

Výstupy

PSCustomObject

Poznámky

Windows PowerShell obsahuje následující aliasy pro ConvertFrom-String:

  • CFS