Administration av konton i Active Directory-domänen. Active Directory-domän - vad det är i enkla ord, beskrivning och recensioner

17.03.2014 Darren Mar-Elia

När Windows PowerShell först kom ut frågade många människor om det var möjligt att hantera Active Directory(AD) med PowerShell. På den tiden var Microsofts svar inte vad de flesta administratörer skulle ha velat höra. PowerShell hade en inbyggd Active Directory Service Interfaces (ADSI) "typaccelerator" för att komma åt AD-objekt, men användaren var till stor del tvungen att ta reda på på egen hand hur man använder PowerShell för att utföra AD-administrationsuppgifter. Betydande förändringar inträffade med utgivningen Windows Server 2008 R2, som introducerade PowerShell-modulen för Active Directory. AD-modulen innehåller en uppsättning kommandon för att hantera AD, samt en AD-leverantör som låter dig navigera AD som en symbolisk enhet. I den här artikeln kommer jag att visa dig hur du installerar AD-modulen och beskriver dess funktion i detalj

När Windows PowerShell först kom ut frågade många människor om det var möjligt att hantera Active Directory (AD) med PowerShell. På den tiden var Microsofts svar inte vad de flesta administratörer skulle ha velat höra. PowerShell hade en inbyggd Active Directory Service Interfaces (ADSI) "typaccelerator" för att komma åt AD-objekt, men användaren fick till stor del ta reda på på egen hand hur man använder PowerShell för att utföra AD-administrationsuppgifter. Med tiden har Quest Software tillhandahållit en gratis uppsättning kommandon för AD-administrativa uppgifter, inklusive att skapa, ändra och ta bort AD-objekt och söka efter objekt i AD. Detta har varit tillståndet för PowerShell och AD-hantering under lång tid.

Betydande förändringar inträffade med lanseringen av Windows Server 2008 R2, som introducerade PowerShell-modulen för Active Directory. AD-modulen innehåller en uppsättning kommandon för att hantera AD, samt en AD-leverantör som låter dig navigera AD som en symbolisk enhet. I den här artikeln kommer jag att visa dig hur du installerar AD-modulen och beskriver dess funktion i detalj.

Installerar Active Directory-modulen

Till skillnad från tidigare verktyg som använde LDAP för att kommunicera med AD, använder AD-modulen Active Directory Web Services (ADWS)-protokoll för att kommunicera med AD-domänkontrollanten (DC). Dessa protokoll beskrivs i detalj i MSDN-bloggen "Active Directory Web Services Overview", men det räcker med att notera att PowerShell-kommandona i AD-modulen och Active Directory Administrative Center (ADAC) använder ADWS för att kommunicera med och hämta information från AD .

När du installerar Windows Server 2012 eller Server 2008 R2-domänkontrollanter i en AD-domän, installeras och körs ADWS-protokollet som standard på var och en av dem. Om din domän helt består av Windows Server 2008 eller Windows Server 2003 domänkontrollanter måste du installera ADWS separat. Microsoft tillhandahåller Active Directory Management Gateway Service-paketet kostnadsfritt för detta ändamål. Om du installerar paketet på minst en AD Server 2008- eller Server 2003-domänkontrollant kan du använda AD-modulen för PowerShell tillsammans med ADAC.

AD-modulen i sig är installerad som standard på alla DC som kör operativsystemet Server 2012 eller Server 2008 R2. På Windows-datorer 8 och Windows 7 (eller någon annan dator än en DC som kör Server 2012 eller Server 2008 R2), måste du installera Remote Server Administration Tools från Microsoft Download Center.

Oavsett om Remote Server Administration Tools är installerade på din dator i förväg eller separat, är nästa steg att öppna avsnittet Lägg till/ta bort program på Kontrollpanelen och välj Slå på eller av Windows-funktioner från menyn till vänster. Rulla ned i dialogrutan Windows-funktioner till avsnittet Remote Server Administration Tools. Leta reda på kryssrutan Active Directory Module for Windows PowerShell i mappen \Remote Server Administration Tools\Role Administration Tools\AD DS and AD LDS Tools, som figur 1 visar. Markera kryssrutan och klicka på OK för att installera modulen.

Du bör nu se en genväg för Active Directory Module för Windows PowerShell i avsnittet Administrationsverktyg på Start-menyn. Klicka på den här genvägen för att starta PowerShell med AD-modulen laddad. Om du redan arbetar i PowerShell och bara vill ladda modulen så att den är tillgänglig för användning, kan du ange följande kommando för att få åtkomst till AD- och AD Provider-kommandona:

Import-modul ActiveDirectory

Låt oss nu se hur du navigerar AD med AD Provider.

Använda Active Directory-leverantören

PowerShell implementerar konceptet PowerShell-enheter, som jag helt enkelt kommer att referera till som PS-enheter. Enkelt uttryckt är en PS-enhet en representation av en resurs, till exempel ett navigerbart filsystem som består av mappar och bladobjekt. Inte alla resurser kan tänkas på detta sätt, men många (inklusive AD och registret) passar väl in i denna modell. AD-modulen innehåller leverantören för PS AD-disken. Följaktligen kan du navigera och till och med ändra AD som om det vore ett filsystem.

Hur navigerar man AD med AD Provider? Detta förutsätter att PowerShell är öppet och AD-modulen är laddad. I det här fallet är det första steget att köra kommandot Set-Location, som har flera alias, inklusive sl och cd:

Ange plats AD:

Detta kommando ändrar den aktuella arbetsplatsen för PS AD-enheten. Som ett resultat kommer PowerShell-prompten att visa AD:\ istället för C:\. Sedan, för att se objekten i PS AD-enheten, kan du använda kommandot Get-ChildItem med dir alias:

Get-ChildItem

Figur 2 visar ett exempel på resultatet på min dator.

Som vi kan se returnerar kommandot en lista över alla tillgängliga domänpartitioner. Den mest intressanta, enligt min mening, är domänsektionen som heter cpandl, som innehåller användar- och datornamn. För att ändra denna domän, skriv bara in kommandot:

Ange plats "dc=cpandl,dc=com"

Observera att kommandot Set-Location används med det distinguerade namnet (DN) för min AD-domän. Detta krävs för korrekt navigering. När du har navigerat till din domänkatalog (som visas av AD:\dc=cpandl,dc=com-prompten i PowerShell), kan du använda kommandot Get-ChildItem för att se AD-strukturen på toppnivå (Figur 3).


Figur 3: Visa toppnivån i AD-hierarkin

Om du vill titta på användarna i SDM-organisationsenheten (OU) behöver du bara ange för att navigera till den organisationsenheten:

Ange plats "OU=SDM"

PowerShell-kommandoraden kommer att se ut som AD:\ou=SDM,dc=cpandl,dc=com. På i detta skede du kan använda kommandot Get-ChildItem för att se alla användarobjekt i denna OU. Om jag behöver ändra egenskapen Description på användarobjektet som representerar mitt Darren Mar-Elia användarkonto. Det finns ett team för det! Kommandot Set-ItemProperty låter dig ändra en egenskap på ett AD-objekt. Om du behöver ändra beskrivningen av användarkontot på Chief Techie bör du köra kommandot:

Set-ItemProperty -Path ".\CN=Darren Mar-Elia" ` -Namn "Description" -Värde "Chief Techie"

Som vi kan se används parametern –Path här för att ange mitt användarkonto i den aktuella katalogen. Jag använder också parametern -Name för att indikera att egenskapen Description måste ändras, och parametern –Value för att specificera Chief Techies beskrivning.

Observera att om du vill hitta alla objekt med ett visst egenskapsvärde kan du använda Get-ItemProperty. Om du bara vill få en referens till ett AD-objekt, använd Get-Item.

Som du kan se är det ganska enkelt att arbeta med AD på detta sätt. Mekanismen lämpar sig knappast för bulkändringar, men den är bekväm att arbeta med AD som filsystem. Men som jag fick reda på använder de flesta administratörer kommandon istället för PS AD-enheten för att hantera AD. Låt oss se hur några av dessa kommandon fungerar.

Använda Active Directory-kommandon

AD-modulen som ingår i Windows 7 innehåller 76 kommandon för att hantera AD. De kan användas för nästan alla ändamål, inklusive att hitta AD-objekt, skapa och ta bort AD-objekt och manipulera AD-konfigurationsinformation (som skogsläge och granulära lösenordspolicyer). Vanligtvis grupperas kommandon efter verb som Lägg till-, Ta bort-, Hämta- och Set-. Observera att inte varje Get-kommando har ett motsvarande Set-kommando och vice versa, så ibland måste du lägga ner lite ansträngning för att hitta rätt kommando för uppgiften. Till exempel kan du ställa in AD-skogens funktionalitetsnivå med Set-ADForestMode, men för att ta reda på den aktuella skogsfunktionalitetsnivån måste du använda kommandot Get-ADForest och titta på ForestMode-egenskapen på det returnerade objektet.

Låt oss titta på några vanliga uppgifter som kan utföras med AD-kommandon. Specifikt kommer vi att visa dig hur du lägger till användarkonton, hanterar gruppmedlemskap, återställer användarkontolösenord och söker efter AD-objekt.

Lägga till användarkonton

Kommandot New-ADUser ger ett enkelt sätt att lägga till användarkonton till AD. Om du vill lägga till ett nytt användarkonto med namnet Bill Smith till SDM-organisationsenheten kan du i det enklaste fallet skapa ett nytt användarkonto med kommandot:

New-ADUser -Namn "Bill Smith" -SamAccountName "bsmith" ` -GivenName "Bill" -Efternamn "Smith" ` -DisplayName "Bill Smith" -Sökväg "OU=SDM,DC=cpandl,DC=com"

Detta kommando anger grundläggande information om användarkontot. Specifikt används parametern -SamAccountName för att ange namnet på det SAM-konto som krävs för att skapa användarobjektet. Parametern –Path används också för att tala om för kommandot var objektet ska placeras - i det här fallet SDM OU i domänen cpandl.com. Dessutom anges användarens förnamn (-GivenName-parameter), efternamn (-Surname-parameter) och visningsnamn (-DisplayName-parameter).

Om du kör det här kommandot skapas ett användarkonto, men det finns två problem. Först kommer kontot att inaktiveras. För det andra kommer kontot inte att ha ett lösenord kopplat till sig, vilket krävs på de flesta domäner.

För att undvika att behöva aktivera kontot och tilldela ett lösenord separat, kan du ändra kommandot New-ADUser. New-ADUser kommer automatiskt att aktivera kontot om du anger parametern -Enabled $true i kommandot. Aktivering kräver ett lösenord, så du måste också ange det i kommandot.

För att ange ett lösenord kan du använda parametern –AccountPassword. Du kan dock inte ange lösenordet i vanlig text vid kommandotolken. Det här alternativet kräver att lösenordet anges i en säker sträng (det vill säga har en SecureString-datatyp). Det finns två sätt att konvertera ett lösenord till en säker sträng, och båda använder en variabel.

Den första metoden använder kommandot ConvertTo-SecureString, som konverterar vanliga textsträngar till säkra strängar. Om du till exempel vill konvertera lösenordet P@ssw0rd12 till en skyddad sträng och tilldela det till variabeln $pwd, skulle du köra kommandot:

$pwd = ConvertTo-SecureString -string "P@ssw0rd12" ` -AsPlainText –force

