【发布时间】:2019-04-06 03:23:47
【问题描述】:
我正在尝试将数据与多个来源进行比较,然后给我一份错误报告。由于异常的性质不断变化,我想构建一个 csv 格式的异常表,我可以随时更改。
我将尽我所能提供数据,并向您展示我正在努力实现的目标,并向您展示我遇到问题的地方。
例外列表包含不同类型帐户的前缀:
例外列表 _______________ FQ 问 总部 E因此,如果我的帐户是 BND123,那么我可能有一个名为 FQBND123 或 QBND123 的帐户,如果其中一个团队决定他们需要创建一个 JQ 帐户,我希望能够添加到此列表中或将来发生类似的事情。
这是我要解析的Inventoryreport.csv 示例:
所以我希望将目标系统用户名与安全名称进行比较,如果主要帐户在异常列表中,则将其传递出去,如果没有,则将其作为错误抛出。
所以在上面2行数据的情况下会在下面抛出错误。
HUMAN_P123456 根 HUMAN_KLMNO QKLMNO1出于明显的原因而根目录和KLMNO 帐户,因为尾随1。
我遇到的问题是它说一切都是错误的。如果我将它输入到循环中,一切都很好。
我在 foreach 循环中也有异常,在库存循环中,但它不断循环相同的结果,仍然吐出所有内容。
希望这是一个不错的解释,我确信我让这变得比需要的更难。
$loc = $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$D = $loc + "\Exceptions\Exceptions.csv"
$E = $loc + "\Import\InventoryReport.csv"
$exceptions = Import-Csv -LiteralPath $D
$inventory = Import-Csv -LiteralPath $E
$list2 = 'Inventory Report Exceptions'
$list3 = 'Target system user name'
$DO = $loc + "\Report\Inventory Report Errors" + "$((Get-Date).ToString('MM-dd-yyyy')).CSV"
$time = (Get-Date).ToString()
foreach ($item in $inventory) {
$input1 = $item.Safe -replace "HUMAN_"
$input4 = $item.Safe -replace "HUMAN_P"
$input2 = $item.$list3
$input3 = $item.Safe
if ($input2 -eq ($exceptions.$list2 + $input1) -or $input2 -eq ($exceptions.$list2 + $input4)) {
return
}
else {
$newitem = New-Object -TypeName PSCustomObject -Property @{
Safe = $input1
Owner = $input2
}| Export-CSV -LiteralPath $DO -NoTypeInformation -append
}
}
【问题讨论】:
标签: regex powershell csv