输出AD用户列表,组名以* ABC *开头

时间:2014-05-21 16:45:04

标签: windows csv powershell active-directory

如何获得单个文件(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文件,保持上面的布局和格式?

3 个答案:

答案 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
   }