dpj*_*dpj 5 csv powershell compare
我是 powershell 新手。但是学习......我的脚本距离实现我想要的还很远。我只是想念最后一部分。我希望有人可以 我遇到的问题是在创建 CSV 文件时没有得到正确的结果。
好的,我有一个类似这样的 CSV 文件:
A B
AAAA 111111
CCCC 222222
EEEE 333333
HHHH 444444
Run Code Online (Sandbox Code Playgroud)
现在我有一个包含以下信息的数组:
AAAA
BBBB
CCCC
DDDD
HHHH
Run Code Online (Sandbox Code Playgroud)
我将数组中的值与 CSV 文件进行比较。我想收到B列的结果。
这工作正常。我收到这个结果:
111111
222222
444444
Run Code Online (Sandbox Code Playgroud)
所以基本上这个是正确的。但是......我需要收到这个:
111111
222222
444444
Run Code Online (Sandbox Code Playgroud)
因此,当找不到该值时,我想要一个空单元格
我希望我的问题足够清楚;)
我的代码是这样的:
$CSV = import-csv C:\tmp\mac-vendors-export.csv -Delimiter ';'
$vendormacarray = $Vendormac
$vendorname = foreach ($UniqueVendorMac in $Vendormacarray) {
$csv | where-object {$_.A -match $UniqueVendorMac} | select-object -Expand B
}
Run Code Online (Sandbox Code Playgroud)
我想我必须添加类似-or $_.A -eq 'null'......的内容,但无法弄清楚最后一部分。
希望有人能帮我解答这个问题。
谢谢
使用哈希表将项目存储A为键,将项目存储为B值,这样您可以在与 进行比较时执行快速查找$vendormacarray。
一个例子:
$map = @{}
Import-Csv C:\tmp\mac-vendors-export.csv -Delimiter ';' | ForEach-Object {
$map[$_.A] = $_.B
}
$vendorMac = @(
'AAAA'
'BBBB'
'CCCC'
'DDDD'
'HHHH'
)
$vendorMac | ForEach-Object {
[pscustomobject]@{
MAC = $_
ThingInB = $map[$_]
}
}
Run Code Online (Sandbox Code Playgroud)
那么使用您问题中的数据的输出将类似于:
$map = @{}
Import-Csv C:\tmp\mac-vendors-export.csv -Delimiter ';' | ForEach-Object {
$map[$_.A] = $_.B
}
$vendorMac = @(
'AAAA'
'BBBB'
'CCCC'
'DDDD'
'HHHH'
)
$vendorMac | ForEach-Object {
[pscustomobject]@{
MAC = $_
ThingInB = $map[$_]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |