Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сравнение двух групп AD (http://forum.oszone.net/showthread.php?t=332055)

Johny_spb 22-12-2017 08:11 2786188

Сравнение двух групп AD
 
Доброго времени суток!

Помогите кто может =( Есть следующая задача.
Есть две группы в AD необходимо сравнить их по пользователям, и если пользователь есть в обоих то вывести в файл SamAccountName, DisplayName и мена групп в которые включен данный пользователь, но не всех, а только тех групп в названии которых встречается сочетание IT.
То есть :
Если пользователь PetrovPP состоит в группе 1 и группе 2 то в результат должен получиться следующий:
PetrovPP Петров П.П. slg-IT40 dllg-IT

На текущий момент у меня получается только сравнивать 2 группы и выводить в файл =(

Код:

Get-ADUser -Filter "memberOf -RecursiveMatch Get-AdGroup User1gr -and memberOf -RecursiveMatch Get-AdGroup User2gr " -Properties DisplayName | Select SamAccountName, DisplayName | Out-File "C:\tmp\report.txt" -Encoding UTF8

Kazun 22-12-2017 08:55 2786194

Код:

Get-ADUser -Filter "memberOf -RecursiveMatch '$gr1' -and memberOf -RecursiveMatch '$gr2'" -Properties DisplayName | Foreach {
        $gr = (Get-ADPrincipalGroupMembership $_.SamAccountName | Where {$_.Name -match "IT"} | Foreach {$_.Name}) -join " "
        "{0} {1} {2}" -f $_.SamAccountName,$_.DisplayName,$gr
}


Johny_spb 22-12-2017 09:41 2786198

Огромное спасибо! А как заставить выводить полученные данные в файл? Out-File "C:\tmp\report.txt" -Encoding UTF8 не хочет выполнять =(

Johny_spb 23-12-2017 11:47 2786343

Данный вариант к сожалению не работает выдает одну и туже ошибку и нет результатов. Без
Код:

Out-File "C:\tmp\report.txt" -Encoding UTF8
результат такой же!

Код:

PS C:\Users\User1> $f = "C:\Temp\test.txt"
PS C:\Users\User1> $gr1 = Get-AdGroup SL-Olluser
PS C:\Users\User1> $gr2 = Get-AdGroup SGL-UsersVHD
PS C:\Users\User1> Get-ADUser -Filter "memberOf -RecursiveMatch '$gr1' -and memberOf -RecursiveMatch '$gr2'" -Prop
erties DisplayName | Foreach { $gr = (Get-ADPrincipalGroupMembership $_.SamAccountName | Where {$_.Name -match "RTD"} |
 Foreach {$_.Name}) -join " ""{0} {1} {2}" -f $_.SamAccountName,$_.DisplayName,$gr } | Out-File $f -Encoding UTF8

Exception of type 'System.OutOfMemoryException' was thrown.
строка:1 знак:127
+ Get-ADUser -Filter "memberOf -RecursiveMatch '$gr1' -and memberOf -RecursiveMatc ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], OutOfMemoryException
    + FullyQualifiedErrorId : System.OutOfMemoryException

Insufficient memory to continue the execution of the program.
строка:1 знак:127
+ Get-ADUser -Filter "memberOf -RecursiveMatch '$gr1' -and memberOf -RecursiveMatc ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], OutOfMemoryException
    + FullyQualifiedErrorId : System.OutOfMemoryException

Insufficient memory to continue the execution of the program.
строка:1 знак:127
+ Get-ADUser -Filter "memberOf -RecursiveMatch '$gr1' -and memberOf -RecursiveMatc ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], OutOfMemoryException
    + FullyQualifiedErrorId : System.OutOfMemoryException


Johny_spb 23-12-2017 14:08 2786372

Увеличение
Код:

MaxMemoryPerShellMB
почти в 3 раза, до 3 Гб не дало результата =( Ошибка та же осталась


Время: 23:13.

Время: 23:13.
© OSzone.net 2001-