2012-01-10 144 views
2

我是powershell世界的新手,我在PowerShell中进行了一些项目以进行库存核对。比较两个csv文件并发现差异

我不知道如何在这个行动,我尝试了一些基本的步骤,我能够出口

用户/组/组成员。

以下是要求:

  • 现在我已经实现 - 由于Govnah

AD查询:

Get-QADUser -searchRoot $OuDomain -SizeLimit 0 | 
Select-Object dn, sAMAccountName, @{Name="Groups";Expression={(Get-QADMemberOf $_ | Select-Object -expandProperty Name) -join ";"}} | 
Sort-Object SamAccountName | 
export-csv $FilePath 

我有现在二人的CSV文件喜欢AD_users.csvOracle_users.csv

我想比较这两个文件,并重定向像

AD用户的差异甲骨文 不存在Oracle用户不存在AD

的样本数据

AD_users.csv

u388848993 
K847447388 
u994888484 

Oracle_users.csv

k095848889 
u388848993 

我可以查询oracle数据库,AD查询也很好,唯一值得关注的是我无法比较输出。

+1

让我们来看看你的CSV文件数据。用两个例子更新你的问题。用示例文本替换敏感信息。 – 2012-01-10 07:27:58

+0

这些是csv文件中的唯一列吗?不应该在顶部还有列名吗? – 2012-01-10 07:43:02

+0

正如@ user978511指出的,看起来你缺少头文件'dn,sAMAcountName,Groups'和相关的数据示例文本。 – 2012-01-10 07:47:05

回答

4

我做了这样的事情在脚本中我写道:

[System.Collections.ArrayList]$adlist = Get-Content c:\users\sverker\desktop\ad.csv |Sort-Object 
[System.Collections.ArrayList]$oraclelist = Get-Content c:\users\sverker\desktop\oracle.csv |Sort-Object 
$Matching_numbers = @() 

ForEach ($number in $adlist) 
{ 
    if ($oraclelist.Contains($number)) 
    { 
     $Matching_numbers += $number 
    } 
} 
ForEach ($number in $Matching_numbers) 
{ 
    $adlist.Remove($number) 
    $oraclelist.Remove($number) 
} 

现在$ Matching_numbers现在包含匹配的数字 和$ adlist包含广告 和$ oraclelist仅数只数从Oracle

然后你可以通过列表和显示值循环:

Write-Host "Matches:" 
ForEach ($value in $Matching_numbers) 
{ 
    $Message += $value + [Environment]::NewLine 
} 
Write-Host $Message 

Write-Host "AD only:" 
ForEach ($value in $adlist) 
{ 
    $MessageAd += $value + [Environment]::NewLine 
} 
Write-Host $MessageAd 

Write-Host "Oracle only:" 
ForEach ($value in $oraclelist) 
{ 
    $MessageOracle += $value + [Environment]::NewLine 
} 
Write-Host $MessageOracle 

或简单地写

$Matching_numbers 

将输出列表来安慰

可以输出$消息变量文件或使..

毫无疑问,有做它一个更好的方式,但这个工作对于我来说,对于某种类型的文件。

+0

是的,为什么我没有想到这一点。猜猜我还没有明白,Powershell有.Net的力量:)我会更新答案 – Sverker84 2012-01-10 08:00:46

+0

它完美的工作,现在我正在努力重新定向输出。 – Naveen 2012-01-10 08:05:53

+0

显然现在你提到它:) – Sverker84 2012-01-10 08:18:22

相关问题