【发布时间】:2014-11-10 20:29:36
【问题描述】:
我的任务是查找密码过期的服务帐户(在我们的商店中,即用户名中以“svc-”开头的用户帐户)。通常服务帐户不应该有过期的密码,所以我试图找到错误创建的服务帐户,以便修复它们。
我一直在使用 Search-ADAccount,但遇到了参数问题。如果我使用这个:
Search-ADAccount -PasswordNeverExpires | Where {$_.SamAccountName -like 'SVC-*'}
然后我得到一长串结果,其中没有一个密码过期。但是,如果我包含 -PasswordNeverExpires 参数,那么我将过滤掉所有确实具有过期密码的帐户,不是吗?
我也试过这个:
Search-ADAccount | Where {$_.SamAccountName -like 'SVC-*' -and $_.PasswordNeverExpires -like 'FALSE' }
但我只得到一个错误:“无法使用指定的命名参数解析参数集。”听起来 Search-ADAccount 需要某些参数,但我在帮助文件中没有看到需要哪些参数。
Search-ADAccount 有一个参数可以搜索一个布尔条件 (TRUE) 但不能搜索另一个,这违反直觉(对我来说)。
Get-ADUser 似乎没有任何密码配置信息。
【问题讨论】:
-
Micky,我看不出这将如何产生与 $_.PasswordNeverExpires 不同的结果——比如 'FALSE'
-
PasswordNeverExpires 是一个布尔值,您正在比较字符串 :) 另一个测试可能是 $a = $false $a.ToString() -like 'FALSE' 它返回 True
-
谢谢,米奇。我刚试了一下,结果为零。但是,如果预先使用 -PNE 参数过滤了结果,那么搜索结果的位置当然会是空的,不是吗?如果我递给你一袋弹珠,让你把黑色弹珠捞出来,如果我已经把黑色弹珠拉出来了,你就找不到了。
-
您发出的确切命令是什么?与您使用的所有参数
-
搜索-ADAccount -PasswordNeverExpires | Where-Object { $_.SamAccountName -like 'SVC-*' -and ` $_.PasswordNeverExpires -eq $false}
标签: powershell active-directory passwords