如何在 txt 或 csv 文件中获取所有用户的 get-ADPrincipalGroupMembership 并为每个用户放入一个 txt 文件?

How to get the get-ADPrincipalGroupMembership for all users in a txt or csv file and put into a txt file for each user?

我正在尝试为 txt/csv 文件中指定的每个用户获取一个包含组成员资格的文件。 所以这是我之前的:

Get-ADPrincipalGroupMembership -Identity $user -Server $DC | Select name | Where-Object name -like GUSR_* | Out-File "C:\temp$user.txt" 

这对于从 1 个单个用户获取组来说工作正常,但现在我必须为 100 多个用户执行此操作。 而不是一个一个地做,我正在寻找一种自动化的方法。

所以我为自己准备了一份 .csv 导出文件,其中包含我希望为其完成此操作的所有用户。 并开始尝试。

到目前为止我想到了什么:

$users = Get-Content "C:\temp\test.csv" |ForEach-Object  {Get-ADPrincipalGroupMembership -Identity $users -Server $DC | Select name | Where-Object name -like GUSR_* | Out-File "\ads.net\ADS\SDL\Temp\_ROLAND\RSD\test2$users.txt"}

这个cleary不工作。 我已经用 foreach 命令尝试了其他一些事情,但没有任何效果。 我觉得我没有走上获得结果的正确道路。 也许有人以前做过这件事,可以帮助我走上正确的道路。 我不是 Powershell 的新手,但我远不是专家,大部分时间我将它用于基本的单一命令或编辑我发现的一些很棒的脚本。 遗憾的是我还没有找到。

谨致问候 罗兰

  • 不要重新赋值给变量
  • 导入 CSV
  • select
  • 后无过滤器
  • 美化你的-like
  • 使用$_作为管道变量
  • 使用子表达式运算符进行字符串+变量连接
Import-Csv "C:\temp\test.csv" |ForEach-Object  {Get-ADPrincipalGroupMembership -Identity $_.users -Server $_.DC | Where-Object {$_.name -like 'GUSR_*'} | Select -Expand Name | Out-String | Out-File "\ads.net\ADS\SDL\Temp\_ROLAND\RSD\test2$($_.users).txt"}