Powershell Active Directory帐户属性变量

时间:2013-10-29 18:46:43

标签: powershell

抱歉新手问题。我使用Powershell 3来获取所有用户帐户的列表。我正在尝试为帐户生成输出,“已启用”或“已禁用”。我可以使用以下命令从活动目录中获取帐户状态代码:

$rc = $Rech.PropertiesToLoad.Add("userAccountControl");

这将显示正确的帐户状态代码。

当我尝试对值使用if语句时,我得不到任何结果。如何将此值放入变量中以使用某些逻辑?

最后,我的要求是将输出转换为CSV文件,我可以将其发送给HR并让它们进行检查,而不是代码我想让它说“已启用”或“已禁用”。 / p>

谢谢。

1 个答案:

答案 0 :(得分:2)

userAccountControl属性是位图,这意味着数字中的每个位表示true(1)或false(0)值。这是一个例子:

$ADS_UF_ACCOUNTDISABLE = 2
...
$accountDisabled = ($userObject.Properties["useraccountcontrol"][0] -band $_ADS_UF_ACCOUNTDISABLE) -ne 0

在此示例中,如果帐户被禁用,变量$ accountDisabled将包含$ TRUE,否则将包含$ FALSE。要检查userAccountControl属性中的任何其他位,请使用http://msdn.microsoft.com/en-us/library/windows/desktop/aa772300.aspx中记录的标记值,并与 -band 运算符结合使用,如本例所示。如果不为零( -ne 0 ),则该位置位;如果为零( -eq 0 ),则不设置该位。另一个例子是检查是否设置了“密码永不过期”位;你可以使用这样的代码:

$ADS_UF_DONT_EXPIRE_PASSWD = 65536
...
$neverExpires = ($userObject.Properties["useraccountcontrol"][0] -band $ADS_UF_DONT_EXPIRE_PASSWD) -ne 0