středa 19. srpna 2009

AD: Přidání uživatelů do skupiny

O práci s Active Directory jsem toho zde zatím moc nepsal. Vzhledem k tomu, že poslední dobou dělám malinko pořádek ve skupinách, příspěvky budou zřejmě častější. Za posledních pár dní jsem narazil na dvě věci, se kterými se můžete potkat.

První z nich je zjišťení FSMO rolí. Pokud s AD pracujete častěji určitě znáte příkaz netdom query fsmo. Stejné informace zjistíte pomocí následujících příkazů PowerShellu:
PS C:\> [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest() | fl *RoleOwner

SchemaRoleOwner : server1.domena.net
NamingRoleOwner : server1.domena.net

PS C:\> [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() | fl *RoleOwner

PdcRoleOwner : server2.sub.domena.net
RidRoleOwner : server2.sub.domena.net
InfrastructureRoleOwner : server2.sub.domena.net

Pro přehlednější výpis si můžete předchozí příkazy zabalit do funkce, ale to už je pouze otázka vkusu (a šetření času).
Druhou věcí, se kterou jsem se potkal, je kopie členů skupiny do jiné skupiny. Opět existuje několik cest, jak to udělat (např. pomocí ds* příkazů), ale v tuto chvíli vidím PowerShell jako lepší řešení. Já se ještě rozhodl zadání trochu upravit, taže výsledkem bylo: Vzít všechny členy skupiny users.all, vybrat pouze účty, které jsou enabled a přidat je do skupiny users.all.new.
Tři úkoly, tři cmdlety, dvě roury.
PS C:\> Get-QADGroupMember 'users.all' | Get-QADUser -Enabled | Add-QADGroupMember 'users.all.new'

Edit: Poté, co jsem se přepl na počítač s nejnovější verzi cmdletů od Questu zjistil jsem, že přidali nový parametr pro Get-QADUser. Správně by tedy mohlo být i toto (celá akce je pak o mnoho rychlejší - na mém počítači 12x):
PS C:\> Get-QADUser -MemberOf 'users.all' -Enabled | Add-QADGroupMember 'users.all.new'

Použité cmdlety nejsou standardní součástí PowerShellu, ale dají se zdarma stáhnout z webu firmy Quest Software.

Žádné komentáře: