【发布时间】:2025-12-22 00:05:18
【问题描述】:
我把下面的东西放在一起,它可以完成这项工作。但是,输出不是很可行。所以我想使用Export-Csv 将这一切输出到CSV。我知道我可以通过转到ForEach-Object 查询来做到这一点,但我不完全确定如何实现。
我添加了一个转换它的尝试,希望能有所帮助。我不确定如何为每个对象指定变量。例如,第一部分调用林中的所有域。如何在下一个管道查询中使用每个响应?等等。
$domains = (Get-ADForest).Domains
$controllers = @()
$worked = $false
foreach ($domain in $domains) {
$controller = Get-ADDomainController -Discover -ForceDiscover -DomainName $domain |
Select-Object HostName
$controllers += $controller
}
while (-not $worked) {
try {
foreach ($item in $controllers) {
$value = $item.HostName.Value
Write-Host $value
Write-Host 'Domain Admins'
Get-ADGroupMember -Identity 'Domain Admins' -Server $value |
Get-ADUser -Properties name, samaccountname, Description, EmailAddress |
Where {$_.Enabled -eq $true} |
Format-Table Name, SamAccountName, Description, EmailAddress -AutoSize
}
$worked = $true
} catch {}
}
转换尝试
ForEach-Object{
(Get-ADForest).domains | Get-ADDomainController -Discover -ForceDiscover -DomainName $domain |Select-Object HostName | Get-ADGroupMember -identity 'Domain Admins' -Server $value | Get-ADUser -Properties samaccountname, Description, EmailAddress | Where {$_.Enabled -eq $true}
}| Export-Csv -Path "$HOME/Desktop/DomainAdmins.csv" samaccountname, Description, EmailAddress -AutoSize
【问题讨论】:
-
将
Format-Table替换为Export-Csv -Append。 -
另外,你为什么使用$worked?这没有任何意义。
-
@4c74356b41 看看倒数第三行。该变量用于在 `foreach 循环运行且没有终止错误的情况下终止
while循环。有点尴尬,但应该可以。 -
我知道它应该可以工作,但它没有任何意义
-
@4c74356b41 确实有道理。 PowerShell interprets an empty/null variable as
$false,因此循环继续,直到变量设置为$true(或其他填充值)。
标签: powershell csv export-to-csv