在Powershell中比较AD组和CSV

时间:2013-07-19 09:51:34

标签: powershell csv

我对Powershell很新,我从CSV中找到了砖块查找信息。我有一组AD用户,我试图从CSV中查找包含samAccountName的条目。

CSV的标题为samAccountname,IP,Subnet和Hostname。例如,这是一个摘录: neilp,10.1.52.22,10.1.52.0,Hostname01

我最终需要找到CSV中同时位于AD组中的任何samAccountnames的所有主机名。

我一直在尝试使用Compare-Object cmdlet,但没有成功:

Import-Module ActiveDirectory

$Test_Users = Get-ADGroupMember Test_Users
$Data = Import-csv .\Data.csv

$Data | ForEach-Object {Compare-Object $_ $Test_Users-ExcludeDifferent }

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

我解决这个问题的方法是连接两个对象数组,然后使用Group-Object CmdLet。请注意在CVS中使用与Get-ADGroupMember CmdLet中相同名称相同的列标题。

Import-Module ActiveDirectory

$a =  Import-csv .\Data.csv
$b =  Get-ADGroupMember Test_Users

$c = $a + $b | group-object -property XXXX

然后你可以遍历$c数组来构建一个新对象。

答案 1 :(得分:0)

试试这个:

Import-Module ActiveDirectory

$Test_Users = Get-ADGroupMember Test_Users
$Data = Import-Csv .\Data.csv

Compare-Object $Data $Test_Users -Prop sAMAccountName -Include -Exclude | % {
  $account = $_.sAMAccountName
  $Data | ? { $_.sAMAccountName -eq $account } | % { $_.Hostname }
}