我尝试从包含AD群组名称的文本文件中Get-Content
。然后,从该组列表中获取用户的每个成员samaccountname
,name
,enabled
属性的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
}
我已经搜索并找到了类似的脚本,但没有一个产生我正在寻找的结果。
答案 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流处理忽略。