Detta är inte den säkraste metoden för att tilldela ett lösenord, eftersom någon kan se dig över axeln när du skriver kommandot. En säkrare metod är att låta kommandoprompten New-ADUser ange ett lösenord och dölja tecken. Detta kan göras med kommandot Read-Hostcmdlet med parametern –AsSecureString:

$pwd = Read-Host -AsSecureString

När du har kört detta kommando kommer du att se den välbekanta "*"-symbolen på skärmen när du anger ditt lösenord. När du är klar, tryck på Enter-tangenten.

När lösenordet är lagrat i variabeln $pwd kan du skicka det till kommandot New-ADUser:

New-ADUser -Name"Bill Smith" -SamAccountName"bsmith"` -GivenName"Bill" -Efternamn"Smith"` -DisplayName"Bill Smith"` -Path"OU=SDM,DC=cpandl,DC=com"` - Aktiverad $true -AccountPassword $pwd

Som vi kan se innehåller kommandot parametrarna -Enabled och -AccountPassword, som aktiverar kontot och säkert tilldelar det ett lösenord.

Att skapa ett användarkonto i taget är ett snyggt sätt, men ibland måste du skapa flera konton samtidigt. PowerShell är utmärkt för detta ändamål. Om du till exempel behöver skapa tre användarkonton kan du förbereda en kommaseparerad fil (CSV) som innehåller kontoinformation och sedan använda kommandot Importera-CSV för att överföra informationen till New-ADUser.

Figur 4 visar en CSV-fil med namnet userlist.csv.

Observera att i den här filen motsvarar kolumnrubrikerna parameternamnen som angavs i föregående New-ADUser-kommando. Detta gjordes med flit. När CSV-data skickas till New-ADUser hämtar kommandot dessa parameternamn från PowerShell-pipelinen och behöver inte specificeras i själva kommandot. Här är kommandot som används för att skapa tre användarkonton:

Import-CSV -Sökväg C:\data\userlist.csv | New-ADUser -Aktiverad $true -AccountPassword $pwd

Som du kan se går utdata från kommandot Import-CSV till kommandot New-ADUser. Pipelinen känner igen att kolumnrubrikerna i CSV-filen är parameternamn och att de återstående raderna innehåller värden, så du behöver bara ange parametrarna -Enabled och -AccountPassword. Detta är en utmärkt transportörkapacitet. Det låter dig använda PowerShell mycket mer effektivt för dessa typer av automatiseringsuppgifter.

Gruppmedlemshantering

Att lägga till användar- och datorkonton är en typisk AD-hanteringsuppgift. Med AD-modulen är detta relativt enkelt att åstadkomma. Med kommandot Add-ADGroupMember kan du lägga till ett eller flera konton i en grupp. Till exempel om du behöver lägga till tre nya användare i gruppen Marknadsanvändare. Det enklaste sättet är att använda kommandot:

Add-ADGroupMember -Identity»Marketing Users«` -Members jadams,tthumb,mtwain

I det här kommandot används parametern -Identity för att ange gruppnamnet. Parametern -Members används också för att ge användarens SAM-kontonamn. Om det finns flera SAM-kontonamn bör de listas i en kommaseparerad fil.

Du kan kombinera operationerna för att skapa tre konton och lägga till dem i gruppen Marknadsanvändare i ett kommando för att lösa problemet i en åtgärd. Kommandot Add-ADGroupMember stöder dock inte att skicka gruppmedlemsnamn till pipelinen. Därför måste du använda kommandot Add-ADPrincipalGroupMembership om du vill använda pipelinen. Detta kommando kan acceptera användar-, dator- eller gruppobjekt som indata från en pipeline och lägga till dessa objekt till den angivna gruppen.

Du kan kombinera funktionen att skapa användare med funktionen att lägga till nya användare i gruppen Marknadsanvändare i ett kommando enligt följande:

Import-CSV -Sökväg C:\data\userlist.csv | New-ADUser -Aktiverad $true -AccountPassword $pass ` -PassThru | Add-ADPrincipalGroupMembership ` -MedlemAv"Marknadsföringsanvändare"

Observera att –PassThru-parametern har lagts till i New-ADUser-delen av kommandot. Den här parametern talar om för New-ADUser att skicka skapade användarobjekt till pipelinen. Om denna parameter inte anges kommer kommandot Add-ADPrincipalGroupMembership att misslyckas.

Det är också anmärkningsvärt att endast parametern -MemberOf används för att ange gruppnamnet i avsnittet Add-ADPrincipalGroupMembership i kommandot. Pipelinen tar hand om resten genom att lägga till var och en av de tre användarna i gruppen Marknadsanvändare.

Så med ett PowerShell-kommando skapades tre nya användare, de placerades i organisationsenheten, de fick lösenord och de lades till i gruppen Marknadsanvändare. Låt oss nu titta på några andra vanliga AD-underhållsuppgifter som kan automatiseras med PowerShell och AD-modulen.

Återställa användarkontons lösenord

Ibland måste användare återställa sitt kontolösenord. Denna uppgift kan enkelt automatiseras med kommandot Set-ADAccountPassword genom att ändra eller återställa kontolösenordet. För att ändra lösenordet måste du känna till det gamla lösenordet och ange det nya. För att återställa ditt lösenord, ange bara ett nytt lösenord. Du måste dock ha Återställ lösenordsbehörighet för användarobjektet i AD för att kunna utföra en lösenordsåterställning.

Precis som parametern -AccountPassword för kommandot New-ADUser, använder kommandot Set-ADAccountPassword datatypen SecureString för lösenord, så du måste använda en av metoderna för att konvertera vanlig textlösenord till säkra strängar. Till exempel, om du vill återställa lösenordet för Tom Thumb-användarkontot, efter att ha lagrat det nya lösenordet som en skyddad sträng i $pass-variabeln, kan du köra kommandot:

Set-ADAccountPassword -Identity»tthumb«` -NewPassword $pass –Reset

I det här kommandot använder jag parametern –Identity för att tilldela ett SAM-kontonamn till Tom Thumb-användarkontot. Jag anger också parametern -NewPassword med variabeln $pass för att ange ett nytt lösenord. Slutligen anges parametern –Reset för att indikera att en återställning utförs snarare än en lösenordsändring.

En annan valfri uppgift: växla Tom Thumb-användarkontoflaggan för att tvinga honom att ändra sitt lösenord nästa gång han loggar in. Detta är en vanlig teknik när du behöver återställa en användares lösenord. Den här uppgiften kan utföras med kommandot Set-ADUser, som ställer in parametern -ChangePasswordAtLogon till $true:

Set-ADUser -Identity tthumb -ChangePasswordAtLogon $true

Frågan uppstår om varför en pipeline inte användes för att skicka utdata från kommandot Set-ADAccountPassword till kommandot Set-ADUser för att utföra båda operationerna i ett PowerShell-kommando. Jag försökte det här tillvägagångssättet, det fungerar inte. Det finns förmodligen någon begränsning i kommandot Set-ADAccountPassword som förhindrar att det enstaka kommandot körs framgångsrikt. I alla fall är det tillräckligt att helt enkelt växla flaggan med kommandot Set-ADUser som visas ovan.

Söker efter Active Directory-objekt

