【问题标题】:Change active directory users properties based on group membership with exclusions根据具有排除项的组成员身份更改 Active Directory 用户属性
【发布时间】:2019-04-25 12:21:14
【问题描述】:

我正在尝试更改属于某个 AD 组成员的用户的 AD 属性(Windows VPN,即路由和远程拨入服务)。这里没关系。但同时我需要排除那些在其他组中具有额外成员资格的用户的更改属性。假设所有用户都在“Office”组中。我可以使用下面的脚本对他们全部禁用 VPN。但在该组中还存在另外属于“VPN always on”组的用户。如何将它们从脚本操作中排除。

这是我的工作脚本(不排除):

Get-ADGroupMember -Identity "Office" | where {$_.objectclass -eq "user"} | foreach { Set-ADUser -Identity $($_.distinguishedName) -clear msnpallowdialin}

【问题讨论】:

    标签: windows powershell active-directory rras


    【解决方案1】:

    几乎可以肯定有更好的方法可以做到这一点,但是......

    删除 -WhatIf 以实际进行更改

    Get-ADGroupMember -Identity "Office" | where {$_.objectclass -eq "user"} | ForEach {
        Get-ADUser -Identity $_ -Properties memberof , msnpallowdialin | Where-Object {!($_.memberof -like "*VPN USer Group*")} | Set-ADUser -Clear msnpallowdialin -whatif
    }
    

    【讨论】:

    • 感谢您的快速回复!不幸的是,该脚本需要“过滤器:”才能走得更远。我尝试了不同的过滤器和脚本的其他变体,但没有运气。我还尝试以不同的方式实现您对 $_.memberof 的想法。但没有运气。我可以让脚本在没有错误的情况下工作,甚至 msnpallowdialin 更改,但我无法排除工作。还尝试使用 $badlists(排除组)和不同的 foreach 类型创建变量。也没有运气。
    • 抱歉,忘记添加 Identity 参数 - 请参阅上面的编辑脚本。
    • 很奇怪。 like 运算符有效,但 notlike 无效。但我需要它。似乎 notlike 只是没有“看到” memberof 字符串中的相应文本。测试了很多。其他运算符(例如(不)匹配、(不)包含等)也不起作用。有什么想法或解决方法吗?
    • 现在可以了!用 {!(..-like)} 更改 notlike 是个好主意。我完全忘记了这个方法。现在脚本成功地将 VPN 重置为“Office”组的所有用户,并且不接触排除组的用户。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2019-08-12
    相关资源
    最近更新 更多