Microsoft robi wszystko, co w jego mocy, aby PowerShell stał się wyborem dla zaawansowanych użytkowników i autorów automatyzacji na całym świecie. Dawno minęły czasy kompilowania kodu w .NET, aby zrobić to samo, teraz potrzebujesz tylko notepad.exe i google. Jesteśmy wielkimi fanami tego w biurze, zwłaszcza że konsola zarządzania programu Exchange 2007 NIE zawiera wszystkiego, co można zrobić w programie PowerShell. Microsoft celowo nie wdrożył rzeczy, które są wykonywane tylko raz na jakiś czas, łatwiejszych do opracowania w ten sposób, co wręcz wymusza jego użycie, jeśli masz coś przypominającego złożone środowisko.
Zarządzanie nowszą generacją produktów Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) ma bardzo bogate zaczepy PowerShell. Po wdrożeniu Remote Powershell (PowerShell 2.0 IIRC) z Server 2008 R2 stanie się WIĘCEJ przydatny dla autorów automatyzacji.
Co z tym zrobiliśmy:
- Utwórz stronę internetową, aby przekazać określone zadania administracyjne użytkownikom helpdesku. Strona internetowa odpala polecenia wykonywane w PowerShell. Rzeczy, które robi:
- Utwórz i usuń konta użytkowników, w tym obsługę skrzynek pocztowych i katalogów domowych Exchange 2007
- Odblokowuje zablokowane konta
- Utwórz / usuń grupy
- Dodaj / usuń użytkowników z grup
- Przenieś użytkowników między sklepami pocztowymi
- Ustaw hasła
- Pobieraj wyciągi z systemu ERP i co noc pchaj dane globalnej książki adresowej do Active Directory.
- Rozwiąż problem LegacyExchangeDN, który pojawił się podczas migracji z Exchange 2003 do Exchange 2007. Musiałem dodać adres X500 do wszystkich, którzy byli na Exchange 2003. Naprawiono go dość krótkim skryptem PowerShell.
- Tworzenie skryptów „grupowych skrzynek pocztowych” (współdzielonych skrzynek pocztowych w Exchange, w których wielu użytkowników ma dostęp do skrzynki pocztowej), inaczej ręczny proces ze względu na charakter danych, których potrzebujemy przed rozpoczęciem. To znacznie znormalizowało konfigurację tych skrzynek pocztowych.
- Utworzono skrypt, który przechodził przez wszystkie domeny będące domenami, resetując określony klucz rejestru i ponownie uruchamiając usługę. Wykonanie go zajęło 18 godzin, ale wykonało zadanie.
Tak więc, PowerShell będzie z nami już od dłuższego czasu.
EDYCJA : Dodanie próbki kodu, ponieważ był wymagany
$ list = import-csv („groupusers.csv”)
$ lastseengroup = $ list [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{zredagowane - w formacie, ou = grupy, dc = domena, dc = domena, dc = domena}"
Lista członków z wyraźnymi zmiennymi
Wyczyść zmienne nieznanych użytkowników
foreach ($ entry in $ list) {
if ($ ($ entry.group) -ne $ lastseengroup) {
echo „natknął się na nową grupę $ ($ entry.group), zatwierdzając zmiany w $ lastseengroup”
$ newgroup = $ ADgroupPrefix + $ lastseengroup
$ newgroupdn = „” „+” cn = $ newgroup $ ADGroupSuffix „+” „
echo „uzyskiwanie nazwy wyróżniającej dla $ newgroup”
$ istniejąca grupa = grupa dsquery nazwa-katalogu-domeny $ newgroup
if (($ istniejąca grupa -ne $ null)) {
grupa dsmod $ newgroupdn -chmbr $ lista członków
} else {
dsadd group $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Grupa importowana z NDS"
}
Lista członków z wyraźnymi zmiennymi
}
$ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
if ($ User.isvalid) {
$ UserDN = $ User.distinguishedname
$ memberlist = $ lista członków + „” + „$ UserDN” + „”
} else {
$ unknownusers = $ unknownusers + $ ($ entry.member)
}
$ lastseengroup = $ ($ entry.group)
}
grupa dsadd "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp tak -members $ lista członków
Pobiera to plik CSV utworzony za pomocą skryptu perl i aktualizuje zestaw grup. Jeśli grupa już istnieje, zastępuje członkostwo członkostwem określonym w pliku. Jeśli grupa nie istnieje, tworzy ją. To jest synchronizacja w jedną stronę. Ponadto, nie całkiem w produkcji jeszcze, ale blisko.