Windows Server 2008

Nowości w Windows 2008 R2 - AD DS Recycle Bin oraz skrypty PowerShell dla AD Udostępnij na: Facebook

Autor: Nataniel Zieliński

Opublikowano: 27 maja 2009

Zawartość strony
Trochę historii  Trochę historii
Co nowego w wersji 2008 R2?  Co nowego w wersji 2008 R2?
Włączanie mechanizmu kosza [Recycle Bin]  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  Usunięcie i odzyskanie obiektu w PowerShell Słowo o PowerShell – dla tych, którzy jeszcze nie próbowali
Odzyskanie obiektu – LDP.exe  Odzyskanie obiektu – LDP.exe
Materiały dodatkowe  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 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 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 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.

  1. import cmdlet’ów (skryptów PowerShell) dla AD (można również z narzędzi administracyjnych uruchomić konsolę Active Directory Powershell]:
    import-module ActiveDirectory

  2. Podniesienie 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}

  3. włączenie funkcjonalności kosza:
    Enable-ADOptionalFeature ‘recycle bin feature’ –scope ForestOrConfigurationSet –target (Get-ChildItem -path Env:\USERDNSDOMAIN).value

  4. założenie OU:
    New-ADOrganizationalUnit -Name "do testow"

  5. założenie grupy:
    New-ADGroup -Name "GrupaA" -SamAccountName "GrupaA" -GroupScope Global -GroupCategory Security -Path (Get-ADOrganizationalUnit -LDAPFilter '(name=do testow)').distinguishedname

  6. zał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)').distinguishedname

  7. dodanie użytkownika do grupy:
    Add-ADGroupMember -Identity grupaA -member nexor

  8. sprawdzenie parametrów/poprawności:
    Get-ADUser nexor -Properties *
    lub za pomocą ADUaC:

    Sprawdzenie parametrów/poprawności

    Rysunek 1: Sprawdzenie parametrów/poprawności.

  9. usunięcie użytkownika:
    Remove-ADUser nexor

  10. wyszukanie użytkownika zakończone niepowodzeniem:
    Get-ADUser nexor -Properties *

  11. wyszukanie wraz z elementami usuniętymi; widać, że obiekt jest w śmietniku:
    Get-ADObject -Filter 'name -like "nexor*"' –IncludeDeletedObjects

    Elementy usunięte

    Rysunek 2: Elementy usunięte.

  12. odzyskanie użytkownika:
    Get-ADObject -Filter 'name -like "nexor*"' -IncludeDeletedObjects | restore-ADObject

 Do początku strony 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 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”

    Opcje Load Predefined

    Rysunek 3: Opcje Load Predefined.

  • naciśnij „ctrl-t” [lub wybierz z menu view – tree]

    Menu Tree View

    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

    Usunięty objekt

    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”.

    Opcje Modify

    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 Do początku strony

Materiały dodatkowe


Nataniel Zieliński 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 Do początku strony

Windows Server 2008