PowerShell:get-adgroupmember的已启用状态为空

时间:2018-01-17 02:51:47

标签: powershell

以下脚本提取所有Active Directory组及其相应的成员,但我的启用状态输出为空。

我希望在输出中获得启用状态以及其他3个属性。

我将代码运行为code.ps1>> user.txt。

//Constructor
public StartQuote(WebDriver driver) {
    PageFactory.initElements(driver, this);
    this.driver = driver; //add this
}

示例输出:

ForEach ($GroupName in (Get-ADGroup -Filter *))
 {
 "The AD Group $GroupName.Name members are:"
 Get-ADGroupMember -Identity $GroupName.Name | Select Name,samAccountName,Enabled,ObjectClass | Where {$_.ObjectClass -eq "user"} | Where {$_.Enabled -eq $true}
 "`n"
 }

1 个答案:

答案 0 :(得分:1)

试试这个:

ForEach ($GroupName in (Get-ADGroup -Filter *))
{
     $GroupMembers = Get-ADGroupMember -Identity $GroupName.Name | Where {$_.ObjectClass -eq "user"} | Get-ADUser -Properties Enabled | Where {$_.Enabled -eq $true} | Select Name,samAccountName,Enabled,ObjectClass 

     if ($GroupMembers) {
         "The AD Group $($GroupName.Name) members are:"
         $GroupMembers
         "`n"
     }
 }
  • 您的代码正在编写所有组的名称(无论他们是否有用户,但不完全正确,因为您需要使用子表达式$()来访问".."中对象的属性串)。我的版本修改了只在该组实际拥有用户成员时才写入该行。
  • filter left通常是个好主意,也就是说Where应该尽可能地使用。
  • 默认情况下不返回用户的Enabled属性,因此您需要将结果通过管道传输到Get-ADUser,然后指定您希望通过-Properties参数返回该属性。