首页 > 解决方案 > 从给定的组列表中提取用户并使用 powershell 将数据提取到文本中的每个新组名

问题描述

从给定的组列表中提取用户列表时,输出文件命令行开关面临问题。我每次都需要以文本格式生成一个新的文本文件,其中包含内容列表中给出的组名称,并且每次生成的数据都应该在该文本文件中。

$grp= Get-Content 'C:\Users\p731400a\Desktop\groups.txt'
$grpdata= @()
$grpname=@()
foreach($grps in $grp)
{
    $grps
    $data= get-qadgroupmember $grps | Select-Object samaccountname | ft -AutoSize
    $grpname +=$grps
    $grpdata+= $data
}
Out-File -FilePath C:\Users\p731400a\Desktop\$grps.txt -InputObject $grpdata

标签: powershell

解决方案


如果在输入文件中,组名分别存储在单独的行上,应该这样做:

# read the input file as string array and loop through the list
Get-Content 'C:\Users\p731400a\Desktop\groups.txt' | ForEach-Object {
    # the $_ automatic variable here represents one group name at a time

    # add the `-Indirect` switch to get group members recursively when using 'Get-QADGroupMember'
    $members = Get-QADGroupMember $_ -Type 'user' -Indirect | 
               Select-Object -ExpandProperty SamAccountName

    # or use 
    # $members = Get-ADGroupMember -Identity $_ -Recursive | 
    #            Where-Object { $_.objectClass -eq 'user' } | 
    #            Select-Object -ExpandProperty SamAccountName

    #output on screen:
    Write-Host ("{0}`r`n{1}" -f $_, ('-' * $_.Length)) -ForegroundColor Yellow
    $members

    #output to file:
    $members | Add-Content -Path "C:\Users\p731400a\Desktop\$_.txt"
} 

希望有帮助


推荐阅读