使用Powershell从列表和组成员属性中获取AD组名称

时间:2017-03-30 20:41:39

标签: powershell

我尝试从包含AD群组名称的文本文件中Get-Content。然后,从该组列表中获取用户的每个成员samaccountnamenameenabled属性的AD用户属性。我希望看到的输出对于文本文件中的每个组看起来都是这样的。

Group Name
samaccountname  name  enabled

我设法获得正确的输出但无法正确输出,因为Write-Host结果无法输出到文件。这是获得我想要的脚本(好吧 - 第一个组名出现在标题上方。)

$ErrorActionPreference = "SilentlyContinue"  
Get-Content D:\ADGroups.txt | Where{$_ -ne $null -and $_.trim() -ne ""} |   
    foreach{  
        $Group = $_   
        Write-Host "$Group"  
        Get-ADGroup -Identity $Group -Properties members |  
            Select-Object -ExpandProperty members |  
            Get-ADUser -Properties samaccountname, enabled |  
            Select samaccountname, name, Enabled  
    }   

我已经搜索并找到了类似的脚本,但没有一个产生我正在寻找的结果。

1 个答案:

答案 0 :(得分:0)

您应该能够做到(优化):

# Apply Silent Errors to only the functions you trust
$SC = ${ErrorAction="SilentlyContinue"}
cat "D:\ADGroups.txt" @SC | ? {"$_".trim()} | % {
    $Group = $_ 
    "$Group"
    Get-ADGroup -Identity $Group -Properties members @SC |
        Select -ExpandProperty members |
        Get-ADUser -Properties samaccountname, enabled @SC |
        Select samaccountname,name,enabled
} | Out-File "D:\Final-Output.txt"

这是因为Write-Host直接写入shell并被PowerShell的stdout流处理忽略。