使用Foreach-Object清除域管理员

时间:2015-05-07 16:06:25

标签: powershell active-directory

我正在清理继承的Domain Admins组并删除不再需要的服务帐户。我试图提取Domain Admins组的组成员身份并将其提供给Get-ADUser,但收效甚微。

$name = Get-ADGroupMember "domain admins" | select -ExpandProperty Name
Foreach-Object {
  Get-ADUser -Filter { Name -Like "$name"} -Properties * | FT Name, LastLogonDate
}

如果我自己运行Get-ADGroupMember它就可以了。如果我使用列表中的名称(而不是Get-ADUser变量)运行$name,则可以正常运行。但是,当我试图将它们绑在一起时,它不起作用。

2 个答案:

答案 0 :(得分:2)

我很高兴你能够使它成功,但我想提供一些建议。当你真正需要的只是-Properties *时,首先不要使用LastLogonDate。您提取的数据超出了您的需求。此外,您甚至不需要ForEach循环,因为Get-Aduser将非常接受管道输入。

Get-ADGroupMember "domain admins" | Get-ADUser -Properties LastLogonDate |
  Select Name,LastLogonDate 

或者你真的想要控制台输出,应该是标准输出

Get-ADGroupMember "domain admins" | Get-ADUser -Properties LastLogonDate |
  Format-Table Name,LastLogonDate -AutoSize

答案 1 :(得分:1)

感谢@EBGreen,您的评论指出了我正确的方向。我能够通过以下方式得到我需要的东西:

Get-ADGroupMember "domain admins" | select -ExpandProperty SamAccountName | % {
    $name=$_
    Get-ADUser $_ -Properties *
} | FT Name, LastLogonDate -AutoSize