2017-02-26 57 views
0

我有一个PowerShell脚本,其中包含此方法:
1. Invoke-WebRequest:获取我的json文件。
2. Invoke-RestMethod:从(1)中获取所有ip信息。添加成员 - ForEach项目从其他信息获取价值

我想Add-Member$gip.city每个r.users信息

这里是我的错误的语法:

$r = Invoke-WebRequest -Uri http://schoolfordesign.net/grabber.json | ConvertFrom-Json 
$expip = $r.users | select -expand ipaddress 


ForEach($ips in $expip){ 

    $infoService = "http://ipinfo.io/$ips/json" 
    $gip = Invoke-RestMethod -Method Get -URI $infoService 

    $r.users| Add-Member -NotePropertyName city -NotePropertyValue $gip.city -Force 
} 

#Resilt: 
$r.users 

当我运行它,新成员 '市' 不是包含任何值,则显示此结果:
pic

+0

@jessehouwing是,为每个用户添加一个城市$ gip – Aso

+0

@ jessehouwing谢谢。但我仍然得到错误。我不知道。简单地说$ gip有许多收藏,比如(city,ip,location..etc),我想从它抓到City到我的收藏,这是$ r.users,请参阅我的博文链接照片。 – Aso

+0

@jessehouwing LINQ风格的脚本块是怎么回事? '$ user => $ user.ipaddress ...'? '=>'不是PowerShell-operator AFAIK :-) –

回答

4

http://schoolfordesign.net/grabber.json初始JSON包含用户记录是这样的:

{ 
    "ipaddress": "66.249.93.218", 
    "date": "2017\/02\/23", 
    "time": "07:03:34pm", 
    "device": "Mozilla\/5.0 (Windows NT 10.0; Win64; x64) ......." 
} 

最简单的解决方法是通过每一个这些记录作为一个整体,而不仅仅是IP地址进行迭代:

$r = Invoke-WebRequest -Uri http://schoolfordesign.net/grabber.json | ConvertFrom-Json 

ForEach ($user in $r.users) { 
    $info = Invoke-RestMethod -Method Get -URI "http://ipinfo.io/$($user.ipaddress)/json" 
    $user | Add-Member city $info.city -force 
} 

$r.users 
1

正如我说你需要查找正确的项目$users集合之前,给城市附加:

$r = Invoke-WebRequest -Uri http://schoolfordesign.net/grabber.json | ConvertFrom-Json 
$expip = $r.users | select -expand ipaddress 


ForEach($ips in $expip){ 

    $infoService = "http://ipinfo.io/$ips/json" 
    $gip = Invoke-RestMethod -Method Get -URI $infoService 
    $r.users| ?{ $_.ipaddress -eq $ips } | %{ Add-Member -InputObject $_ -NotePropertyName city -NotePropertyValue $gip.city -Force } 
} 

#Result: 
$r.users 

或者遍历单独作为最初并很好地通过@wOxxOm

导致扩大了意见建议的用户,(请注意,某些IP记录不返回城市信息):

ipaddress : 66.249.93.218 
date  : 2017/02/23 
time  : 07:03:34pm 
device : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 
city  : 

ipaddress : 66.249.93.219 
date  : 2017/02/23 
time  : 11:18:38pm 
device : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 
city  : 

ipaddress : 95.84.129.28 
date  : 2017/02/24 
time  : 08:56:23am 
device : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.5072 
city  : Presnenskiy 

ipaddress : 37.204.200.135 
date  : 2017/02/24 
time  : 12:59:51pm 
device : Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/7.0) 
city  : Moscow 

ipaddress : 66.249.93.217 
date  : 2017/02/24 
time  : 03:13:06pm 
device : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 
city  : 

ipaddress : 46.242.121.90 
date  : 2017/02/24 
time  : 08:27:51pm 
device : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.450 
city  : Moscow 

ipaddress : 89.179.106.75 
date  : 2017/02/24 
time  : 09:15:15pm 
device : Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.3 
city  : Rostov-on-Don 

ipaddress : 176.193.111.146 
date  : 2017/02/25 
time  : 11:25:49am 
device : Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) 
city  : Moscow 

ipaddress : 37.204.142.237 
date  : 2017/02/25 
time  : 05:49:15pm 
device : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.5072 
city  : Moscow 

ipaddress : 5.228.95.51 
date  : 2017/02/25 
time  : 07:47:42pm 
device : Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/7.0) 
city  : Moscow 

ipaddress : 109.63.236.189 
date  : 2017/02/25 
time  : 11:40:26pm 
device : Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.3 
city  : Moscow 

ipaddress : 176.195.116.125 
date  : 2017/02/26 
time  : 12:12:28am 
device : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.450 
city  : Andreyevka 

ipaddress : 66.249.93.218 
date  : 2017/02/26 
time  : 04:05:01am 
device : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 
city  :