3_POWERSHELLの覚書 リストに一致する条件をCSVから取得

タイトルどおりです。わかりにくいですがそのうちまとめます。

map.csv

Station number
清瀬 30
東久留米 40
ひばりが丘 50
保谷 60
大泉学園 70
石神井公園 80
練馬 90
桜台 92
東長崎 97
椎名町 98
池袋 99

sc.csv

name add shubetu
1 127.30.0.1 ABC
2 127.70.8.9 XYZ
3 127.80.7.5 XYZ
4 127.50.6.2 ABC
5 127.60.6.2 XYZ
6 127.40.6.2 XYZ
7 127.90.7.6 ABC
8 127.92.6.3 XYZ
9 127.98.6.3 XYZ
10 127.92.6.3 ABC
11 127.99.6.3 XYZ

 

test.ps1

# Windowを作成するおまじない
$rui = $host.UI.RawUI
$rui.WindowSize = New-Object System.Management.Automation.Host.Size(80,30)

# CSVファイルの読み込み
$map = Import-Csv .\map.csv -Encoding utf8
$sc = Import-Csv ./sc.csv -Encoding utf8

# 関数を作成する
function search($types,$F_or_L){
$desk = $sc | Where-Object {$F_or_L -eq $_."shubetu"} | Select-Object add | select -Expandproperty "add"

# %はForEach-Objectの省略形
$new_key = $desk | % { $_.Split(".")[1] } |Sort-Object| Get-Unique

$result = $map | Where-Object -FilterScript {$new_key -contains $_.number}
#これではダメ$aaa = $map | Where-Object -FilterScript {$_.number -contains $new_key}


write-host "--------------------"$types "結果------------------------"
Write-Host ""
for($i=0;$i -lt $result.length;$i++){
Write-Host $result[$i]."Station"
}
write-host ""
write-host "-----------------------------------------------------"
}

search "First" "ABC"
search "Last" "XYZ"

pause