|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Скрипт-отчёт по пользователям в AD с указанием групп, в которых они состоят |
|
PowerShell - Скрипт-отчёт по пользователям в AD с указанием групп, в которых они состоят
|
Пользователь Сообщения: 50 |
Добрый день!
Необходимо сделать скрипт, который будет выводить отчёт по пользователям в AD с указанием групп, в которых они состоят. Нашёл два скрипта в галерее скриптов Microsoft. Не знаю можно ли давать ссылки, если надо - дам. Суть в том, что кусок одного из них может выводить список пользователей: Спасибо Santhosh Sivarajan. Function ADUserSearch { $ADUserFile = New-Item -type file -force "C:\Scripts\ADUserInfo.csv" $ObjFiler = "(objectCategory=User)" $objSearch = New-Object System.DirectoryServices.DirectorySearcher $objSearch.SearchRoot = "LDAP://dc=infralab, dc=local" $ObjProp = "samaccountname" $objSearch.Filter = $ObjFiler $AllObj = $objSearch.FindAll() foreach ($Obj in $AllObj) { $objItem = $Obj.Properties $objItem.samaccountname $objItem.samaccountname | Out-File $ADUserFile -encoding ASCII -append } } Спасибо Andreas Werner. # import AD Modul Import-Module activedirectory #Set-ExecutionPolicy unrestricted #--------------------------- #-------- Variable --------- #--------------------------- $ADUserMembers=""; $ADUser="" $ADGroupName=""; $ADGroupCategory=""; $ADGroupScope="" $i=0 #--------------------------- #------- Functions --------- #--------------------------- function Get-ADGroupName ($DN) { $ADGrpName= (Get-ADGroup -Filter {DistinguishedName -eq $DN}).SamAccountName return $ADGrpName } function Get-GroupMemberOf ($ADGroupName) {$ii++; $a=0 $Message=""; $Prefix="" $GroupCategory=""; $GroupScope=""; $GroupName="" For ($a=0; $a -lt $ii; $a++) {$Prefix = $Prefix + " "} $DNs=(Get-ADGroup $ADGroupName -Properties *).MemberOf if ($DNs.count -ne 0) { foreach ($DN in $DNs) { # $Prefix =" $ADGroupName => " $GroupName = (Get-ADGroupName $DN) $GroupCategory = (Get-ADGroup $GroupName -Properties *).GroupCategory $GroupScope = (Get-ADGroup $GroupName -Properties *).GroupScope $Message="$Prefix $ADGroupName => $GroupName [$GroupCategory - $GroupScope]" Write-Host $Message Get-GroupMemberOf $GroupName ' ' }# End ForEach }# End IF }#End Function #----------------------------------------------------------------- #--> START: Group Statistic Clear-Host $ADUser= Read-Host "Please enter AD-User" $ADUserMembers=(Get-ADUser $ADUser -Properties *).MemberOf Write-Host "AD-User: $ADUser" -ForegroundColor blue #PrimaryGroup $ADPrimaryGroupDN = (Get-ADUser -Properties * -Filter {SamAccountName -eq $ADUser}).PrimaryGroup $ADPrimaryGroupName=(Get-ADGroupName $ADPrimaryGroupDN) $ADGroupCategory=(Get-ADGroup $ADPrimaryGroupName).GroupCategory $ADGroupScope=(Get-ADGroup $ADPrimaryGroupName).GroupScope $Message = "Primary Group: $ADPrimaryGroupName [$ADGroupCategory, $ADGroupScope]" Write-Host $Message -BackgroundColor yellow #Other groups foreach ($ADUserMember in $ADUserMembers) {$i++ $ADGroupName = (Get-ADGroupName $ADUserMember) $ADGroupCategory=(Get-ADGroup $ADGroupName).GroupCategory $ADGroupScope=(Get-ADGroup $ADGroupName).GroupScope $Message = "($i) $ADGroupName [$ADGroupCategory, $ADGroupScope]" Write-Host $Message -ForegroundColor black Get-GroupMemberOf $ADGroupName ' ' Write-Host " " } $ADUserMembers=""; $ADUser="" $ADGroupName=""; $ADGroupCategory=""; $ADGroupScope="" $i=0 #--------------------------- #------- Functions --------- #--------------------------- function Get-ADGroupName ($DN) { $ADGrpName= (Get-ADGroup -Filter {DistinguishedName -eq $DN}).SamAccountName return $ADGrpName } function Get-GroupMemberOf ($ADGroupName) {$ii++; $a=0 $Message=""; $Prefix="" $GroupCategory=""; $GroupScope=""; $GroupName="" For ($a=0; $a -lt $ii; $a++) {$Prefix = $Prefix + " "} $DNs=(Get-ADGroup $ADGroupName -Properties *).MemberOf if ($DNs.count -ne 0) { foreach ($DN in $DNs) { # $Prefix =" $ADGroupName => " $GroupName = (Get-ADGroupName $DN) $GroupCategory = (Get-ADGroup $GroupName -Properties *).GroupCategory $GroupScope = (Get-ADGroup $GroupName -Properties *).GroupScope $Message="$Prefix $ADGroupName => $GroupName [$GroupCategory - $GroupScope]" Write-Host $Message Get-GroupMemberOf $GroupName ' ' }# End ForEach }# End IF }#End Function #----------------------------------------------------------------- #--> START: Group Statistic Clear-Host #$ADUser= Read-Host "Please enter AD-User" $ObjFiler = "(objectCategory=User)" $objSearch = New-Object System.DirectoryServices.DirectorySearcher $objSearch.SearchRoot = "LDAP://OU=Users,OU=Ulsk,DC=corp,DC=ertelecom,DC=loc" $ObjProp = "samaccountname" $objSearch.Filter = $ObjFiler $AllObj = $objSearch.FindAll() foreach ($Obj in $AllObj) { $objItem = $Obj.Properties $ADUser=$objItem.samaccountname $ADUserMembers=(Get-ADUser $ADUser -Properties *).MemberOf Write-Host "AD-User: $ADUser" -ForegroundColor blue #PrimaryGroup $ADPrimaryGroupDN = (Get-ADUser -Properties * -Filter {SamAccountName -eq $ADUser}).PrimaryGroup $ADPrimaryGroupName=(Get-ADGroupName $ADPrimaryGroupDN) $ADGroupCategory=(Get-ADGroup $ADPrimaryGroupName).GroupCategory $ADGroupScope=(Get-ADGroup $ADPrimaryGroupName).GroupScope $Message = "Primary Group: $ADPrimaryGroupName [$ADGroupCategory, $ADGroupScope]" Write-Host $Message -BackgroundColor yellow #Other groups foreach ($ADUserMember in $ADUserMembers) {$i++ $ADGroupName = (Get-ADGroupName $ADUserMember) $ADGroupCategory=(Get-ADGroup $ADGroupName).GroupCategory $ADGroupScope=(Get-ADGroup $ADGroupName).GroupScope $Message = "($i) $ADGroupName [$ADGroupCategory, $ADGroupScope]" Write-Host $Message -ForegroundColor black Get-GroupMemberOf $ADGroupName ' ' Write-Host " " } } Сидор Сидоров Get-ADUser : Не удается привязать параметр "Identity". Не удается преобразовать значение "System.DirectoryServices.ResultPropertyValueCollection" типа "System.DirectoryServices.Result PropertyValueCollection" в тип "Microsoft.ActiveDirectory.Management.ADUser". строка:76 знак:27 + $ADUserMembers=(Get-ADUser <<<< $ADUser -Properties *).MemberOf + CategoryInfo : InvalidArgument: (:) [Get-ADUser], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.GetADUser AD-User: Сидор Сидоров Get-ADGroup : Переменная: "DN" обнаружена в выражении: $DN не имеет определения. строка:12 знак:29 + $ADGrpName= (Get-ADGroup <<<< -Filter {DistinguishedName -eq $DN}).SamAccountName + CategoryInfo : InvalidArgument: (:) [Get-ADGroup], ArgumentException + FullyQualifiedErrorId : Переменная: "DN" обнаружена в выражении: $DN не имеет определения.,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:82 знак:34 + $ADGroupCategory=(Get-ADGroup <<<< $ADPrimaryGroupName).GroupCategory + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:83 знак:31 + $ADGroupScope=(Get-ADGroup <<<< $ADPrimaryGroupName).GroupScope + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Primary Group: [, ] AD-User: Сидоров Сидр Primary Group: Domain Users [Security, Global] (1) Группа 1 (2) Группа 2 (3) Группа 3 (4) Deny_Removable storages_corp [Security, Universal] Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:31 знак:38 + $GroupCategory = (Get-ADGroup <<<< $GroupName -Properties *).GroupCategory + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:32 знак:35 + $GroupScope = (Get-ADGroup <<<< $GroupName -Properties *).GroupScope + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Deny_Removable storages_corp => [ - ] Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:24 знак:18 + $DNs=(Get-ADGroup <<<< $ADGroupName -Properties *).MemberOf + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:31 знак:38 + $GroupCategory = (Get-ADGroup <<<< $GroupName -Properties *).GroupCategory + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:32 знак:35 + $GroupScope = (Get-ADGroup <<<< $GroupName -Properties *).GroupScope + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup => [ - ] Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:24 знак:18 + $DNs=(Get-ADGroup <<<< $ADGroupName -Properties *).MemberOf + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:31 знак:38 + $GroupCategory = (Get-ADGroup <<<< $GroupName -Properties *).GroupCategory + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:32 знак:35 + $GroupScope = (Get-ADGroup <<<< $GroupName -Properties *).GroupScope + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup => [ - ] Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:24 знак:18 + $DNs=(Get-ADGroup <<<< $ADGroupName -Properties *).MemberOf + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:31 знак:38 + $GroupCategory = (Get-ADGroup <<<< $GroupName -Properties *).GroupCategory + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:32 знак:35 + $GroupScope = (Get-ADGroup <<<< $GroupName -Properties *).GroupScope + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup => [ - ] Get-ADGroup : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды . строка:24 знак:18 + $DNs=(Get-ADGroup <<<< $ADGroupName -Properties *).MemberOf + CategoryInfo : InvalidData: (:) [Get-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroup |
|
Отправлено: 11:09, 18-10-2012 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать (Get-ADUser UserName -Prop memberof).MemberOf
|
Отправлено: 11:16, 18-10-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Переименование файлов с указанием порядкового номера | shao | Скриптовые языки администрирования Windows | 38 | 28-09-2011 17:54 | |
ТЕРМИНАЛЬНІЙ режим с указанием прав | TERMINAL | Хочу все знать | 1 | 18-08-2009 14:50 | |
Разное - настройка групп, пользователей, предоставление пользователям прав | viktor030372 | Microsoft Windows 2000/XP | 26 | 23-04-2009 14:23 | |
Проблема с указанием пути на сайте | Bullet-Avalon | Вебмастеру | 3 | 21-12-2008 22:34 | |
Группа не может менять пароли пользователям, которых завели до делегирования | fozgen | Microsoft Windows NT/2000/2003 | 0 | 22-05-2008 12:08 |
|