我想要一些用户的自动广告解锁。
我用它导入文本文件中的信息
Get-EventLog -LogName Security -ComputerName COMP -InstanceId 4740 -Newest 1 |
Format-List >> $log
然后我用这个
If ((Get-Content $log) -match $name )
{
Unlock-ADAccount -Identity $Account_Name
}
现在$Account_Name
必须与第一个命令(导出事件日志)中列出的用户名相同。我该怎么做?当然,用户名每次都会不同,所以我想知道我该怎么做。对某些用户进行自动解锁将对我有很大帮助!
批处理文件中类似于 %USERNAME% 的内容。
我怎样才能正确地做到这一点?
答案1
与这种方法相比,使用 Search-ADAccount cmdlet 来查找锁定的帐户并通过管道传输列表中的任何帐户可能更有意义:
Search-ADAccount -LockedOut |
where { $ListOfUsersToUnlock -contains $_.Name } |
Unlock-ADAccount
通过解析和祈祷的工作方式(对象->文本->解析->对象),您可以使其变得更加困难。
答案2
BartekB 的回答无疑是对原始问题的一个很好的回答。但如果要解决根本问题,就必须不断轮询 AD 以查找锁定的帐户,而只是为了选择性地解锁子集(如果这些子集恰好被锁定),这似乎是一个非常糟糕的解决方案。
归根结底,听起来你希望有一部分用户无法锁定密码。那么为什么不直接使用细粒度的密码策略针对该部分用户,防止他们首先被锁定?无需脚本,也无需轮询 AD。只需创建密码设置对象 (PSO),删除锁定设置,并将其定位到包含您不想锁定的用户的组即可。