1

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

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

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

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

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

谢谢你。

4

1 回答 1

2

userAccountControl 属性是一个位图,这意味着数字中的每个位代表一个真 (1) 或假 (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
于 2013-11-03T18:43:20.803 回答