【问题标题】:Comparing AD Group and a CSV in Powershell在 Powershell 中比较 AD 组和 CSV
【发布时间】:2013-07-19 09:51:34
【问题描述】:

我对 Powershell 很陌生,而且我在从 CSV 中查找信息时遇到了困难。我有一个 AD 用户组,我试图从 CSV 中查找包含他们的 samAccountName 的条目。

CSV 具有标题 samAccountname、IP、子网和主机名。例如这里是一个摘录: 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 }

谁能帮忙?

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    试试这个:

    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 }
    }
    

    【讨论】:

    • 成功了!非常感谢。我需要它,这样我就可以将这些主机名移动到它们在 AD 中的正确位置,因此在脚本末尾添加了一个管道来完成它。一切都很好。再次感谢!
    【解决方案2】:

    我解决此类问题的方法是将两个对象数组连接起来,然后使用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数组来构建一个新对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多