ConvertFrom-String
Estrae e analizza le proprietà strutturate dal contenuto stringa.
Sintassi
ByDelimiter (Impostazione predefinita)
ConvertFrom-String
[-InputObject] <String>
[-Delimiter <String>]
[-PropertyNames <String[]>]
[<CommonParameters>]
TemplateParsing
ConvertFrom-String
[-InputObject] <String>
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[<CommonParameters>]
Descrizione
Il cmdlet ConvertFrom-String estrae e analizza le proprietà strutturate dal contenuto stringa. Questo cmdlet genera un oggetto analizzando il testo da un flusso di testo tradizionale. Per ogni stringa nella pipeline, il cmdlet suddivide l'input in base a un delimitatore o a un'espressione di analisi e quindi assegna i nomi delle proprietà a ognuno degli elementi di divisione risultanti. È possibile specificare questi nomi di proprietà; in caso contrario, vengono generati automaticamente.
Il set di parametri predefinito del cmdlet, ByDelimiter, divide esattamente sul delimitatore dell'espressione regolare. Non esegue l'escape tra virgolette o delimitatori perché il cmdlet Import-Csv.
Il set di parametri alternativi del cmdlet, TemplateParsing, genera elementi dai gruppi acquisiti da un'espressione regolare. Per altre informazioni sulle espressioni regolari, vedere about_Regular_Expressions.
Questo cmdlet supporta due modalità: l'analisi delimitata di base e l'analisi guidata dall'esempio generata automaticamente.
L'analisi delimitata, per impostazione predefinita, suddivide l'input in spazi vuoti e assegna i nomi delle proprietà ai gruppi risultanti.
È possibile personalizzare il delimitatore inviando i risultati del ConvertFrom-String in uno dei cmdlet di Format-* oppure è possibile usare il parametro Delimiter.
Il cmdlet supporta anche l'analisi generata automaticamente, basata su esempi in base all'FlashExtract, il lavoro di ricerca di Microsoft Research.
Esempio
Esempio 1: Generare un oggetto con nomi di proprietà predefiniti
"Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
Questo comando genera un oggetto con nomi di proprietà predefiniti, P1 e P2.
Esempio 1A: Ottenere informazioni sull'oggetto generato
Questo comando genera un oggetto con proprietà P1, P2; entrambe le proprietà sono di tipo di string, per impostazione predefinita.
"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
Esempio 2: Generare un oggetto con nomi di proprietà predefiniti usando un delimitatore
Questo comando genera un oggetto con un dominio e un nome utente usando la barra rovesciata (\) come delimitatore. Il carattere barra rovesciata deve essere preceduto da un'altra barra rovesciata quando si usano espressioni regolari.
"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"
P1 P2
-- --
Contoso Administrator
Esempio 3: Generare un oggetto contenente due proprietà denominate
Nell'esempio seguente vengono creati oggetti da voci di file host di Windows.
$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
Il cmdlet Get-Content archivia il contenuto di un file host di Windows in $content. Il secondo comando rimuove tutti i commenti all'inizio del file hosts usando un'espressione regolare che corrisponde a qualsiasi riga che non inizia con (#). L'ultimo comando converte il testo rimanente in oggetti con server di e proprietà ip.
Esempio 4: usare un'espressione come valore del parametro TemplateContent, salvare i risultati in una variabile.
Questo comando usa un'espressione come valore del parametro TemplateContent. L'espressione viene salvata in una variabile per semplicità. Windows PowerShell riconosce ora che la stringa usata nella pipeline per ConvertFrom-String ha tre proprietà:
- Nome
- telefono
- età
$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
Ogni riga nell'input viene valutata dalla corrispondenza dell'esempio. Se la riga corrisponde agli esempi specificati nel modello, i valori vengono estratti e passati alla variabile di output.
I dati di esempio, $template, offrono due diversi formati di telefono:
425-123-6789(206) 987-4321
I dati di esempio forniscono anche due formati di età diversi:
612
Ciò implica che i telefoni come (206) 987 4321 non verranno riconosciuti, perché non ci sono dati di esempio che corrispondono a quel modello perché non ci sono trattini.
Esempio 5: Specifica dei tipi di dati per le proprietà generate
Questo è lo stesso esempio dell'esempio 4 precedente. La differenza è che la stringa del criterio include un tipo di dati per ogni proprietà desiderata.
$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
Il cmdlet Get-Member viene usato per indicare che la proprietà age è un numero intero.
Parametri
-Delimiter
Specifica un'espressione regolare che identifica il limite tra gli elementi. Gli elementi creati dalla divisione diventano proprietà nell'oggetto risultante. Il delimitatore viene infine usato in una chiamata al metodo Split del tipo [System.Text.RegularExpressions.RegularExpression].
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | DEL |
Set di parametri
ByDelimiter
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-IncludeExtent
Indica che questo cmdlet include una proprietà di testo extent che viene rimossa per impostazione predefinita.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | Internet Explorer |
Set di parametri
TemplateParsing
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-InputObject
Specifica le stringhe ricevute dalla pipeline o una variabile che contiene un oggetto stringa.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-PropertyNames
Specifica una matrice di nomi di proprietà a cui assegnare valori suddivisi nell'oggetto risultante. Ogni riga di testo divisa o analizzata genera elementi che rappresentano i valori delle proprietà. Se l'elemento è il risultato di un gruppo di acquisizione e tale gruppo di acquisizione viene denominato (ad esempio, (?<name>) o (?'name') ), il nome del gruppo di acquisizione viene assegnato alla proprietà .
Se si specificano elementi nella matrice PropertyName, tali nomi vengono assegnati alle proprietà che non sono ancora state denominate.
Se si specificano più nomi di proprietà rispetto ai campi, PowerShell ignora i nomi di proprietà aggiuntivi. Se non si specificano nomi di proprietà sufficienti per denominare tutti i campi, PowerShell assegna automaticamente nomi di proprietà numerici a tutte le proprietà non denominate: P1, P2e così via.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | PN |
Set di parametri
ByDelimiter
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-TemplateContent
Specifica un'espressione o un'espressione salvata come variabile che descrive le proprietà a cui questo cmdlet assegna stringhe. La sintassi di una specifica del campo modello è la seguente: {[optional-typecast]<name>:<example-value>}.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | TC |
Set di parametri
TemplateParsing
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-TemplateFile
Specifica un file, come matrice, che contiene un modello per l'analisi desiderata della stringa. Nel file modello le proprietà e i relativi valori sono racchiusi tra parentesi quadre, come illustrato di seguito. Se una proprietà, ad esempio Nome proprietà e le altre proprietà associate, viene visualizzata più volte, è possibile aggiungere un asterisco (*) per indicare che questo risultato in più record. In questo modo si evita di estrarre più proprietà in un singolo record.
{Name*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | TF |
Set di parametri
TemplateParsing
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-UpdateTemplate
Indica che questo cmdlet salva i risultati di un algoritmo di apprendimento in un commento nel file modello. Questo rende il processo di apprendimento dell'algoritmo più veloce. Per usare questo parametro, è necessario specificare anche un file modello con il parametro TemplateFile.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | UT |
Set di parametri
TemplateParsing
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
String
Output
PSCustomObject
Note
Windows PowerShell include gli alias seguenti per ConvertFrom-String:
CFS