我是powershell的新手。但是学习…我和我的剧本要实现我想要的东西还很远。我只是错过了最后一部分。我希望有人能我遇到的问题是在创建CSV文件时没有得到正确的结果。
好的,我有一个像这样的CSV文件:
A B
AAAA 111111
CCCC 222222
EEEE 333333
HHHH 444444
现在我有一个数组的信息:
AAAA
BBBB
CCCC
DDDD
HHHH
将数组中的值与CSV文件进行比较。我想收到b列的结果
工作正常。我收到这样的结果:
111111
222222
444444
基本上这是正确的。但是…我需要接收这个:
111111
222222
444444
当没有找到值时,我想要一个空单元格
我希望我的问题足够清楚;)
我的代码是:
$CSV = import-csv C:tmpmac-vendors-export.csv -Delimiter ';'
$vendormacarray = $Vendormac
$vendorname = foreach ($UniqueVendorMac in $Vendormacarray) {
$csv | where-object {$_.A -match $UniqueVendorMac} | select-object -Expand B
}
我想我必须添加一些像-or $_.A -eq 'null'
....但最后这部分我想不明白。
希望有人能帮我解决这个问题。
谢谢
使用哈希表将A
中的项目存储为键,将B
中的项目存储为值,这样您可以在与$vendormacarray
比较时执行快速查找。
一个例子:
$map = @{}
Import-Csv C:tmpmac-vendors-export.csv -Delimiter ';' | ForEach-Object {
$map[$_.A] = $_.B
}
$vendorMac = @(
'AAAA'
'BBBB'
'CCCC'
'DDDD'
'HHHH'
)
$vendorMac | ForEach-Object {
[pscustomobject]@{
MAC = $_
ThingInB = $map[$_]
}
}
那么使用您的问题中的数据的输出将类似于:
MAC ThingInB
--- --------
AAAA 111111
BBBB
CCCC 222222
DDDD
HHHH 444444