En annan typisk AD-uppgift är att hitta AD-objekt som uppfyller vissa kriterier. Till exempel kan du hitta alla datorer som kör en specifik version av Windows-operativsystemet i en AD-domän. Kommandot Get-ADObject är det bekvämaste för LDAP-sökning. Till exempel, för att hitta Server 2008 R2-datorer i domänen cpandl.com användes kommandot:

Get-ADObject -LDAPFilter ` "(&(operativSystem=Windows Server 2008 R2 Enterprise)` (objectClass=dator))" -SearchBase"dc=cpandl,dc=com"` -SearchScope Subtree

Det här kommandot använder tre parametrar för att utföra uppgiften: -LDAPFilter, -SearchBase och -SearchScope. Parametern -LDAPFilter tar en standard LDAP-fråga som indata. Det här exemplet frågar alla datorobjekt som har attributet OperatingSystem inställt på Windows Server 2008 R2 Enterprise. Parametern -SearchBase talar om för kommandot var man ska börja söka i AD-hierarkin. I det här fallet utförs sökningen från AD-domänens rotkatalog, men det är inte svårt att begränsa sökningen till en specifik organisationsenhet. Parametern –SearchScope talar om för kommandot om alla behållare under sökbasen ska genomsökas och hitta de angivna objekten. I det här fallet används parametern Subtree för att tvinga kommandot att kontrollera alla underliggande behållare.

När du kör kommandot visas objekt som matchar kriterierna. Eller så kan du vidarebefordra resultaten till ett annat kommando för att bearbeta de hittade objekten.

Observera att för stora sökningar är det användbart att använda parametern –ResultPageSize för att styra hur sökresultaten pagineras. Vanligtvis ställer jag in den här parametern till 1000 och kommandot Get-ADObject returnerar 1000 objekt åt gången. Annars kan det hända att du inte får det förväntade resultatet eftersom antalet returnerade objekt överstiger det maximala tillåtna antalet av policyn för en enda sökbegäran.

Ett annat sökkommando från Microsoft är Search-ADAccount. Det här kommandot är särskilt användbart för sökning med olika fördefinierade villkor, såsom inaktiverade konton, konton med utgångna lösenord och låsta konton. Så, följande kommando hittar alla användarkonton med utgångna lösenord i SDM OU:

Search-ADAccount -PasswordExpired -UsersOnly ` -SearchBase"OU=sdm,dc=cpandl,dc=com" -SearchScope OneLevel Search-ADAccount -PasswordExpired -UsersOnly ` -SearchBase"OU=sdm,dc=cpandl,dc=com" -SearchScope OneLevel

Det här kommandot använder parametern –PasswordExpired för att ange att konton med utgångna lösenord krävs. Parametern -UsersOnly anger att endast användarobjekt ska sökas igenom (det vill säga datorobjekt ska uteslutas). Som i föregående exempel används parametrarna -SearchBase och –SearchScope för att ange sökomfånget. Men i det här fallet använder jag OneLevel-parametern för att endast söka efter den närmaste organisationsenheten (det vill säga exkludera eventuella underordnade organisationsenheter).

Detta är bara ytan på AD-modulen, men jag hoppas att du får en uppfattning om dess kapacitet. Som nämnts ovan finns det mer än 70 kommandon i modulen. Ämnen som inte tas upp i den här artikeln inkluderar att ta bort objekt med kommandot Remove-, återställa raderade objekt med kommandot Restore-ADObject och ta bort UAC-egenskaper på användarobjekt med kommandot Set-ADAccountControl. Det finns kommandon för nästan alla AD-administrativa uppgifter.



Lektion 7. Active Directory Administration.

Active Directory-administrationsprocessen innefattar hantering av:

  • Active Directory-domäner;
  • domänkatalogstruktur;
  • domänobjekt (användare, kontakter, datorer, grupper, skrivare, etc.);
  • Active Directory-webbplatser och nätverk;
  • datareplikering.

Alla dessa uppgifter löses med hjälp av tre hanteringskonsoler som installeras under installationen av Active Directory på en domänkontrollant:

  • Active Directory - Domäner och förtroende
  • Active Directory - användare och datorer
  • Active Directory - Webbplatser och tjänster

Dessa konsoler kan installeras på andra datorer i domänen som en del av ett paket med administrativa verktyg.

Beskrivning av Active Directory-objekt.

Alla Active Directory-hanteringskonsoler använder en enda uppsättning ikoner för att visa katalogobjekt. Nedan finns alla de viktigaste Active Directory-objekten och deras motsvarande ikoner. Denna information hjälper dig att navigera i Active Directory lättare.

Active Directory

Representerar Active Directory som helhet. Finns nästan aldrig i hanteringsverktyg, med undantag för sök- och objektvalsfönster

Representerar en Windows-domän. Låter dig hantera globala domäninställningar

Behållare, mapp

Representerar ett enkelt containerobjekt. Sådana objekt kan bara skapas av operativsystemet och genereras vanligtvis under installationen av Active Directory

Organisatorisk enhet

Representerad av OP. Detta containerobjekt används för att bygga en hierarki av containrar som innehåller andra objekt

Användare

Representerar ett användarkonto. Objektet innehåller ett stort antal attribut som beskriver användaren

Representerar en användare som inte är domänmedlem. Kontakter används för att lagra information om externa användare i katalogen; de är inte konton och tillåter inte användare att registrera sig på domänen

Representerar en grupp användare och används vanligtvis för att förenkla hanteringen av behörigheter och privilegier

Dator

Representerar en enda dator i ett lokalt nätverk. För datorer som kör Windows NT, 2000 och senare versioner av Windows är detta datorkontot. Objektet innehåller grundläggande information om datorn och låter dig hantera den

Domänkontrollant

Representerar en enda Windows-domänkontrollant. I Active Directory-användare och -datorer visar domänkontrollanter samma ikoner som vanliga datorer. Den här ikonen används för att visa domänkontrollanter i Active Directory-webbplatser och -tjänster. Låter dig hantera inställningar för domänkontrollant

Representerar en nätverksskrivare. Objektet är en länk till en delad skrivare. Objekt av denna typ kan läggas till i katalogen antingen manuellt eller automatiskt. Manuell tillägg är endast möjligt för skrivare som är anslutna till datorer som kör versioner tidigare än Windows 2000

Delad resurs

Representerar en delad mapp. Objektet är en länk till en nätverksresurs och innehåller ingen data

Licensalternativ

Representerar globala webbplatslicensinställningar. Låter dig centralt hantera licenser för mjukvaruprodukter och deras replikering inom webbplatsen

Domänpolicy

Representerar ett domänpolicyobjekt. Låter dig konfigurera policyinställningar på domännivå

Domänkontrollantpolicy

Representerar ett policyobjekt för domänkontrollanter. Låter dig konfigurera policyinställningar för alla domänkontrollanter

Gruppolicy

Representerar en anpassad GPO. Låter dig hantera principinställningar för objekt i behållaren som principen tillämpas på.

Representerar en enda Active Directory-webbplats. Låter dig hantera dess parametrar. Innehåller länkar till domänkontrollantobjekt, webbplatslänkar, webbplatsinställningar

Förening

Representerar kopplingen mellan domänkontrollanter inom en webbplats. Låter dig hantera topologi och replikeringsinställningar mellan domänkontrollanter inom en webbplats

Webbplatslänk

Representerar en enda länk mellan webbplatser. Låter dig hantera topologin och parametrarna för intersite-replikering

Webbplatsinställningar

Representerar ett konfigurationsobjekt för en plats eller en domänkontrollant på en plats. Låter dig hantera replikeringsinställningar för hela webbplatsen eller inställningar för hur en domänkontrollant interagerar med webbplatsen

Representerar ett enda undernät som är associerat med en specifik webbplats. Låter dig ange gränserna för IP-nätverket

Ikon

Ett objekt

Beskrivning

Starta om servern.

Ange lösenordet för katalogtjänstens återställningsläge.

Bekräfta mappplatser för att spara AD-filer.

Bekräfta NetBIOS-domännamnet.

7. Välj säkerhetsnivå för användare och grupper:

· Behörigheter kompatibla med pre-Windows 2000 server– om domänen innehåller program eller tjänster som körs på servrar som kör Windows NT, eller om datorn är en del av en domän som kör Windows NT.

· Behörigheter endast kompatibla med Windows 2000-server och Windows Server 2003– om endast servrar som kör Windows 2000 server och Windows Server 2003 körs i domänen.

Active Directory-administration använder en uppsättning snapin-moduler för Active Directory-hantering. Den består av fyra utrustningar:

1 Active Directory-användare och datorer – utformad för att administrera domänanvändare och datorkonton.

2 Active Directory-domäner och förtroende - används för att upprätta förtroenderelationer mellan domäner.

3 Active Directory-webbplatser och -tjänster (webbplatser och tjänster) - utformade för att hantera webbplatser och webbplatslänkar.

4 DNS – administration av en DNS-server integrerad i Active Directory.

Active Directory-användare och datorer.

Active Directory-användarkonton och datorkonton är fysiska objekt precis som en dator eller användare. Användarkonton kan också användas som dedikerade tjänsteposter för vissa applikationer.

Användarkonto– ett Active Directory-objekt som innehåller all information som identifierar en användare i Windows operativsystem. Denna information inkluderar:

