Есть идеи, почему приведенный ниже код не работает?
Попытка экспортировать имя пользователя, а затем группы в CSV. Мне нужны только названия групп.
Пожалуйста, помогите - большое спасибо
$users = (Get-Content users.txt)
foreach ($user in $users) {
$file = $user.Name + '_ACL'
(Get-ADUser –Identity $user –Properties MemberOf).MemberOf -replace '^CN=([^,]+),OU=.+$','$1' | Export-CSV -path "$file.csv" -NoTypeInformation
}
Я всегда использую команды AD Quest. ... ниже будут извлечены все группы в указанном поисковом корне с членами ...
Add-PSSnapin Quest.ActiveRoles.ADManagement
Connect-QADService
$GroupInfo = '' | Select 'Group Name','Group Samaccountname','Group Description','Member Name','Member Description'
$AllGroups = @()
$MyGroups = Get-QADGroup -SearchRoot "OU...." -DontUseDefaultIncludedProperties -IncludedProperties Name,samaccountname,Description,Member | select Name,samaccountname,Description,Member
foreach($Group in $MyGroups){
$GroupInfo.'Group Name' = $Group.Name
$Groupinfo.'Group Samaccountname' = $Group.Samaccountname
$GroupInfo.'Group Description' = $Group.Description
foreach($Member in $Group.Member){
$User = Get-QADUser $Member -DontUseDefaultIncludedProperties -IncludedProperties Name,samaccountname,Description | select Name,samaccountname,Description
$GroupInfo.'Member Name' = $User.Name
$GroupInfo.'Member Samaccountname' = $User.Samaccountname
$GroupInfo.'Member Description' = $User.Description
#it takes a while to go through a lot of goups...this just lets you watch so you don't think it's broke and cancel it.
$GroupInfo | select 'Group Name','Group Samaccountname','Group Description','Member Name','Member Samaccountname','Member Description'
$AllGroups += $GroupInfo | Select 'Group Name','Group Samaccountname','Group Description','Member Name','Member Samaccountname','Member Description'
}
}
$AllGroups | Export-Csv Groups_w_members.csv -NoTypeInformation #Export all that group info to csv file.
Для этого (Get-ADUser -Identity $user -Properties MemberOf). MemberOf
, попробуйте использовать Get-ADUser -Identity $user -Properties MemberOf | Select-Object -ExpandProperty MemberOf
.
$users = (Get-Content users.txt)
Котировки не нужны, и Import-Csv дает лучшие результаты, чем Get-Content. Первая строка CSV предоставляет имена свойств. Итак, $users = Import-Csv users.csv
.
'^CN=([^,]+),OU=.+$','$1'
Что такое $1? Похоже, он недоработан. Если только это не часть регекса. Если это какая-то переменная, то единичные котировки не позволят ее вычислить.
Также учтите:
$users = Import-Csv users.csv
foreach ($user in $users) {
$currentUser = Get-ADUser $user -Properties MemberOf
$groups = $currentUser | Select-Object -ExpandProperty MemberOf
foreach ($group in $Groups) {
$groupName = Get-ADGroup $group | select name
# do something here with a collection to collect the groupnames
}
# do something here with a custom object
# to collect the properties from user and groups
# using a custom object named $customUser
$customUser | Export-Csv -NoTypeInformation -Append export.csv
}