Powershell脚本提取AD用户组成员身份,但CSV格式混乱

时间:2019-06-13 12:57:17

标签: powershell

我正在尝试创建一个包含用户名和从用户名列表到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

如何将格式设置为第一个使用用户名的单元格,然后使用下面的使用组的单元格

1 个答案:

答案 0 :(得分:0)

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%正确。用户名的计数器有问题。不过,第一个用户的表现不错。