2016-09-22 4 views
0

パワーシェルスクリプトを使用してファイルの内容を読み込み、特定のタイプの単語を選択しようとしています。私はさらに下流に使用する変数として見つかった単語を読み込む必要があります。テキストファイルから特定のタイプの単語を選択して変数にロードします。

これは私の入力ファイルがどのように見えるかです:

{ 
    "AvailabilityZone": "ap-northeast-1b", 
    "VolumeType": "gp2", 
    "VolumeId": "vol-087238f9", 
    "State": "creating", 
    "Iops": 100, 
    "SnapshotId": "", 
    "CreateTime": "2016-09-15T12:17:27.952Z", 
    "Size": 10 
} 

私が選ぶしたい特定の単語がvol-xxxxxxxxです。 は私が私のスクリプトを書くこと How to pass a variable in the select-string of powershell

をこのリンクを使用これは私がそれをやっている方法です:


$Filename = "c:\reports\volume.jason" 
$regex = "^[vol-][a-z0-9]{8}$" 
$newvolumeid=select-string -Pattern $regex -Path $filename > C:\Reports\newVolumeid.txt 
$newVolumeid 

私はこのスクリプトを実行すると、それは動作しますが、応答を与えるものではありません。 select文字列の出力が変数$newvolumeidにロードされていないようです。

これを解決する方法任意のアイデア?または私は何が欠けている?

PS:上記ポストは約3歳で動作しませんので再ポストしています。

+1

はjson' '内のファイルで試してみてください?もしそうなら[この投稿をチェックしてください](http://stackoverflow.com/questions/16575419/powershell-retrieve-json-object-by-field-value) – gwillie

答えて

0

JSONオブジェクトのプロパティを読み取ろうとしています。代わりに正規表現を使用して、あなたはJSONを解析し、使用してプロパティを選択することができます。

Get-Content 'c:\reports\volume.jason' | ConvertFrom-Json | select -ExpandProperty VolumeId 
+0

これはうまくいきます。私は情報をきちんと得ることができます。 – Abhijit

0

この

$Inpath = "E:\tests\test.txt" 

$INFile = Get-Content $Inpath 

$NeedsTrimming = $INFile.Split(" ") | ForEach-Object {if ($_ -like '*vol-*'){$_}} 

$FirstQuote = $NeedsTrimming.IndexOf('"') 
$LastQuote = $NeedsTrimming.LastIndexOf('"') 

$vol = $NeedsTrimming.Substring(($FirstQuote + 1),($LastQuote - 1)) 

$vol 
+0

あなたの解決策はうまくいくかもしれませんが、間違いが起こりやすく、お勧めできません。 –

関連する問題