ConvertFrom-String

Wyodrębnia i analizuje właściwości strukturalne z zawartości ciągu.

Składnia

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

Opis

Polecenie cmdlet ConvertFrom-String wyodrębnia i analizuje właściwości strukturalne z zawartości ciągu. To polecenie cmdlet generuje obiekt przez analizowanie tekstu z tradycyjnego strumienia tekstu. Dla każdego ciągu w potoku polecenie cmdlet dzieli dane wejściowe przez ogranicznik lub wyrażenie analizy, a następnie przypisuje nazwy właściwości do każdego z wynikowych elementów podziału. Możesz podać te nazwy właściwości; jeśli tego nie zrobisz, są one generowane automatycznie.

Domyślny zestaw parametrów polecenia cmdlet ByDelimiter dzieli się dokładnie na ogranicznik wyrażenia regularnego. Nie wykonuje dopasowywania cudzysłowu ani ogranicznika, ponieważ polecenie cmdlet Import-Csv.

Alternatywny zestaw parametrów polecenia cmdlet, TemplateParsing, generuje elementy z grup przechwyconych przez wyrażenie regularne.

To polecenie cmdlet obsługuje dwa tryby: podstawowe rozdzielane analizowanie i automatyczne generowanie przykładowych analiz.

Analizowanie rozdzielane domyślnie dzieli dane wejściowe na białe znaki i przypisuje nazwy właściwości do wynikowych grup. Ogranicznik można dostosować, potokując wyniki ConvertFrom-String do jednego z poleceń cmdlet Format-* lub możesz użyć parametru ogranicznika .

Polecenie cmdlet obsługuje również automatyczne, oparte na przykładach analizowanie na podstawie flashExtract, badania przeprowadzone przez Microsoft Research.

Przykłady

Przykład 1. Generowanie obiektu z domyślnymi nazwami właściwości

PS C:\> "Hello World" | ConvertFrom-String

P1    P2
--    --
Hello World


PS C:\>

To polecenie generuje obiekt z domyślnymi nazwami właściwości, P1 i P2. Wyniki to P1="Hello" i P2="World".

Przykład 1A: Uzyskiwanie informacji o wygenerowanych obiektach

PS C:\> "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


PS C:\>

Polecenie generuje jeden obiekt z właściwościami P1, P2; obie właściwości są domyślnie typu "string".

Przykład 2. Generowanie obiektu z domyślnymi nazwami właściwości przy użyciu ogranicznika

PS C:\> "Hello World" | ConvertFrom-String -Delimiter "ll"

P1 P2
-- --
He o World


PS C:\>

To polecenie generuje obiekt z właściwościami P1="He" i P2="o World", określając wartość "ll" w obszarze Hello jako ogranicznik.

Przykład 3. Generowanie obiektu zawierającego dwie nazwane właściwości

PS C:\> "Hello World" | ConvertFrom-String -PropertyNames FirstWord, SecondWord

FirstWord SecondWord
--------- ----------
Hello     World


PS C:\>

To polecenie generuje obiekt zawierający dwie właściwości:

  • FirstWord z wartością "Hello"
  • SecondWord z wartością "World"

Przykład 4. Użyj wyrażenia jako wartości parametru TemplateContent, zapisz wyniki w zmiennej.

$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
'@

$testText  |
    ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
    Out-Null

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

C:\ >

To polecenie używa wyrażenia jako wartości parametru TemplateContent . Wyrażenie jest zapisywane w zmiennej dla uproszczenia. Windows PowerShell rozumie teraz, że ciąg używany w potoku do funkcji ConvertFrom-String ma trzy właściwości:

  • Nazwa
  • Telefon
  • Wieku

Każdy wiersz w danych wejściowych jest oceniany przez przykładowe dopasowania; jeśli wiersz pasuje do przykładów podanych we wzorcu, wartości są wyodrębniane i przekazywane do zdefiniowanej zmiennej wyjściowej.

Przykładowe dane, $template, udostępniają dwa różne formaty telefonów:

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

