【问题标题】:Modifying UserAccountControl Flags - Toggling a Flag修改 UserAccountControl 标志 - 切换标志
【发布时间】:2017-03-01 01:39:30
【问题描述】:

我想知道是否有一种方法可以打开或关闭 UserAccountControl 标志,尽管其他标志处于状态。例如,假设我们有如下配置:

尽管当前有$user.UserFlags.value,我如何只将“密码永不过期”标志切换为真?

当所有标志都关闭时,$user.UserFlags.value 为 513。当仅“密码永不过期”标志被切换时,$user.UserFlags.value 为 66049。

您可以想象,$user.UserFlags.value 可以反映以下文章中提到的不同配置的一系列数字:

How to use the UserAccountControl flags to manipulate user account properties

我觉得我可以使用带掩码的按位操作提出解决方案,但需要一些指导。我的最终目标是编写一个 Power Shell 脚本来切换这个值,无论当前配置是什么。

有什么建议吗?

【问题讨论】:

    标签: windows powershell user-management


    【解决方案1】:

    您要查找的操作是XOR。使用按位异或运算符 (-bxor) 将当前的 UserFlags 值与您要切换的标志(在本例中为标志 DONT_EXPIRE_PASSWORD 的 0x10000 或 65536)合并并提交更改:

    $user.InvokeSet('UserFlags', $user.UserFlags.Value -bxor 0x10000)
    $user.CommitChanges()
    

    有关详细信息,请参阅about_Comparison_Operators 中的“位运算符”部分。

    【讨论】:

    • 完美简洁。非常感谢!
    猜你喜欢
    • 2012-07-15
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多