Войти

Показать полную графическую версию : [решено] Ускорить скрипт AD


red.army@vk
27-01-2015, 12:18
Нужно получить свойство INFO всех груп пользователя AD, содержащих в названии "1с". Все усложняется тем, что пользователь находится не в локальном домене, а добавлен в группы через трасты. Тоесть
Get-ADPrincipalGroupMembership $user выдает ошибку, что не может найти пользователя в домене.
Отсюда выресовался вот такой скрипт

$g = (Get-ADGroup -Filter * | where name -like "*1c*" ).NAME
$user = $env:username
foreach($r in $g)
{$l = (Get-ADGroupMember $r).SamAccountName
if ($l -eq $user){Write-Host $r}
(Get-ADGroup $r -Properties *).info | Out-File "$ENV:APPDATA\1c\1cestart\ibases.v8i" -Append utf8
}

Работает очень медленно, сейчас парсит около 30 групп, но их будет больше.
Что можно придумать для ускорения?

Kazun
27-01-2015, 12:49
Get-ADObject -Filter * -SearchBase "CN=ForeignSecurityPrincipals,DC=contoso.com -Properties msds-principalname,memberof |
Where {$_."msds-principalname" -eq "name"} | Foreach { $_.memberof -match "1c" | Get-ADGroup -Properties info | Foreach {$_.info}}

red.army@vk
27-01-2015, 14:23
foreignSecurityPrincipal - прям то, что нужно)
Вот только так не пошло CN=ForeignSecurityPrincipals
переделал так Where {$_."msds-principalname" -like "*$user*" -and $_.ObjectClass -eq "foreignSecurityPrincipal" }

Kazun
27-01-2015, 14:31
Можно немного ускорить:
Get-ADObject -Filter {ObjectClass -eq "foreignSecurityPrincipal"} -Properties msds-principalname,memberof | Where {$_."msds-principalname" -like "*$user*" }

red.army@vk
27-01-2015, 14:44
очень красиво) СПС




© OSzone.net 2001-2012