· användarens personuppgifter (fullständigt namn, telefonnummer, e-post, postadress, information om organisationen);

· kontoinställningar (användarnamn och lösenord krävs för användarinloggning, kontots utgångsdatum, lösenordshantering, kryptering och autentiseringsalternativ);

· namn på grupper som användaren är medlem i;

· användarprofil (innehåller information om användarspecifika inställningar, såsom skrivbordsinställningar, beständiga nätverksanslutningar och programinställningar);

· annan information (Terminal Services-profil, fjärrkontroll, sessionshantering, etc.).

Datorkonto- ett Active Directory-objekt som unikt identifierar en dator i en domän. Datorkontot motsvarar datornamnet i domänen. En dator vars konto har lagts till i en domän kan delta i nätverksoperationer som använder Active Directory-innehåll. Till exempel kan en arbetsstation som läggs till en domän känna igen konton och grupper som finns i Active Directory.



@Datorer som kör Windows 95, Windows 98 och Windows Me har inga ytterligare säkerhetsfunktioner och kan inte tilldelas datorkonton.

Gruppär en familj av användar- och datorkonton, kontakter och andra grupper som kan hanteras som en enda enhet. Användare och datorer som tillhör en viss grupp kallas gruppmedlemmar. Grupper i Active Directory är katalogobjekt som finns inom domän- och organisationsenhetsbehållareobjekt.

Med grupper i Active Directory kan du:

· Förenkla administrationen genom att tilldela delningsbehörigheter till en grupp snarare än till enskilda användare. Detta säkerställer lika tillgång till resursen för alla medlemmar i den gruppen;

· delegera administration genom att tilldela rättigheter till användare för hela gruppen på en gång gruppolicy och sedan lägga till de nödvändiga medlemmarna i gruppen, som måste ha samma rättigheter som gruppen;

Grupper kännetecknas av sin omfattning och typ. Omfattningen av en grupp definierar intervallet som gruppen gäller inom en domän eller skog. Det finns tre olika omfattningar: universell, global och domänlokal.

· Lokal domän (lokal inbäddad)– Medlemmar i domänlokala grupper kan inkludera andra grupper och konton från Windows Server 2003-, Windows 2000- eller Windows NT-domäner och kan endast beviljas behörigheter inom domänen.

@ Lokala domängrupper ska användas för att kontrollera åtkomst till resurser inom samma domän.

· Global– Medlemmar i grupper med global omfattning kan inkludera andra grupper och konton endast från den domän där gruppen är definierad, och de kan beviljas behörigheter i vilken domän som helst i skogen.

@ Grupper med global omfattning rekommenderas för hantering av katalogobjekt som kräver dagligt underhåll. Dessa inkluderar till exempel användar- och datorkonton. Eftersom grupper med global omfattning inte replikerar utanför sin domän, kan kontona i sådana grupper ändras ofta utan att orsaka extra trafik som är associerad med replikering till den globala katalogen.

· Universell- Medlemmar i grupper med universell omfattning kan inkludera andra grupper och konton från vilken domän som helst i domänträdet eller skogen, och de kan beviljas behörigheter i vilken domän som helst i domänträdet eller skogen.

@ Tilldela ett universellt omfång till grupper som spänner över domäner. För att göra detta lägger du till konton i grupper med global omfattning och kapslar sedan dessa grupper i grupper med universell omfattning. Med detta tillvägagångssätt påverkar inte ett ändrat medlemskap i globalt omfångade grupper globalt omfångade grupper.


Grupptypen avgör om gruppen kan användas för att tilldela behörigheter till resurser eller endast till distributionslistor för e-post.

Säkerhetsgrupper– ge effektiv kontroll över åtkomst till nätverksresurser. Genom att använda säkerhetsgrupper kan du göra följande:

· Tilldela användarrättigheter till en säkerhetsgrupp i Active Directory. Användarrättigheter för säkerhetsgrupper bestämmer vad en medlem i den gruppen kan göra inom domänens (eller skogen) omfattning. Användarrättigheter ställs in automatiskt för säkerhetsgrupper under installationen av Active Directory för att hjälpa administratörer att definiera rollen för administrativa användare i domänen. En användare som läggs till i gruppen Backup Operators i Active Directory får till exempel möjligheten att säkerhetskopiera och återställa filer och kataloger på valfri domänkontrollant i domänen. Du kan tilldela användarrättigheter till en säkerhetsgrupp med hjälp av grupprincip för att delegera specifika uppgifter. Försiktighet måste iakttas vid tilldelning av delegerade uppgifter. En oerfaren användare med för många rättigheter i en säkerhetsgrupp kan potentiellt orsaka allvarlig skada på nätverket.

· Tilldela resursbehörigheter till säkerhetsgrupper. Behörigheter ska inte förväxlas med användarrättigheter. Behörigheter är inställda för säkerhetsgrupper som använder delade resurser. Behörigheter avgör vem som kan komma åt en given resurs och åtkomstnivån, till exempel full kontroll. Vissa behörigheter som ställs in för domänobjekt ställs automatiskt in på olika åtkomstnivåer för standardgrupper, som kontooperatörer eller domänoperatörer. Mer information om behörigheter finns i Kontrollera åtkomst i Active Directory.

@Säkerhetsgrupper listas i tabeller för selektiv åtkomstkontroll, som definierar behörigheter för resurser och objekt. Administratörer bör tilldela behörigheter för resurser (filresurser, skrivare, etc.) till säkerhetsgrupper snarare än till enskilda användare. Behörigheter tilldelas en grupp en gång, istället för att tilldela rättigheter till varje enskild användare. Varje konto, när det läggs till i en grupp, får de rättigheter som tilldelats den gruppen i Active Directory och de behörigheter som definieras för den gruppen på resursen.

Distributionsgrupper– Används endast av e-postprogram för att skicka e-postmeddelanden till grupper av användare. Distributionsgrupper använder inte säkerhet, med andra ord kan de inte inkluderas i selektiva åtkomstkontrolltabeller (DACL). Om en grupp skapas för att kontrollera åtkomst till delade resurser måste gruppen vara en säkerhetsgrupp.

@Säkerhetsgrupper kan också användas som e-postdestinationer, precis som distributionsgrupper. Ett e-postmeddelande som skickas till en grupp skickas till alla medlemmar i gruppen.

Det finns också grupper för vilka du inte kan redigera eller visa medlemsinformation. Dessa grupper kallas speciella identiteter och används för att representera olika användare vid olika tidpunkter, beroende på omständigheterna.

(Anonym inloggning, Alla, Nätverk, Interaktiv)

Till exempel representerar gruppen Alla alla nuvarande nätverksanvändare, inklusive gäster och användare från andra domäner. För mer information, se Särskilda identiteter.

Användar- och datorkonton (och grupper) kallas säkerhetsprinciper. Säkerhetsprinciper är katalogobjekt som automatiskt tilldelas säkerhets-ID:n (SID) för åtkomst till domänresurser. Ett användar- eller datorkonto används för följande ändamål:

· användar- eller datorautentisering.

· tillåta eller neka åtkomst till domänresurser.

· administration av andra säkerhetsprinciper (för att representera en säkerhetsprincipal från en extern betrodd domän).

· granskning av åtgärder som utförs med ett användarkonto eller dator.

Att tilldela rättigheter samtidigt ett stort antal säkerhetsgrupper används för användare. Konton kan grupperas med hjälp av organisationsenheter (behållare).

För att säkerställa säker användarautentisering bör du skapa separata konton för varje nätverksanvändare med hjälp av " Active Directory-användare och datorer ».

Varje Active Directory-användarkonto har ett antal säkerhetsrelaterade inställningar som avgör hur kontot autentiseras när du loggar in på nätverket.

Dedikerad till att använda PowerShell för att administrera AD. Som utgångspunkt beslutade författaren att ta 10 vanliga AD-administrationsuppgifter och titta på hur de kan förenklas med PowerShell:

  1. Återställ användarlösenord
  2. Aktivera och inaktivera konton
  3. Lås upp användarkonto
  4. Radera ditt konto
  5. Hitta tomma grupper
  6. Lägg till användare i en grupp
  7. Lista gruppmedlemmar
  8. Hitta föråldrade datorkonton
  9. Inaktivera ett datorkonto
  10. Hitta datorer efter typ

Dessutom har författaren en blogg (med hjälp av PowerShell, så klart), vi rekommenderar att du tar en titt - jdhitsolutions.com/blog. Och du kan få den mest uppdaterade informationen från hans Twitter twitter.com/jeffhicks.
Så nedan är översättningen av artikeln "Top 10 Active Directory-uppgifter lösta med PowerShell".

Att hantera Active Directory (AD) med Windows PowerShell är enklare än du tror, ​​och jag vill bevisa det för dig. Du kan helt enkelt ta skripten nedan och använda dem för att lösa ett antal AD-hanteringsuppgifter.

Krav

