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 na podstawie 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, zostaną one automatycznie wygenerowane.
Domyślny zestaw parametrów polecenia cmdlet, ByDelimiter, dzieli 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, analizowanie oparte na przykładach.
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
Polecenie cmdlet obsługuje również automatyczne generowanie, analizowanie oparte na przykładach na podstawie FlashExtract, badania przeprowadzone przez firmę 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: Poznaj wygenerowany obiekt
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 mają typ "string" domyślnie.
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 polu 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. Program Windows PowerShell rozumie teraz, że ciąg używany w potoku do 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 zostaną rozpoznane, ponieważ nie ma przykładowych danych pasujących do tego wzorca (nie ma łącznika między sekwencją trzycyfrową a czterocyfrową sekwencją). 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 znajdują się 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: poznaj wygenerowany obiekt
$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 jest typu liczby całkowitej.
Parametry
-Delimiter
Określa wyrażenie regularne identyfikujące granicę między elementami. Elementy utworzone 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().
Typ: | String |
Aliasy: | DEL |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-IncludeExtent
Wskazuje, że to polecenie cmdlet zawiera właściwość tekstową zakresu, która jest domyślnie usuwana.
Typ: | SwitchParameter |
Aliasy: | IE |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-InputObject
Określa ciągi odebrane z potoku lub zmienną zawierającą obiekt ciągu.
Typ: | String |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-PropertyNames
Określa tablicę nazw właściwości, do której mają zostać przypisane podzielone wartości 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 są 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, program 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, program Windows PowerShell automatycznie przypisze nazwy właściwości liczbowych do wszystkich właściwości, które nie są nazwane: P1, P2 itp.
Typ: | String[] |
Aliasy: | PN |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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(sekwencja-spec, na przykład *):example-value}. Przykładem jest {PersonInfo*:{Name:Patti Fuller}.
Typ: | String[] |
Aliasy: | TC |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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}
Typ: | String[] |
Aliasy: | TF |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | SwitchParameter |
Aliasy: | UT |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |