Компьютерный форум 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=294536)

red.army@vk 27-01-2015 12:18 2462049

Ускорить скрипт AD
 
Нужно получить свойство 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 2462081

Код:

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 2462150

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

Kazun 27-01-2015 14:31 2462158

Можно немного ускорить:
Код:

Get-ADObject -Filter {ObjectClass -eq "foreignSecurityPrincipal"} -Properties msds-principalname,memberof | Where {$_."msds-principalname" -like "*$user*" }

red.army@vk 27-01-2015 14:44 2462164

очень красиво) СПС


Время: 12:18.

Время: 12:18.
© OSzone.net 2001-