我有一个csv,其中包含在Active Directory中创建或修改用户帐户时永远不应复制的安全组。它看起来像这样:
securityGroup
"CN=Security Group 1,OU=Security Groups,DC=domain,DC=com", "CN=Security Group 2,OU=Security Groups,DC=domain,DC=com", "CN=Security Group 3,OU=Security Groups,DC=domain,DC=com", "CN=Security Group 4,OU=Security Groups,DC=domain,DC=com"
复制AD组时,我们使用以下方法:
$userName = [User which security groups are copied TO]
$modelUser = [User which security groups are copied FROM]
$modelMember = Get-ADUser $modelUser -Properties MemberOf
$modelMember.MemberOf | Add-ADGroupMember -Members $userName
我们希望看到上述CSV文件中的任何组都不会从模型用户复制到另一个用户。通过在脚本中使用“-and”和“-not contains”反复手动输入安全组,我取得了一些成功,但我更愿意使用CSV。
$modelMember.MemberOf | Where{$_ -notcontains "CN=Security Group 1,OU=Security Groups,DC=domain,DC=com" -and $_ -notcontains "CN=Security Group 2,OU=Security Groups,DC=domain,DC=com" -and $_ -notcontains "CN=Security Group 3,OU=Security Groups,DC=domain,DC=com" -and $_ -notcontains "CN=Security Group 4,OU=Security Groups,DC=domain,DC=com"} | Add-ADGroupMember -Members $userName
我想我甚至都不知道从哪里开始。任何帮助将不胜感激!
答案 0 :(得分:0)
您显示的文件看起来不像CSV,这些是每行一个而不是逗号分隔的组。
只要您拥有PowerShell v3或更高版本,它就足够了:
$modelMember = Get-ADUser $modelUser -Properties memberOf
$forbiddenGroups = Get-Content groupList.txt
$modelGroups = $modelMember.MemberOf | Where-Object { $_ -notin $forbiddenGroups }
$modelGroups | Add-ADGroupMember -Members $userName
自我生成的PS帮助链接来自我的代码块(如果有):
Get-ADUser
(在模块ActiveDirectory
中)Get-Content
(在模块Microsoft.PowerShell.Management
中)Where-Object
Add-ADGroupMember
(在模块ActiveDirectory
中)