I dwa różne formaty wiekowe:

  • 6
  • 12

Oznacza to, że telefony takie jak (206) 987 4321 nie będą rozpoznawane, ponieważ nie ma przykładowych danych pasujących do tego wzorca (nie ma łącznika między sekwencją trzech cyfr i sekwencji czterech cyfr). Podobnie jak w przypadku 3 lub większej liczby wieków cyfr, nie zostaną rozpoznane.

Przykład 5. Określanie typów danych do wygenerowanych właściwości

$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
'@

$testText  |
    ConvertFrom-String -TemplateContent $template -OutVariable PersonalData | Out-Null

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



C:\ >

Jest to ten sam przykład co nr 4, powyżej; jedyne różnice są w ciągu wzorca, który zawiera typ danych dla każdej żądanej właściwości. Zwróć uwagę na różnicę w wyrównaniu kolumny wiekowej między obydwoma przykładami.

Przykład 5A: Uzyskiwanie informacji o wygenerowanych obiektach

$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
 '@

 $testText  |
     ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
     Out-Null

 $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

C:\ >

Get-Member pokazuje, że wiek ma typ liczby całkowitej.

Parametry

-Delimiter

Określa wyrażenie regularne, które identyfikuje granicę między elementami. Elementy tworzone przez podział stają się właściwościami w wynikowym obiekcie. Ogranicznik jest ostatecznie używany w wywołaniu elementu System.Text.RegularExpressions.RegularExpression.Split().

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

-IncludeExtent

Wskazuje, że to polecenie cmdlet zawiera właściwość tekstową zakresu, która jest domyślnie usuwana.

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

-InputObject

Określa ciągi odebrane z potoku lub zmiennej zawierającej obiekt ciągu.

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

-PropertyNames

Określa tablicę nazw właściwości, do której mają zostać przypisane wartości podzielone w wynikowym obiekcie. Każdy wiersz tekstu, który dzielisz lub analizuje, generuje elementy reprezentujące wartości właściwości. Jeśli element jest wynikiem grupy przechwytywania, a grupa przechwytywania ma nazwę (na przykład (?<name>) lub (?'name') ), nazwa tej grupy przechwytywania jest przypisana do właściwości.

Jeśli podasz jakiekolwiek elementy w tablicy PropertyName , te nazwy zostaną przypisane do właściwości, które nie zostały jeszcze nazwane.

Jeśli podasz więcej nazw właściwości niż istnieją pola, Windows PowerShell ignoruje dodatkowe nazwy właściwości. Jeśli nie określisz wystarczającej liczby nazw właściwości, aby nazwać wszystkie pola, Windows PowerShell automatycznie przypisuje nazwy właściwości liczbowych do żadnych właściwości, które nie mają nazwy: P1, P2 itp.

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

-TemplateContent

Określa wyrażenie lub wyrażenie zapisane jako zmienną, które opisuje właściwości, do których to polecenie cmdlet przypisuje ciągi. Składnia specyfikacji pola szablonu jest następująca: {[optional-typecast]name(sequence-spec, na przykład *):example-value}. Przykładem jest {PersonInfo*:{Name:Patti Fuller}.

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

-TemplateFile

Określa plik, jako tablicę, który zawiera szablon dla żądanego analizowania ciągu. W pliku szablonu właściwości i ich wartości są ujęte w nawiasy, jak pokazano w poniższym przykładzie. Jeśli właściwość, taka jak właściwość Name i skojarzone z nią inne właściwości, pojawia się wiele razy, możesz dodać gwiazdkę (*), aby wskazać, że powoduje to wiele rekordów. Pozwala to uniknąć wyodrębniania wielu właściwości do jednego rekordu.

{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

Wskazuje, że to polecenie cmdlet zapisuje wyniki algorytmu uczenia w komentarzu w pliku szablonu. Dzięki temu proces uczenia algorytmu jest szybszy. Aby użyć tego parametru, należy również określić plik szablonu z parametrem TemplateFile .

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

Dane wejściowe

String