使用Powershell,CSV和&amp ;;管理AD组成员。 extensionAttribute1

时间:2016-10-13 14:30:17

标签: powershell csv active-directory-group

我见过各种与此类似主题的帖子。但没有一个符合我的确切要求。

我的目标是:

  • 使用包含第1列(ADGroupName),第2列(extensionAttirbute1
  • 的CSV
  • 根据CSV
  • 从AD群组中删除用户
  • 根据CSV
  • 将用户添加到AD群组

我确信这可以简单地完成,但要使其与extensionAttribute1值一起使用,证明是困难的。

以下是一些代码:

所以,我有两个功能。

  • 首先创建可以使用的CSV。 (工作)。
  • 第二个功能根据CSV内容添加/删除AD组。 (工作)。

下面是我在离开最后一个函数之后,在它不起作用之后擦掉了各种代码。

Function SyncGroups {
  $Groups = Import-Csv "C:\Temp\Scripts\GroupMembership.csv"

  foreach ($user in $Groups) {
    Add-ADGroupMember -Identity $user.Group -Members $user.extensionAttribute1
    Get-ADUser -Filter {extensionAttribute1 -eq $user.extensionAttribute1}
  }
}

2 个答案:

答案 0 :(得分:0)

您遇到的问题是对参数-Filter如何运作的常见误解(请参阅this answer类似问题)。最好将参数的参数视为一个字符串(因为它基本上就是它,尽管有符号),并将其定义为。

$user.extensionAttribute1分配给变量并在表达式中使用该变量:

foreach ($user in $Groups) {
  Add-ADGroupMember -Identity $user.Group -Members $user.extensionAttribute1
  $attr = $user.extensionAttribute1
  Get-ADUser -Filter "extensionAttribute1 -eq '$attr'"
}

或将$user.extensionAttribute1放入subexpression

foreach ($user in $Groups) {
  Add-ADGroupMember -Identity $user.Group -Members $user.extensionAttribute1
  Get-ADUser -Filter "extensionAttribute1 -eq '$($user.extensionAttribute1)'"
}

答案 1 :(得分:0)

谢谢Ansgar。

尝试完代码之后,我意识到我的排序错误,所以下面是我设法让它工作的方式。如果没有你对我的误解的清晰描述,我不可能做到这一点。

$Groups = import-csv "C:\Temp\Scripts\GroupMembership.csv"

Foreach($user in $Groups){       
$Member = Get-ADUser -Filter "extensionAttribute1 -eq '$($user.ExtensionAttribute1)'"
Add-ADGroupMember -Identity $user.Group -Members $Member
}  

谢谢。