Nowości w Windows 2008 R2 - AD DS Recycle Bin oraz skrypty PowerShell dla AD
Autor: Nataniel Zieliński
Opublikowano: 27 maja 2009
Zawartość strony
Trochę historii | |
Co nowego w wersji 2008 R2? | |
Włączanie mechanizmu kosza [Recycle Bin] | |
Usunięcie i odzyskanie obiektu w PowerShell Słowo o PowerShell – dla tych, którzy jeszcze nie próbowali | |
Odzyskanie obiektu – LDP.exe | |
Materiały dodatkowe |
Uwaga! Dokument pisany jest na ok. rok przed premierą produktu, który obecnie jest w wersji RC. Do wersji finalnej pewne opisywane elementy mogą ulec zmianie.
Trochę historii
Kosz na śmieci jest bardzo prostym pomysłem, dającym trochę dodatkowego czasu w przypadku omyłkowego usunięcia obiektu. Mechanizm taki istnieje od niepamiętnych czasów w systemie operacyjnym (dokładniej od 1995 roku – ponieważ pierwszą wersją systemu, która implementowała kosz był Windows 95], jest taki mechanizm w Outlooku (tu nawet podwójny – bo są zarówno ‘elementy usunięte’ jak i możliwość przywracania tych usuniętych-z-usuniętych]... i w wielu innych aplikacjach.
Jest też taki mechanizm w Active Directory – tzw. tombstone dla obiektów. Po usunięciu obiektu jest on grzebany w czeluściach bazy Active Directory – a dokładniej w niewidocznym kontenerze systemowym „CN=Deleted Objects”. Od wersji Windows 2003 SP1 mamy 180 dni na przywrócenie obiektu. Jest jednak pewien problem – pogrzebany obiekt ma zachowywane tylko częściowe informacje – większość, jak na przykład przynależność do grup jest tracona. Szczegółowe informacje na temat pogrzebanych obiektów [tombstoned objects] można zleźć na stronach TechNet.
Windows Server 2008 wprowadził możliwość robienia migawek bazy Active Directory a następnie uruchomienia dodatkowej instancji bazy Active Direcotry w trybie tyko do odczytu. Dzięki temu usprawnieniu, po odzyskaniu skasowanego obiektu, można przepisać resztę atrybutów z kopii zapasowej. Mechanizm ten nosi nazwę „Active Directory Mounting Tool” a po szczegóły odsyłam znów do stron TechNetu.
Cały czas jest to jednak mało wygodne i wymaga wykonania całkiem sporej ilości kroków, aby w pełni przywrócić pogrzebany obiekt do życia.
Do początku strony
Co nowego w wersji 2008 R2?
Wersja R2 znacząco zmienia mechanizm pochówku obiektów – pozwala na przechowywanie ich wraz ze wszystkimi danymi, jakie były z nimi związane przed usunięciem. Dzięki temu mechanizm wprowadzony w wersji R1 traci znaczenie – wystarczy wiedzieć w jaki sposób odzyskać obiekt ze śmietnika – ponieważ interfejsu aka ‘Recycle Bin’ znanego z pulpitu systemu nie należy się spodziewać... chociaż nie jest to dużo bardziej skomplikowane - Odzyskiwać obiekty można z linii poleceń oraz za pomocą narzędzia ldp.exe.
W wersji R2 jest jeszcze jedna nowość, która znacząco ułatwia życie administratora – konsola PowerShellv2 dla Active Directory Domain Services. Wraz z instalacją AD DS dostarczany jest cały przybornik narzędzi skryptowych w PowerShell (commandlets), które pozwalają wykonać wszystkie czynności z linii poleceń. Jest również skrypt do odzyskiwania obiektów usuniętych – dzięki czemu procedura odzyskania nieco się upraszcza, i nie trzeba przebijać się przez mało intuicyjne narzędzie jakim jest ntdsutil. Można powiedzieć, że jest to „kosz na śmieci z linii poleceń”.
Do początku strony
Włączanie mechanizmu kosza [Recycle Bin]
Aby można było skorzystać z opisywanej funkcjonalności domena musi mieć poziom funkcjonalny Windows 2008 R2 – niestety poprzednie wersje nie będą potrafiły z kosza skorzystać.
W pierwszym kroku należy włączyć mechanizm – ponieważ nawet w „czystej” instalacji 2008 R2 nie jest on automatycznie włączany. Do tego celu wykorzystuje się commandlet Enable-ADOptionalFeature. Ponieważ kosz można włączyć dla domeny lub całego lasu – jednym z obligatoryjnych parametrów jest podanie zakresu (Forest lub Domain):
Enable-ADOptionalFeature –Target „nazwa.domeny.root” –Scope ForestOrConfigurationSet –Identity ‘Recycle Bin Feature’
Uwaga! Po włączeniu tego mechanizmu nie ma już możliwości wycofania zmiany!
Do początku strony
Usunięcie i odzyskanie obiektu w PowerShell
Bez zbędnej beletrystyki – instrukcja step-by-step która pozwoli przetestować funkcjonalność kosza. Przedstawione poniżej skrypty można bezpośrednio skopiować i wkleić, ponieważ są napisane uniwersalnie – nie wykorzystując konkretnych nazw domeny.
import cmdlet’ów (skryptów PowerShell) dla AD (można również z narzędzi administracyjnych uruchomić konsolę Active Directory Powershell]:
import-module ActiveDirectoryPodniesienie poziomu lasu i domeny:
if ((Get-ADDomain -Current loggedonuser).domainmode -notlike "windows2008r2domain") {Set-ADDomainMode -Identity (Get-ChildItem -path Env:\USERDNSDOMAIN).value -DomainMode Windows2008r2domain} if ((Get-ADForest -Current loggedonuser).forestmode -notlike "windows2008r2forest") {Set-ADForestMode -Identity (Get-ChildItem -path Env:\USERDNSDOMAIN).value -ForestMode windows2008r2forest}włączenie funkcjonalności kosza:
Enable-ADOptionalFeature ‘recycle bin feature’ –scope ForestOrConfigurationSet –target (Get-ChildItem -path Env:\USERDNSDOMAIN).valuezałożenie OU:
New-ADOrganizationalUnit -Name "do testow"założenie grupy:
New-ADGroup -Name "GrupaA" -SamAccountName "GrupaA" -GroupScope Global -GroupCategory Security -Path (Get-ADOrganizationalUnit -LDAPFilter '(name=do testow)').distinguishednamezałożenie użytkownika:
New-ADUser -SamAccountName "nExoR" -AccountPassword (ConvertTo-SecureString "P@ssw0rd" -asplaintext -force) -Name "nExoR" -Surname "Nexois" -GivenName "Nataniel" -Enabled $true -ChangePasswordAtLogon $false -Title "TRASHBIN" -Description "uzytkownik do testow smietnika" -Path (Get-ADOrganizationalUnit -LDAPFilter '(name=do testow)').distinguishednamedodanie użytkownika do grupy:
Add-ADGroupMember -Identity grupaA -member nexorsprawdzenie parametrów/poprawności:
Get-ADUser nexor -Properties *
lub za pomocą ADUaC:Rysunek 1: Sprawdzenie parametrów/poprawności.
usunięcie użytkownika:
Remove-ADUser nexorwyszukanie użytkownika zakończone niepowodzeniem:
Get-ADUser nexor -Properties *wyszukanie wraz z elementami usuniętymi; widać, że obiekt jest w śmietniku:
Get-ADObject -Filter 'name -like "nexor*"' –IncludeDeletedObjectsRysunek 2: Elementy usunięte.
odzyskanie użytkownika:
Get-ADObject -Filter 'name -like "nexor*"' -IncludeDeletedObjects | restore-ADObject
Do początku strony
Słowo o PowerShell – dla tych, którzy jeszcze nie próbowali
Przedstawione skrypty to tylko mała część tego, co jest załączone wraz z systemem do zarządzania Active Directory. Aby wyświetlić dostępne polecania związane z Active Directory można użyć polecenia „ Get-Help *ad* ”. Wyświetli to wszystkie polecenia zawierające znaki ‘ad’ – czyli trochę więcej niż potrzeba.
Jeśli nie miałe(a)ś do tej pory do czynienia z PowerShell, początki będą za pewne trudne i może się wydawać, że stary cmd.exe był wygodniejszy. To są jednak tylko pozory – dzięki świetnej pomocy (Get-Help, help] z licznymi przykładami i olbrzymimi możliwościami jakie daje PS, można poważyć się o stwierdzenie, że cmd.exe powinno być z systemu jak najszybciej usunięte.
Celem artykułu nie jest nauka PowerShell, a tylko krótkie przedstawienie możliwości, jednak krótkie wyjaśnienia dla początkujących:
- (Get-ChildItem -path Env:\USERDNSDOMAIN).value – jest odpowiednikiem %USERDOMAIN% z cmd.exe. Składnia trochę dłuższa, ale większe możliwości wiążą się przeważnie z trochę bardziej zagmatwanym sposobem użycia. Warto zwrócić uwagę, że Get-Childitem jest uniwersalną metodą, która pobiera obiekty potomne dowolnego obiektu – tutaj providera ‘Environment’.
- podczas podnoszenia poziomu funkcjonalnego lasu została dodana funkcja warunkowa: if ((Get-ADDomain -Current loggedonuser).domainmode -notlike "windows2008r2domain") – można ją oczywiście pominąć. Przykład ma na celu zademonstrowanie dodatkowo metody, w jaki sposób można obecny poziom zweryfikować.
- ciekawostką, na którą warto również zwrócić szczególną uwagę jest typ ‘SecureString’ – czyli zakodowany ciąg znaków. Ten typ zapewnia, że dane typu ‘hasła’ są przesyłane przez PS zaszyfrowane. Aby zmusić do automatyzacji z linii poleceń należy neleży wykorzystać funkcję (ConvertTo-SecureString "P@ssw0rd" -asplaintext -force)
Do początku strony
Odzyskanie obiektu – LDP.exe
Teraz instrukcja dla osób preferujących pracę z okienkami, czyli przy pomocy narzędzia ldp.exe. Opisywane będzie samo odzyskanie a więc zakładam iż:
włączona jest funkcjonalność śmietnika [opisywana wyżej]
założony został jakiś użytkownik i miał ustawione różne parametry [np. memberOf, displayName, title, etc. sdfsdfg]
użytkownik został usunięty
Na początek należy uruchomić ldp i dodać rozszeżenie, umożliwiające zobaczenie kontenera usuniętych obiektów:uruchom ldp.exe
z menu ‘connections’ wybierz opcję ‘bind’ – zależnie od tego, jako kto jesteś zalogowany(a) można wybrać opcję ‘Bind as currently logged user’ lub ‘with credentials’
z menu „options” wybierz „Controls”
z dostępnej listy „Load Predefined” wybierz „Return Deleted Objects” i zatwierdź „OK”
Rysunek 3: Opcje Load Predefined.
naciśnij „ctrl-t” [lub wybierz z menu view – tree]
Rysunek 4: Menu Tree View.
wybierz kontener „cn=deleted Objects” – jeśli wszystko było wykonane prawidłowo będzie się tam znajdował obiekt, który został usunięty
Rysunek 5: Usunięty objekt.
zaznacz usunięty obiekt i naciśnij cltr-M [PGM -> „Modify”]
w polu „Edit Entry Attribute” wpisz isDeleted
w części “Operations” wybierz “Delete” i zatwierdź „enter”
W polu „Edit Entry Attribute” wpisz „distinguishedName”
w okienku wartości wpisz oryginalną nazwę obiektu – np. „cn=nexor,dc=do testow,dc=w2k8r2,dc=domain”
w części „Operations” wybierz „Replace” i zatwierdź „enter”
Upewnij się, że zaznaczona jest opcja „Extended”.
Rysunek 6: Opcje Modify.
zatwierdź enterem i naciśnij „RUN”
Obiekt powinien pojawić się z powrotem, gotowy i ze wszystkimi parametrami.
Do początku strony
Materiały dodatkowe
- Odzyskiwanie obiektów usuniętych (pl) https://www.microsoft.com/poland/technet/article/art0101_01.mspx
- Używanie AD Mounting Tool (en) https://technet.microsoft.com/en-us/library/cc753609.aspx
- Sprawdzanie obiektu usuniętego w AD [pre w2k8 R2] https://support.microsoft.com/kb/258310
Nataniel Zieliński (konsultant ISCG) Przygodę z komputerem zaczynał na polskich 8-bitowcach Bosman 8 w późnych latach 80-tych. Po bogatych doświadczeniach z licznymi systemami, rozpoczął karierę jako administrator systemów Windows NT w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych, gdzie zgłębiał tajemnice kolejnych wersji Windows NT, zarówno od strony technicznej - administrując, jak teoretycznej - prowadząc kursy MOC w Akademickim Centrum Szkoleniowym. Od kilku lat pracuje w roli konsultanta oraz trenera MCT w firmie ISCG Sp. z o.o., Gold Partnera Microsoft, dalej pogłębiając swoją wiedzę w dziedzinie kolejnych produktów ze stacji Microsoft. Od dłuższego czasu członek elitarnego klubu inżynierów Microsoft - SEClub. |
Do początku strony |