För att använda PowerShell för att hantera AD måste du uppfylla flera krav. Jag ska demonstrera hur AD-cmdlets fungerar med en Windows 7-dator som exempel.
För att använda cmdletarna måste du ha en Windows Server 2008 R2-domänkontrollant, eller så kan du ladda ner och installera Active Directory Management Gateway Service på äldre DC:er. Läs dokumentationen noggrant före installation; CD-omstart krävs.
På klientsidan, ladda ner och installera (RSAT) för antingen Windows 7 eller Windows 8. På Windows 7 måste du öppna in Kontrollpaneler kapitel Program och välj Slå av eller på funktioner i Windows. Hitta Verktyg för fjärrserveradministration och utöka avsnittet Verktyg för rolladministration. Välj lämpliga objekt för AD DS- och AD LDS-verktyg, observera särskilt att objektet måste väljas Active Directory-modul för Windows PowerShell, som visas i figur 1. (I Windows 8 är alla verktyg valda som standard). Nu är vi redo att jobba.

Fig.1 Aktivera AD DS- och AD LDS-verktyg

Jag är inloggad med ett konto med domänadministratörsrättigheter. De flesta av de cmdlets jag kommer att visa låter dig ange alternativa referenser. Jag rekommenderar i alla fall att läsa hjälpen ( Få hjälp) och exempel som jag kommer att visa nedan.
Starta en PowerShell-session och importera modulen:

PS C:\> Import-Module ActiveDirectory

Importen skapar en ny PSDrive, men vi kommer inte att använda den. Du kan dock se vilka kommandon som är tillgängliga i den importerade modulen.

PS C:\> get-command -modul ActiveDirectory

Det fina med dessa kommandon är att om jag kan använda ett kommando på ett AD-objekt, så kan det användas på 10, 100 och till och med 1000. Låt oss se hur några av dessa cmdlets fungerar.

Uppgift 1: Återställ användarlösenordet

Låt oss börja med en typisk uppgift: att återställa en användares lösenord. Du kan göra detta enkelt och enkelt med en cmdlet Set-ADAccountPassword. Det knepiga är att det nya lösenordet måste kvalificeras som en skyddad sträng: en textbit som är krypterad och lagrad i minnet under PowerShell-sessionen. Låt oss först skapa en variabel med det nya lösenordet:
PS C:\> $new=Read-Host "Ange det nya lösenordet" -AsSecureString

Ange sedan ett nytt lösenord:

Nu kan vi extrahera kontot (med samAccountnamedet bästa alternativet) och ställ in ett nytt lösenord. Här är ett exempel för användaren Jack Frost:

PS C:\> Set-ADAccountPassword jfrost -NewPassword $new

Tyvärr finns det ett fel med denna cmdlet: -Passera igenom, -Tänk om, Och -Bekräfta fungerar inte. Om du föredrar en genväg, prova detta:

PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssw0rd1z3" -force)

Som ett resultat behöver jag att Jack ändrar sitt lösenord nästa gång han loggar in, så jag ändrar kontot med Set-ADUser.

PS C:\> Set-ADUser jfrost -ChangePasswordAtLogon $True

Resultaten av att köra cmdleten skrivs inte till konsolen. Om detta behöver göras, använd -Sann. Men jag kan ta reda på om operationen lyckades eller inte genom att hämta användarnamnet med cmdleten Get-ADUser och angivande av fastigheten Lösenord har gått ut, som visas i figur 2.


Ris. 2. Resultat av Get-ADUser Cmdlet med egenskapen PasswordExpired

Sammanfattning: Att återställa en användares lösenord med PowerShell är inte alls svårt. Jag erkänner att det också är enkelt att återställa lösenordet Active Directory-användare och datorer konsoler Microsoft Management Console (MMC). Men att använda PowerShell är lämpligt om du behöver delegera en uppgift, inte vill distribuera den ovan nämnda snapin-modulen eller återställer ett lösenord som en del av en stor automatiserad IT-process.

Uppgift 2: Aktivera och inaktivera konton

Låt oss nu inaktivera kontot. Låt oss fortsätta arbeta med Jack Frost. Denna kod använder parametern -Tänk om, som du kan hitta i andra komadletar som gör ändringar för att testa mitt kommando utan att köra det.

PS C:\> Disable-ADAccount jfrost -whatif Vad händer om: Utför operation "Set" på Target "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

Låt oss nu inaktivera det på riktigt:

PS C:\> Inaktivera-ADAAkonto jfrost

Och när det är dags att aktivera kontot, vilken cmdlet hjälper oss?

PS C:\> Aktivera-ADAccount jfrost

Dessa cmdlets kan användas i ett pipeline-uttryck, så att du kan aktivera eller inaktivera så många konton du vill. Till exempel kommer den här koden att inaktivera alla konton i försäljningsavdelningen

PS C:\> get-aduser -filter "avdelning -eq "försäljning"" | disable-adaccount

Naturligtvis skriv ett filter för Get-ADUser ganska komplicerat, men det är här användningen av parametern -Tänk om tillsammans med cmdleten Inaktivera-ADAccount kommer till undsättning.

Uppgift 3: Lås upp användarkontot

Tänk på en situation där Jack låste sitt konto när han försökte ange ett nytt lösenord. Istället för att försöka hitta sitt konto via GUI, kan upplåsningsproceduren göras med ett enkelt kommando.

PS C:\> Lås upp-ADAAkonto jfrost

Cmdleten stöder också parametrar -Tänk om Och -Bekräfta.

Uppgift 4: Ta bort konto

Det spelar ingen roll hur många användare du tar bort – det är enkelt att göra med hjälp av cmdleten Ta bort-ADUser. Jag vill inte ta bort Jack Frost, men om jag ville skulle jag använda kod så här:

PS C:\> Remove-ADUser jfrost -whatif Vad händer om: Utför operation "Remove" på Target "CN=Jack Frost,OU=personal,OU=Testing,DC=GLOBOMANTICS,DC=local".

Eller så kan jag ange flera användare och ta bort dem med ett enkelt kommando:

PS C:\> get-aduser -filter "enabled -eq "false"" -property WhenChanged -SearchBase "OU=Anställda, DC=Globomantics,DC=Local" | where ($_.WhenChanged -le (Get-Date).AddDays(-180)) | Remove-ADuser -whatif

Detta kommando kommer att hitta och ta bort alla inaktiverade OU-konton för anställda som inte har ändrats på 180 dagar eller mer.

Uppgift 5: Hitta tomma grupper

Att hantera grupper är en oändlig och otacksam uppgift. Det finns många sätt att hitta tomma grupper. Vissa uttryck kan fungera bättre än andra, beroende på din organisation. Koden nedan hittar alla grupper i domänen, inklusive inbyggda.

PS C:\> get-adgroup -filter * | där (-Not ($_ | get-adgroupmember)) | Välj Namn

Om du har grupper med hundratals medlemmar kan det ta lång tid att använda det här kommandot; Skaffa-ADGroupMember kontrollerar varje grupp. Om du kan begränsa eller anpassa blir det bättre.
Här är ett annat tillvägagångssätt:

PS C:\> get-adgroup -filter "members -notlike "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Groups,OU=Employees,DC=Globomantics, DC=local" | Välj namn, grupp*

Detta kommando hittar alla Universal-grupper som inte har medlemskap i OU-grupper och visar några av egenskaperna. Resultatet visas i figur 3.


Ris. 3. Sök och filtrera universella grupper

Uppgift 6: Lägga till användare i en grupp

Låt oss lägga till Jack Frost till Chicago IT-gruppen:

PS C:\> add-adgroupmember "chicago IT" -Medlemmar jfrost

Ja, så enkelt är det. Du kan också enkelt lägga till hundratals användare till grupper, även om jag tycker att detta är lite besvärligt:

PS C:\> Lägg till-ADGroupMember "Chicago-anställda" -medlem (get-aduser -filter "city -eq "Chicago"")

Jag använde det parentetiska uttrycket i pipeline för att hitta alla användare som har fastigheten City i Chicago. Koden inom parentes exekveras och de resulterande objekten skickas till parametern –Member. Varje användarobjekt läggs till i gruppen Chicago Employees. Det spelar ingen roll om vi har att göra med 5 eller 5000 användare, att uppdatera gruppmedlemskap tar bara några sekunder. Detta uttryck kan också skrivas med hjälp av För varje objekt vad kan vara bekvämare:

PS C:\> Get-ADUser -filter "city -eq "Chicago"" | foreach (Add-ADGroupMember "Chicago Employees" -Medlem $_)

Uppgift 7: Lista gruppmedlemmar

Du kanske vill veta vem som är i en viss grupp. Till exempel bör du regelbundet ta reda på vem som är medlem i gruppen Domänadministratörer:

PS C:\> Get-ADGroupMember "Domänadministratörer"

Figur 4 visar resultatet.


Ris. 4. Medlemmar i gruppen Domänadministratörer

cmdleten visar AD-objektet för varje gruppmedlem. Vad ska man göra med kapslade grupper? Min grupp Chicago Alla användare är en samling kapslade grupper. För att få en lista över alla konton behöver jag bara använda parametern -Rekursiv.

PS C:\> Get-ADGroupMember "Chicago Alla användare" -Rekursiv | Välj DistinguishedName

Om du vill gå åt andra hållet - hitta vilka grupper en användare är i - använd användaregenskapen Medlem i:

PS C:\> get-aduser jfrost -property Medlem av | Välj -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Anställda, DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Groups,OU=Anställda, DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU= Grupper,OU=Anställda, DC=GLOBOMANTICS,DC=lokal CN=Chicago försäljningsanvändare,OU=Grupper,OU=Anställda, DC=GLOBOMANTICS,DC=lokal

