如何在PowerShell中的variables中使用导入的文本

我想与一些用户自动AD解锁。

我用它来导入文本文件中的信息

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必须与第一个命令(export eventlog)中列出的用户名相同。 我怎样才能做到这一点? 当然用户名每次都会有所不同,所以我想知道我是怎么做到的。 让一些用户自动解锁将帮助我很大的时间!

像batch file中的%USERNAME%。

我如何正确地做到这一点?

而不是这种方法,使用Search-ADAccount cmdlet来查找locking的帐户,并pipe理列表中的任何帐户可能更有意义:

 Search-ADAccount -LockedOut | where { $ListOfUsersToUnlock -contains $_.Name } | Unlock-ADAccount 

通过parsing和祈祷工作风格(对象 – >文本 – >parsing – >对象),使其变得更加困难。

BartekB的答案绝对是被问到的原始问题的一个很好的答案。 但是,不得不持续地对AD进行轮询,以locking帐户,以便在发生被locking时select性地解锁子集,这对于根本问题似乎是一个非常糟糕的解决scheme。

在这一天结束的时候,听起来好像你想有一个你的用户的一个不能把他们的密码locking的子集。 那么为什么不在用户的子集上使用细粒度的密码策略 ,以防止他们被locking在第一位呢? 不需要脚本,也没有轮询AD。 只需创build您的密码设置对象(PSO),即可删除locking设置,并将其locking在包含您不想locking的用户的组上。