如何在 powershell 中的变量中使用导入的文本

如何在 powershell 中的变量中使用导入的文本

我想要一些用户的自动广告解锁。

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

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),删除锁定设置,并将其定位到包含您不想锁定的用户的组即可。

相关内容