Jag använde parametern -ExpandProperty för att visa namn Medlem i som linjer.

Uppgift 8: Hitta föråldrade datorkonton

Jag får den här frågan ofta: "Hur hittar jag föråldrade datorkonton?" Och jag svarar alltid: "Vad är föråldrat för dig?" Företag har olika definitioner av när ett datorkonto (eller användarkonto, det spelar ingen roll) anses vara föråldrat och inte längre kan användas. För mig uppmärksammar jag de konton vars lösenord inte har ändrats under en viss tid. Denna period för mig är 90 dagar - om datorn inte har ändrat lösenordet tillsammans med domänen under denna period är den troligen offline och föråldrad. Cmdlet används Skaffa-ADComputer:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -egenskaper *| Välj namn, lösenordsenaste uppsättning

Filtret fungerar utmärkt med ett hårt värde, men den här koden kommer att uppdateras för alla datorkonton som inte har ändrat sina lösenord sedan 1 januari 2012. Resultaten visas i figur 5.


Ris. 5. Hitta föråldrade datorkonton

Ett annat alternativ: låt oss anta att du åtminstone är på domänens funktionsnivå för Windows 2003. Filtrera efter egenskap LastLogontimeStamp. Det här värdet är antalet 100 nanosekunders intervall sedan 1 januari 1601 och lagras i GMT, så att arbeta med det här värdet är lite knepigt:

PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -egenskaper * | välj namn,lastlogontimestamp, @(Name="LastLogon";Expression=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | Sortera LastLogonTimeStamp


Ris. 6. Konvertera LastLogonTimeStamp-värdet till ett bekant format

För att skapa ett filter måste jag konvertera datumet, till exempel 1 januari 2012, till rätt format. Konvertering utförs i FileTime:

PS C:\> $cutoff=(Get-Date "1/1/2012").ToFileTime() PS C:\> $cutoff 129698676000000000

Nu kan jag använda denna variabel i filtret för att Skaffa-ADComputer:

PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -eller (lastlogontimestamp -notlike "*")" -property * | Välj Namn, LastlogonTimestamp,PasswordLastSet

Ovanstående kod hittar samma datorer som visades i figur 5.

Uppgift 9: Inaktivera datorkontot

Kanske när du hittar inaktiva eller inaktuella konton, kommer du att vilja inaktivera dem. Detta är ganska lätt att göra. Vi kommer att använda samma cmdlet som vi använde för att arbeta med användarkonton. Du kan förtydliga det genom att använda samAccountname konto.

PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif Vad händer om: Utför operation "Set" på Target "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".

Eller med ett pipelineuttryck:

PS C:\> get-adcomputer "chi-srv01" | Inaktivera-ADAccount

Jag kan också använda min kod för att hitta föråldrade konton och inaktivera dem alla:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -egenskaper *| Inaktivera-ADAccount

Uppgift 10: Hitta datorer efter typ

Jag får också ofta frågan hur man hittar datorkonton efter typ, till exempel servrar eller arbetsstationer. Detta kräver lite kreativitet från din sida. Det finns inget i AD som skiljer en server från en klient, förutom kanske OS. Om din dator kör Windows Server 2008 måste du göra några extra steg.
Först måste du få en lista över operativsystem, och sedan filtrerar vi konton efter tillgängliga operativsystem.

PS C:\> Get-ADComputer -Filter * -Egenskaper Operativsystem | Välj Operativsystem -unik | Sortera operativsystem

Resultaten visas i figur 7.


Ris. 7. Hämtar OS-listan

Jag vill hitta alla datorer som kör ett serveroperativsystem:

PS C:\> Get-ADComputer -Filter "OperatingSystem-liknande "*Server*"" -egenskaper OperatingSystem,OperatingSystem ServicePack | Välj Namn,Op* | formatlista

Resultaten visas i figur 8.

Precis som andra AD Get-cmdlets kan du anpassa sökparametrar och begränsa begäran till specifika organisationsenheter om det behövs. Alla uttryck jag har visat kan integreras i större PowerShell-uttryck. Du kan till exempel sortera, gruppera, använda filter, exportera till CSV eller skapa och skicka HTML-rapporter via e-post – allt från PowerShell! I det här fallet behöver du inte skriva ett enda manus.
Här är en bonus: en åldersrapport för användarlösenord, sparad i en HTML-fil:

PS C:\> Get-ADUser -Filter "Enabled -eq "True" -AND PasswordNeverExpires -eq "False"" -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired | Välj DistinguishedName,Name,pass*,@(Name="PasswordAge"; Expression=((Get-Date)-$_.PasswordLastSet)) |sortera PasswordAge -Fallande | ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm !}

Även om detta uttryck kan se lite skrämmande ut, är det lätt att använda med minimal kunskap om PowerShell. Och bara ett sista råd återstår: hur man definierar en anpassad egenskap som kallas Lösenordsålder. Värdet representerar gapet mellan idag och egenskapen PasswordLastSet. Sedan sorterar jag resultaten för min nya fastighet. Figur 9 visar utdata för min lilla testdomän.

Uppdatering:
Inlägget innehåller en översättning av artikeln på portalen

De som har varit tvungna att hantera saker som ett Excel-kalkylblad med 200 nya anställda från och med nästa vecka, eller användarkonton som är felaktigt konfigurerade för att någon i Help Desk klickade på något de inte borde ha klickat på, och även de som är intresserade på ett enklare sätt för att hantera Active Directory®, förutom att öppna mapparna Användare och Datorer varje gång, kan du använda ett av de kostnadsfria administrationsverktygen. Några av dem är inbyggda direkt i operativ system Windows, vissa tillhandahålls i Resource Kit eller Windows Support Toolkit, och några är gratis produkter från tredje part. Vilka är dessa bekväma produkter och var kan jag få tag i dem? Låt oss ta reda på.
Låt oss börja med de inbyggda kommandoradsverktygen i Windows Server 2003 som låter dig skapa, ta bort, ändra och söka efter objekt i Active Directory.

CSVDE-verktyget låter dig importera nya objekt till Active Directory med den ursprungliga CSV-filen; det ger också möjlighet att exportera befintliga objekt till en CSV-fil. CSVDE kan inte användas för att modifiera befintliga objekt; När du använder det här verktyget i importläge kan du bara skapa nya objekt.

Att exportera en lista över befintliga objekt med CSVDE är ganska enkelt. Följande visar hur du exporterar Active Directory-objekt till en fil som heter ad.csv:

csvde –f ad.csv

Alternativet -f anger att det följs av namnet på utdatafilen. Men tänk på att, beroende på din miljö, kan denna grundläggande syntax resultera i en enorm och obekväm filutmatning. För att begränsa verktyget till att endast exportera objekt inom en specifik organisationsenhet (OU), kan kommandot ändras enligt följande:

csvde –f UsersOU.csv –d ou=Users,dc=contoso,dc=com

Låt oss vidare anta att jag bara behöver exportera användarobjekt till min CSV-fil. I det här fallet kan du lägga till alternativet –r för att ange ett LDAP-protokollfilter för den här sökningen, vilket kommer att begränsa antalet exporterade attribut (observera att följande finns på en rad):

csvde –f UsersOnly.csv –d ou=Users,dc=contoso,dc=com –r
"(&(objektkategori=person)(objektklass=användare))" –l
DN,objektklass,beskrivning

Alternativet –i låter dig importera objekt till Active Directory från en CSV-källfil. Men att skapa användarobjekt med CSVDE har en viktig nackdel: det kan inte ställa in användarlösenord, så jag skulle inte använda CSVDE för att skapa användarobjekt.

Active Directory tillhandahåller en andra inbyggd användarbatchoperation som kallas LDIFDE, som är mer kraftfull och flexibel än CSVDE. Förutom att skapa nya objekt, låter LDIFDE dig modifiera och ta bort befintliga objekt och till och med utöka Active Directory-schemat. Avvägningen för LDIFDEs flexibilitet är att den nödvändiga indatafilen (en LDIF-fil) med filtillägget .ldf använder ett mer komplext format än en enkel CSV-fil. (Med lite arbete kan du också konfigurera användarlösenord, men mer om det senare.)

Låt oss börja med ett enkelt exempel - exportera användare i en affärsenhet till en LDF-fil (observera att följande finns på en rad):

ldifde -f users.ldf -s DC1.contoso.com -d "ou=UsersOU,dc=contoso,dc=com"
–r "(&(objektkategori=person)(objektklass=användare))"

Som med de flesta kommandoradsverktyg kan en fullständig beskrivning av LDIFDE-alternativen erhållas genom att köra LDIFDE /? . som visas är de jag använde här. (Observera att parametrarna för CSVDE- och LDIFDE-kommandona är desamma.)

Den verkliga kraften i LDIFDE kommer från att skapa och hantera objekt. Innan du gör detta måste du dock skapa en indatafil. Följande kod skapar två nya användarkonton - afuller och rking; För att skapa en indatafil, skriv in texten i Anteckningar (eller en annan vanlig textredigerare) och spara den som NewUsers.ldf:

dn: CN=afuller, OU=UsersOU, DC=contoso, DC=com
changetype: add
cn: afuller
objectClass: användare
samAccountName: afuller dn: CN=rking, OU=UsersOU, DC=contoso, DC=com
changetype: add
cn:rking
objectClass: användare
samAccountName: rking

