Я использую Powershell и пытаюсь экспортировать CSV-файл, содержащий список пользователей и все группы, к которым они принадлежат. Когда я сталкиваюсь с проблемами, я хочу, чтобы каждая группа была отдельной колонкой, чтобы было легче сравнивать, кто к чему принадлежит.
$OU = "OU=Company,DC=Domain,DC=local"
$out = @()
$users = Get-aduser -filter * -SearchBase $OU -properties memberof | Where-Object { $_.enabled -eq "true" }
Foreach ( $user in $users ) {
$group = ($user.memberof -replace 'CN=(.+?),(OU|DC|)=.+','$1') -split (", ")
$obj = New-Object psobject
$obj | Add-Member -membertype noteproperty -name Name -Value $user.name -force
$obj | Add-Member -membertype noteproperty -name Dept -Value (($user.DistinguishedName -replace "CN=$($user.name),OU=") -replace ",OU(.+?),OU=Company,DC=Domain,DC=local") -force
$obj | Add-Member -membertype noteproperty -name Loc -Value (($user.DistinguishedName -replace "CN=$($user.name),OU=(.+?),OU=") -replace ",OU=Company,DC=Domain,DC=local") -force
$group | ForEach-Object {
$obj | Add-Member -membertype noteproperty -name $_ -Value "Y" -force
}
$out += $obj
}
$out |export-csv C:\users.csv -NoTypeInformation
Таким образом, будет выполняться поиск всех пользователей, разделение членов по группам. а затем я хочу создать отдельный столбец для каждой группы. Проблема в объекте foreach l oop для каждой группы.
Это то, что я ищу. Скажем, user1 принадлежит к Group1 и Group2, а user2 принадлежит к Group1 и Group3,
Name Dept Loc Group1 Group2 Group3
User1 HR CAN Y Y
User2 Sales US Y Y
Это работает для первого пользователя, но после этого больше не будет добавлять группы для каждого пользователя, вывод с следующее:
Name Dept Loc Group1 Group2
User1 HR CAN Y Y
User2 Sales US Y
Что мне здесь не хватает? Это возможно?