2017-07-13 10 views
2

イムこれは、このようにIPアドレスのリストを返しますPowerShellの -

$Request = 'https://url-to-json.com/file.json' 
$AWSIPs = Invoke-WebRequest $Request | ConvertFrom-Json | Select-Object prefix -ExpandProperty prefixes -ExcludeProperty ("/.*") | Where-Object -Property "service" -EQ "service_name" | select ip_prefix 
foreach ($awsip in $AWSIPs){ 
echo $awsip 
} 

次の構文を使用してJSONファイルからIPアドレスのリストを抽出する文字列から削除します - 0.0.0.0/00

  • 0.0.0.0/00
  • 0.0.0.0/00
  • 0.0.0.0/00
  • 0.0.0.0/00
  • 私はそうすることができますが前に、私は明らかにそれが00ではありません(末尾に/ 00を削除する必要があるが、それはサブネットマスクですが、これ、IPアドレスのリストを使用する必要が
  • 0.0.0.0/00

ほとんど同じではありません)。

私はこの点で大きな助けになります。

ありがとうございました。

答えて

5

-replaceベースのソリューション:あなたは-replace操作のLHSとして直接配列を使用する方法

$ips = '0.0.0.0/00', 
     '0.0.0.1/01', 
     '0.0.0.2/02', 
     '0.0.0.3/03', 
     '0.0.0.4/04' 

$ips -replace '(.*)/.*', '$1' 

注意。

上記利回り:

0.0.0.0 
0.0.0.1 
0.0.0.2 
0.0.0.3 
0.0.0.4 

-splitがあまりにもオプションですが、明示的なループ必要な追加の複雑さを避けるために:

foreach ($ip in $ips) { 
    ($ip -split '/')[0] 
} 

それを回避することが可能です明示的なループですが、パフォーマンスと可読性の両方の理由から、これはおそらく価値がありません。ただし、PowerShellの柔軟性は示されています。

($ips -split '/')[(0..($ips.Count-1)).ForEach({ $_ * 2 })]