När filskapandet är klart kör du följande kommando:

ldifde –i –f NewUsers.ldf –s DC1.contoso.com

Det enda nya alternativet här är -i, som, som du kanske kan gissa, anger att operationen importerar snarare än exporterar.

När du ändrar eller tar bort befintliga objekt ändras inte syntaxen för LDIFDE-kommandot; istället ändras innehållet i LDF-filen. För att ändra fältet för användarkontobeskrivning, skapa en textfil som heter ModifyUsers.ldf, till exempel den som visas i figuren. 2.


Ris. 2 LDF-fil ModifyUsers

Ändringar importeras genom att köra samma LDIFDE-kommandosyntax som tidigare, med angivande av den nya LDF-filen efter alternativet -f. LDF-formatet för att ta bort objekt är ännu enklare; För att ta bort användare du har arbetat med, skapa en fil som heter DeleteUsers.ldf och skriv in följande:

dn: CN=afuller OU=UsersOU, DC=contoso, DC=com
changetype: delete dn: CN=rking, OU=UsersOU, DC=contoso, DC=com
changetype: ta bort

Observera att, till skillnad från CSVDE, kan LDIFDE konfigurera användarlösenord. Men innan du kan konfigurera unicodePWD-attributet på ett användarkonto måste du konfigurera SSL/TLS-kryptering på dina domänkontrollanter.Dessutom kan LDIFDE skapa och ändra alla Active Directory-objekt, inte bara användarkonton. Till exempel kommer följande LDF-fil att skapa ett nytt schematillägg som heter EmployeeID-example i contoso.com-skogsschemat:
dn: cn=Anställd-ID-exempel,cn=Schema,
cn=Konfiguration,dc=contoso,dc=com
changetype: add
adminDisplayName: EmployeeID-Example
attribut-ID: 1.2.3.4.5.6.6.6.7
attributSyntax: 2.5.5.6
cn: Anställd-ID
instansTyp: 4
isSingleValued: Sant
lDAPDisplayName: anställd-ID-exempel

Eftersom LDIFDE-filer använder industristandardens LDAP-filformat, tillhandahåller tredjepartsprogram som behöver modifiera Active Directory-schemat ofta LDF-filer som kan användas för att granska och godkänna ändringarna innan de tillämpas i produktionsmiljön.

Förutom verktyg för batchimport och export, innehåller Windows Server 2003 inbyggda verktyg som låter dig skapa, ta bort och ändra olika Active Directory-objekt, samt frågeobjekt som uppfyller vissa kriterier. (Observera att dessa verktyg, dsadd, dsrm, dsget och dsquery, inte stöds av Active Directory i Windows 2000.)

Dsadd används för att skapa en instans av en Active Directory-objektklass i en specifik katalogpartition. Dessa klasser inkluderar användare, datorer, kontakter, grupper, affärsenheter och kvoter. Observera att varje typ av objekt som skapas kräver en speciell uppsättning parametrar som motsvarar de attribut som är tillgängliga för den typen. Det här kommandot skapar ett enda användarobjekt med olika attribut ifyllda (observera att följande finns på en rad):

dsadd-användare cn=afuller,ou=IT,dc=contoso,dc=com
–samID afuller –fn Andrew –ln Fuller –pwd *
-memberOf cn=IT,ou=Grupper,dc=contoso,dc=com "cn=Help Desk,ou=Grupper,
dc=contoso,dc=com"
–beskriv "Marknadschef"
Parametern -memberOf kräver det fullständigt kvalificerade särskiljande namnet (DN) för varje grupp som användaren ska läggas till; om du behöver lägga till användaren i flera grupper kan du lägga till flera DN:n separerade med mellanslag. Om ett element, säg DN i Help Desk-gruppen, innehåller ett mellanslag, detta Elementet måste placeras inom dubbla citattecken. Om ett element, säg IT\EMEA affärsenhet, innehåller ett omvänt snedstreck, måste du ange omvänt snedstreck två gånger: IT\\EMEA. (Dessa krav gäller för alla ds*-verktyg.) Om du använder alternativet -pwd * kommer du att uppmana dig att ange ett lösenord för användaren på kommandoraden. Lösenordet kan anges i själva kommandot (-pwd P@ssword1), men då kommer det att visas i klartext på skärmen eller i valfri text- eller skriptfil där kommandot infogas.

På samma sätt kan du skapa ett gruppobjekt och en affärsenhet med följande två kommandon:

dsadd dator cn=WKS1,ou=Arbetsstationer,dc=contoso,dc=com
dsadd ou "ou=Training OU,dc=contoso,dc=com"

Dsmod används för att modifiera befintliga objekt, och fungerar på ungefär samma sätt som dsadd, med olika undermenyer och syntax beroende på vilken typ av objekt som ändras. Följande dsmod-kommando ändrar användarens lösenord och modifierar deras konto så att de uppmanas att ändra sitt lösenord nästa gång de loggar in:

dsmod-användare "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1
–mustchpwd ja

För att se hur lika dessa alternativ är, ta en titt på dsadd-syntaxen som används för att skapa en användare med samma attribut konfigurerade:

dsadd-användare "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1
–mustchpwd ja

Uppenbarligen, om du känner till parametrarna för att skapa objekt med dsadd, kan du använda dem för att ändra användare med dsmod.

Motsatsen till dsadd är dsrm; Som du kanske föreställer dig används det här verktyget för att ta bort objekt från kommandoraden. Den grundläggande syntaxen för dsrm är ganska enkel: skriv bara dsrm följt av det distingerade namnet på objektet du vill ta bort, ungefär så här:

dsrm cn=WKS1,ou=Arbetsstationer,dc=contoso,dc=com

Som standard kommer dsrm att fråga "Är du säker på att du vill ta bort det här objektet?" Skriv Y och tryck på Enter. Denna begäran kan inaktiveras med parametern –noprompt, men i det här fallet försvinner naturligtvis chansen att bekräfta att objektet valdes korrekt innan raderingen. Två ytterligare alternativ kan vara användbara när du tar bort ett containerobjekt, det vill säga en strukturell enhet som potentiellt kan innehålla andra objekt. Följande kommando tar bort TrainingOU-organisationsenheten och alla objekt den innehåller:

Och den här tar bort alla underordnade objekt i TrainingOU, men rör inte själva den strukturella enheten:

dsrm ou=TrainingOU,dc=contoso,dc=com –underträd
-utesluta

Du kan använda verktyget dsmove för att flytta eller byta namn på ett objekt i Active Directory, men observera att det bara kan användas för att flytta objekt inom en domän. För att migrera objekt mellan domäner eller skogar, använd Active Directory Migration Tool (ADMT), en gratis nedladdning från Microsoft. Dsmove bygger på två parametrar, som kan användas separat eller tillsammans. Detta kommando ändrar efternamnet på Steve Conns användarkonto:

dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com"
– nytt namn "Steve Conn"

Detta kommando flyttar Steve-kontot från IT-organisationsenheten till utbildningsorganisationsenheten:

dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newparent
ou=Träning,dc=contoso,dc=com

Byta namn och överföring kan göras i en operation genom att ange båda parametrarna samtidigt:

dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –nyttnamn
"Steve Conn" –newparent ou=Träning,dc=contoso,dc=com

Dsget och Dsquery

Kommandoradsverktygen ds* innehåller också två verktyg som används för att fråga Active Directory-information istället för att skapa eller ändra objekt.

Dsget tar som indata ett objekts distinguished name (DN) och returnerar värdet för det eller de specificerade attributen. Dsget använder samma undermenyer som dsadd och dsmod - "användare", "dator", "kontakt", "grupp", "division" och "kvot".

För att få SAM-kontonamnet och säkerhets-ID (SID) för användarkontot, skriv in följande kommando (observera att följande finns på en rad):

dsget-användare cn=afuller,ou=IT,dc=contoso,dc=com
–samAccountName –sid

Resultaten kommer att likna de som visas i fig. 3.

Ris. 3 Hur dsget fungerar

Dsquery returnerar en lista med Active Directory-objekt som matchar de angivna kriterierna.

Dsquery kan använda följande undermenyer, var och en med sin egen syntax, för ObjectType: "dator", "kontakt", "undernät", "grupp", "affärsenhet", "webbplats", "server" (observera att undermenyn Server hämtar data om domänkontrollanter, inte servrar i din miljö), "användare", "kvot" och "partition". Och om en av dessa frågetyper inte är vad du behöver, kan du använda undermenyn * för att ange en LDAP-fråga i fritt format StartNode anger platsen för Active Directory-trädet där sökningen ska börja. Du kan använda ett specifikt DN, till exempel ou=IT,dc=contoso,dc=com, eller någon av följande kortvägsbeskrivningar: domänrot, som börjar vid roten av en specifik domän, eller skogsrot, med början vid roten av skogsrotdomän som använder en global katalogserver för att utföra en sökning. Slutligen anger parametern sökomfång hur dsquery ska söka i Active Directory-trädet. Underträdsundersökningar (standardalternativet) får åtkomst till den angivna StartNode och alla dess underordnade, syskonundersökningar får endast åtkomst till de omedelbara underordnade av StartNode, och basundersökningar får endast åtkomst till StartNode-objektet. För att bättre förstå sökomfång, föreställ dig en organisationsenhet (OU) som innehåller både användarobjekt och en underordnad OU, som också innehåller ytterligare objekt. När du använder ett underträd som omfång kommer organisationsenheten, alla användarobjekt inom den, den underordnade organisationsenheten och dess innehåll att frågas efter. Med ett ennivåomfång kommer endast användarna i organisationsenheten att frågas, men inte den underordnade organisationsenheten och dess innehåll. En grundläggande fråga kommer bara att fråga själva organisationsenheten, utan att fråga efter objekten den innehåller. Slutligen kan du använda utdataformatet för att styra hur dsquery-resultaten formateras. Som standard returnerar dsquery de särskiljande namnen på alla objekt som matchar frågan, ungefär så här:

