我见过各种与此类似主题的帖子。但没有一个符合我的确切要求。
我的目标是:
ADGroupName
),第2列(extensionAttirbute1
)我确信这可以简单地完成,但要使其与extensionAttribute1
值一起使用,证明是困难的。
以下是一些代码:
所以,我有两个功能。
下面是我在离开最后一个函数之后,在它不起作用之后擦掉了各种代码。
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}
}
}
答案 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
}
谢谢。