如何获得单个文件(csv或txt),其中包含下面列出的成员的每个组的名称。
例如,所有组都以“ABC”开头。
这是我的代码,它给出了我想要输出到控制台的确切内容,但是,当我输出到CSV时,我无法附加组名,只能获得成员。
import-module activedirectory
$Groups = Get-ADGroup -filter {Name -like "ABC*"} | Select-Object Name
ForEach ($Group in $Groups)
{
write-host " "
write-host "$($group.name)"
Get-ADGroupMember -identity $($group.name) -recursive | Select-Object Name
}
上面的代码在控制台上给出了一个很好的输出,其布局如下:
ABC1组
PERSON1
PERSON2
Person3可能
Person4
ABC2组
PERSON1
PERSON2
Person3可能
Person4
如何将此输出转换为文本或csv文件,保持上面的布局和格式?
答案 0 :(得分:1)
使用-Append开关将其传输到Out-File。 您可以使用Write-Host行执行相同的操作,只需使用-Append将输出通过管道输出到Out-File。
答案 1 :(得分:1)
你知道为什么它没有输出到你的文件中吗?因为你告诉它不要。
Write-Host "$($group.name)"
这将写入主机,您的powershell应用程序(ISE或控制台),而不是其他任何东西,因为这是您告诉它要做的事情。使用Write-Output或仅将文本放在行上,并在其周围加上引号。
import-module activedirectory
$Groups = Get-ADGroup -filter {Name -like "ABC*"} | Select-Object Name
ForEach ($Group in $Groups)
{
"`n"|Out-File Somefile.txt -append
"$($group.name)"|Out-File Somefile.txt -append
Get-ADGroupMember -identity $($group.name) -recursive | Select-Object Name|Out-File Somefile.txt -append
}
答案 2 :(得分:1)
如果要在控制台上查看输出并将其保存在文件中:
import-module activedirectory
$Groups = Get-ADGroup -filter {Name -like "NU22*"} | Select-Object Name
$null | Set-Content Result.txt
ForEach ($Group in $Groups)
{
write-host " "
$($group.name) | Tee-Object -FilePath Result.txt -Append
Get-ADGroupMember -identity $($group.name) -recursive |
Select-Object Name | Tee-Object -FilePath Result.txt -Append
}