"cn=afuller,ou=Training,dc=contoso,dc=com"
"cn=rking,ou=ITTraining,ou=Training,dc=contoso,dc=com" För att fråga alla användarobjekt som finns i en IT-affärsenhet och dess underordnade organisationsenheter, använd följande:

dsquery-användare ou=IT,dc=contoso,dc=com

Frågan kan göras ännu mer exakt genom att lägga till ytterligare alternativ, såsom -disabled, som endast returnerar inaktiverade användarkonton; -inaktiv x, returnerar endast användare som inte har anslutit på x eller flera veckor; eller -stalepwd x, returnerar endast användare som inte har ändrat sina lösenord på x dagar eller mer.

Beroende på antalet objekt i katalogen kan du behöva ange alternativet -limit x när du kör frågan. Som standard returnerar dsquery upp till 100 objekt som matchar frågeparametrarna; men du kan ange ett större antal, till exempel -limit 500, eller använda -limit 0 för att få dsquery att returnera alla matchande objekt.

Du kan också använda andra undermenyer för att utföra användbara frågor på andra typer av objekt. Tänk på följande fråga, som returnerar varje delnät som definierats i Active Directory-webbplatser och tjänster och som ingår i adressutrymmet 10.1.x.x:

dsquery subnet –name 10.1.*

Och följande kommando kan användas för att returnera varje undernät som finns på Corps webbplats:

dsquery subnet –site Corp

Med hjälp av nästa undermeny kan du snabbt avgöra hur många domänkontrollanter i skogen som är konfigurerade för att fungera som globala katalogservrar:

dsquery-server –skog –isgc

Du kan också använda den här syntaxen för att göra det enklare att identifiera en domänkontrollant i en specifik domän som innehåller FSMO-rollen för den primära domänkontrollanten (PDC)-emulatorn:

dsquery-server –hasfsmo pdc

Som med andra ds*-kommandon som inkluderar undermenyer, kan alla tillgängliga alternativ i en viss dsquery-undermeny visas genom att kommandorad och ange dsquery user /?, dsquery computer /?, dsquery subnet /?, och så vidare.

Ett ytterligare knep är att överföra utgående dsquery-data till ett annat verktyg, såsom dsmod, med hjälp av | (SHIFT+omvänt snedstreck för engelsk tangentbordslayout). Ett företag har till exempel bytt namn på en avdelning från "Utbildning" till "Intern utveckling", och behöver nu uppdatera beskrivningsfältet för varje användare som tillhör denna avdelning. Med en kommandorad kan du fråga alla användarobjekt som har ett provisioneringsbeskrivningsfält och sedan ersätta det beskrivningsfältet för hela paketet enligt följande:

dsquery user –description "Training" | dsmod
-beskrivning "Intern utveckling"

Vissa fynd från tredje part

Eftersom Active Directory är baserat på LDAP-standarder kan du fråga och göra ändringar i det med hjälp av alla verktyg som förstår LDAP. Många tredjepartsleverantörer har släppt betalverktyg för att hjälpa till med Active Directory-administration, men ibland kan du hitta riktiga pärlor som är gratis. Detta gäller särskilt samlingen som skapats av katalogtjänstens MVP Joe Richards och som är tillgänglig för nedladdning på joeware.net/freetools. I den kan du hitta många verktyg som tjänar till att lösa olika problem. Tre av dem jag återkommer till ständigt är adfind, admod och oldcmp.

Adfind och Admod

Adfind och admod liknar dsquery och dsmod; adfind är ett kommandoradsfrågeverktyg för Active Directory, och admod kan skapa, ta bort eller ändra Active Directory-objekt.

Till skillnad från ds*-verktygen, som har flera undermenyer och olika alternativ beroende på typen av objekt, använder adfind och admod samma syntax oavsett vilken typ av fråga eller ändring som utförs. Den grundläggande syntaxen för adfind är:

adfind –b -s -f
attribut som önskas

En fråga för det unika namnet och beskrivningen av alla datorobjekt i en domän skulle se ut så här:

adfind –b dc=contoso,dc=com –s underträd –f (objektklass=dator) dn
beskrivning

En fråga för alla användarobjekt skulle se ut så här:

adfind –b dc=contoso,dc=com –s underträd –f "(&(objektkategori=person)
(objectclass=user))" dn beskrivning

Observera att syntaxen inte har ändrats förutom att fråga efter LDAP-innehållet.

När du arbetar med adfind kan du hitta flera genvägar för att skriva parametrar som eliminerar onödigt skrivarbete. Till exempel kan -default-alternativet ersätta -b dc=contoso,dc=com i föregående exempel och söka i hela domänen; -gc söker baserat på sophämtning (GC) och returnerar alla användare i din Active Directory-skog. Alternativet -rb kan också användas för att ställa in den relativa basen för sökningen; Om du till exempel behöver hitta den strukturella enheten "Training" i domänen phl.east.us.contoso.com, kan du spara tid avsevärt genom att helt enkelt ange –default –rb ou=Training, istället för –b ou= Träning, dc=phl, dc=east,dc=us,dc=contoso,dc=com.

Adfind kan också utföra ett antal avancerade sökfunktioner som är svåra att hantera från kommandoraden utan det.

Ett exempel som använder alternativet -asq skulle begära "Visa mig gruppmedlemskapen för HelpDesk-medlemmar" så här:

adfind –default –rb cn=HelpDesk,ou=IT –asq member memberOf

Admod, som programmets namn antyder, används för att modifiera objekt i Active Directory. Precis som med adfind finns det inga specialiserade undermenyer med egna syntaxer som du behöver komma ihåg; admod använder samma syntax oavsett vilken typ av objekt som bearbetas. Admod kan också användas för att lägga till, flytta, byta namn på, ta bort och till och med återställa objekt genom att helt enkelt lägga till lämpligt alternativ, säg -add, -rm, -move, -undel. Och precis som i dsquery och dsmod är | kan användas för att skicka adfind-begäran till admod.

Observera att att utföra en återställning med admod är en enkel operation för att återställa ett gravstensobjekt där de flesta av objektets attribut redan har tagits bort. För att helt återställa ett objekt med alla attribut måste du utföra en påtvingad återställning av objektet.

Det finns ett annat verktyg från Joes samling av program som jag anser vara en viktig del av min automatiseringsverktygssats: oldcmp, som söker i Active Directory-databasen efter referenser för datorer som inte har använts på ett visst antal veckor och kan göra följande:

  • skapa rapporter om konton utan att vidta några åtgärder på dem;
  • inaktivera oanvända datorkonton;
  • flytta datorkonton till en annan, fördefinierad strukturell enhet;
  • helt radera datorkonton.

Jag noterar att eftersom oldcmp kan orsaka allvarlig katalogförödelse kommer den med flera inbyggda säkerhetsfunktioner. Det tar inte bort konton som inte tidigare inaktiverats (såvida du inte sa "Nej, jag vill verkligen göra det här!" på kommandoraden). Den modifierar inte mer än 10 objekt åt gången (såvida inte annat specifikt anges), och den kommer aldrig att göra något med domänkontrollantens datorkonto.

Joe har nu uppdaterat oldcmp så att den även kan utföra liknande funktioner på användarkonton som inte har använts under en viss tidsperiod.

För en liten Active Directory-miljö, eller en där du bara arbetar med ett eller två tillägg eller ändringar åt gången, kan GUI-verktyg som Active Directory-användare och datorer räcka för den dagliga administrationen, men måste läggas till på en daglig basis eller genom att ändra ett stort antal objekt eller helt enkelt vilja hitta en mer effektiv lösning för administrativa uppgifter, kan byte till kommandoraden avsevärt påskynda processen att skapa, ändra och ta bort objekt i Active Directory. Som visas ovan finns det ett antal flexibla och kraftfulla gratisverktyg tillgängliga, både inbyggda i Windows och distribuerade av medlemmar i Active Directory-communityt. Vilken som helst av dem kan avsevärt förbättra produktiviteten för en Active Directory-administratör, och tillsammans blir de ännu viktigare för hans dagliga arbete.

Laura E. Hunter är en fyrafaldig Microsoft MVP för Windows Server Networking Tools. Hon är författare till den andra upplagan av Active Directory Reference Guide (O'Reilly, 2006) Med tio års erfarenhet inom IT-branschen arbetar Laura nu som Active Directory-designer för en ingenjörsfirma i världsklass. innehar flera branschcertifieringar och är en frekvent talare vid användargruppsmöten och branschkonferenser.