ConvertFrom-String
文字列コンテンツから構造化プロパティを抽出および解析します。
構文
ByDelimiter (既定)
ConvertFrom-String
[-InputObject] <String>
[-Delimiter <String>]
[-PropertyNames <String[]>]
[<CommonParameters>]
TemplateParsing
ConvertFrom-String
[-InputObject] <String>
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[<CommonParameters>]
説明
ConvertFrom-String コマンドレットは、文字列コンテンツから構造化プロパティを抽出して解析します。 このコマンドレットは、従来のテキスト ストリームからテキストを解析することによってオブジェクトを生成します。 パイプライン内の各文字列について、コマンドレットは区切り記号または解析式によって入力を分割し、結果の分割要素それぞれにプロパティ名を割り当てます。 これらのプロパティ名を指定できます。そうでない場合は、自動的に生成されます。
コマンドレットの既定のパラメーター セット (ByDelimiter ) は、正規表現の区切り記号で正確に分割されます。
Import-Csv コマンドレットと同様に、引用符の一致や区切り記号のエスケープは実行されません。
コマンドレットの代替パラメーター セット TemplateParsingは、正規表現によってキャプチャされるグループから要素を生成します。 正規表現の詳細については、about_Regular_Expressionsを参照してください。
このコマンドレットは、基本的な区切り解析と、自動生成されたサンプル ドリブン解析の 2 つのモードをサポートします。
区切り解析は、既定では、入力を空白で分割し、結果のグループにプロパティ名を割り当てます。
区切り記号は、ConvertFrom-String の結果を Format-* コマンドレットのいずれかにパイプ処理してカスタマイズすることも、Delimiter パラメーターを使用することもできます。
また、このコマンドレットは、Microsoft Research の研究作業であるFlashExtract に基づく自動生成されたサンプル 駆動型解析もサポートしています。
例
例 1: 既定のプロパティ名を持つオブジェクトを生成する
"Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
このコマンドは、P1 と P2、既定のプロパティ名を持つオブジェクトを生成します。
例 1A: 生成されたオブジェクトを把握する
このコマンドは、P1 P2;プロパティを持つ 1 つのオブジェクトを生成します。既定では、どちらのプロパティも文字列型 です。
"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
例 2: 区切り記号を使用して既定のプロパティ名を持つオブジェクトを生成する
このコマンドは、区切り記号として円記号 (\) を使用して、ドメインとユーザー名を持つオブジェクトを生成します。 正規表現を使用する場合は、円記号を別の円記号でエスケープする必要があります。
"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"
P1 P2
-- --
Contoso Administrator
例 3: 2 つの名前付きプロパティを含むオブジェクトを生成する
次の例では、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
Get-Content コマンドレットは、Windows ホスト ファイルの内容を $contentに格納します。 2 番目のコマンドは、(#) で始まらない行と一致する正規表現を使用して、hosts ファイルの先頭にあるコメントを削除します。 最後のコマンドは、残りのテキストを Server と IP プロパティ オブジェクトに変換します。
例 4: TemplateContent パラメーターの値として式を使用し、結果を変数に保存します。
このコマンドは、TemplateContent パラメーターの値として式を使用します。 式は、わかりやすくするために変数に保存されます。 Windows PowerShell は、パイプラインで ConvertFrom-String に使用される文字列に次の 3 つのプロパティがあることを理解しています。
- 名前
- 電話 を する
- 年齢
$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
入力内の各行は、サンプルの一致によって評価されます。 行がパターンで指定された例と一致する場合、値が抽出され、出力変数に渡されます。
サンプル データ ($template) には、次の 2 つの異なる電話形式が用意されています。
425-123-6789(206) 987-4321
サンプル データには、次の 2 つの異なる年齢形式も用意されています。
612
これは、ハイフンがないため、そのパターンに一致するサンプル データがないため、(206) 987 4321 のような電話は認識されないことを意味します。
例 5: 生成されたプロパティにデータ型を指定する
これは、上記の例 4 と同じ例です。 違いは、パターン文字列に必要なプロパティごとにデータ型が含まれていることです。
$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
Get-Member コマンドレットは、age プロパティが整数であることを示すために使用されます。
パラメーター
-Delimiter
要素間の境界を識別する正規表現を指定します。 分割によって作成された要素は、結果のオブジェクトのプロパティになります。 区切り記号は、最終的には、型の [System.Text.RegularExpressions.RegularExpression] メソッドの呼び出しで使用されます。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | DEL |
パラメーター セット
ByDelimiter
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-IncludeExtent
このコマンドレットに、既定で削除されるエクステント テキスト プロパティが含まれていることを示します。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | IE (インターネットエクスプローラー) |
パラメーター セット
TemplateParsing
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-InputObject
パイプラインから受信した文字列、または文字列オブジェクトを含む変数を指定します。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-PropertyNames
結果のオブジェクトに分割値を割り当てるプロパティ名の配列を指定します。 分割または解析するすべてのテキスト行は、プロパティ値を表す要素を生成します。 要素がキャプチャ グループの結果であり、そのキャプチャ グループに名前が付けられている場合 ((?<name>) や (?'name') など)、そのキャプチャ グループの名前がプロパティに割り当てられます。
PropertyName 配列に要素を指定した場合、それらの名前は、まだ名前が付いていないプロパティに割り当てられます。
フィールドよりも多くのプロパティ名を指定した場合、PowerShell は余分なプロパティ名を無視します。 すべてのフィールドに名前を付けるのに十分なプロパティ名を指定しない場合、PowerShell では、名前のないプロパティ (P1、P2など) に数値プロパティ名が自動的に割り当てられます。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | PN |
パラメーター セット
ByDelimiter
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-TemplateContent
このコマンドレットが文字列を割り当てるプロパティを記述する式または変数として保存された式を指定します。 テンプレート フィールドの仕様の構文は次のとおりです: {[optional-typecast]<name>:<example-value>}。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | TC |
パラメーター セット
TemplateParsing
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-TemplateFile
文字列の目的の解析用のテンプレートを含むファイルを配列として指定します。 テンプレート ファイルでは、次に示すように、プロパティとその値は角かっこで囲まれています。
Name プロパティとその関連する他のプロパティなどのプロパティが複数回表示される場合は、アスタリスク (*) を追加して、この結果が複数のレコードであることを示すことができます。 これにより、1 つのレコードに複数のプロパティが抽出されるのを回避できます。
{Name*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | TF |
パラメーター セット
TemplateParsing
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-UpdateTemplate
このコマンドレットは、学習アルゴリズムの結果をテンプレート ファイル内のコメントに保存することを示します。 これにより、アルゴリズムの学習プロセスが高速になります。 このパラメーターを使用するには、TemplateFile パラメーターを持つテンプレート ファイルも指定する必要があります。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | UT |
パラメーター セット
TemplateParsing
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
String
出力
PSCustomObject
メモ
Windows PowerShell には、ConvertFrom-Stringの次のエイリアスが含まれています。
CFS