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