首页 > 解决方案 > Powershell脚本拉AD用户组成员资格,但CSV格式一团糟

问题描述

我正在尝试创建一个 csv 文件,其中包含从用户名列表到 CSV 文件的用户名和组成员身份。

但是 CSV 文件的格式如下

******;"CN=Cal_ACABLHolidayCalendar_Editor

1 个单元格中的用户名和组

$list = Get-Content c:\Tools\Powershell\ACA\userlist.txt
$list | `
    %{  
        $user = $_; 
        get-aduser $user -Properties memberof | `
        select -expand memberof | `
        %{new-object PSObject -property @{User=$user;Group=$_;}} `
    } |
export-csv –Path "C:\Tools\Powershell\ADUsers.csv" -Delimiter ‘;’ –NoTypeInformation -Encoding UTF8

如何将格式设置为带有用户名的第一个单元格和带有组的以下单元格

标签: powershell

解决方案


Export-CSV是实现所需解决方案的错误方法。
你应该更好地使用这样的东西:

$excelfile = "C:\Daten\test.xlsx"

###Excel Parameter###
$excel = New-Object -COM "Excel.Application"    
$excel.displayalerts = $false
$excel.visible = $false
$excel.usercontrol = $false         
$Workbook=$excel.Workbooks.open($excelfile)     
$Worksheet=$Workbook.Worksheets.Item(1)
$Worksheet.Activate() | Out-null


$x = 1
$y = 1

$list = get-content c:\daten\list.txt
foreach ($user in $list){
 $groups = (get-aduser $user -Properties memberof | select -expand memberof | %{new-object PSObject -property @{User=$user;Group=$_;}} | select -ExpandProperty Group)
 $z = $groups.count
 $excel.cells.item($y,$x) = $user
 for ($i = 2; $i -le $groups.count+1; $i++)
 {
 $excel.cells.item($i,$x) = $groups[$i]
 }
 $x=$x+1
}
$Workbook.Save()
$Workbook.Close()
get-process *excel* | kill -Force

它不是 100% 正确的。用户名的计数器有问题。第一个用户工作得很好。


推荐阅读