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 |