Wstęp
Zarządzanie systemem Windows Server 2008 zostało znacznie uproszczone poprzez dodanie zupełnie nowej przystawki MMC. Server Manager, bo tak nazywa się to narzędzie, przejmuje zadania wielu samodzielnych konsol znanych z poprzedniej wersji Windows Server, np. Manage Your Server, Configure Your Server czy Add or Remove Windows Components. Jej główne zadania to dodawanie, usuwanie i konfiguracja ról, usług ról oraz funkcji dodatkowych serwera. Dzięki Server Managerowi możliwa jest także diagnostyka serwera, wykonywanie kopii zapasowych, zarządzanie lokalnymi użytkownikami oraz grupami użytkowników.
Server Manager command-line tool
W Windows Server 2008 zostało dodane narzędzie Server Manager command-line. Jest to tekstowy odpowiednik graficznego Server Managera. Pozwala na wykonanie części zadań bez konieczności korzystania z Windows GUI. Za jego pomocą można instalować i usuwać role serwera oraz wykonywać zapytania o konfigurację systemu. Bardzo ważne jest to, że polecenie wykorzystuje pliki zgodne ze standardem XML.
Opcje
Na początku zostaną omówione przełączniki, jakie można użyć z poleceniem ServerManagerCMD.exe, czyli:
servermanagercmd.exe -query [<query.xml>] [-logPath <log.txt>]
servermanagercmd.exe -install <name>
[-setting <setting name>=<setting value>]* [-allSubFeatures]
[-resultPath <result.xml> [-restart] | -whatIf] [-logPath <log.txt>]
servermanagercmd.exe -remove <name>
[-resultPath <result.xml> [-restart] | -whatIf] [-logPath <log.txt>]
servermanagercmd.exe -inputPath <answer.xml>
[-resultPath <result.xml> [-restart] | -whatIf] [-logPath <log.txt>]
servermanagercmd.exe -help | -?
servermanagercmd.exe -version
-query [<query.xml>]
Wyświetla listę ról oraz funkcji dostępnych w systemie. Role zainstalowane na serwerze zostaną dodatkowo wyróżnione kolorem zielonym. Jeśli został dodany przełącznik <query.xml>, to wynik zapytania zostanie zapisany także do pliku w formacie XML. Posiadając taki plik, użytkownik dysponuje informacjami o tym, jakie role i funkcje zostały zainstalowane na serwerze. Skrócona forma przełącznika to -q.
UWAGA: Pliku wygenerowanego za pomocą przełącznika -query nie można użyć bezpośrednio jako parametru w -inputpath oraz -install (zostaną omówione w kolejnym akapicie). Przed jego zastosowaniem będą wymagane modyfikacje pliku XML. Opis i sposoby wykonania modyfikacji zostały umieszczone w dalszej części artykułu.
-inputpath <answer.xml>
Pozwala instalować oraz usuwać role i funkcje wymienione w pliku odpowiedzi podanym jako parametr <answer.xml>. Forma skrócona: -ip.
-install <name> [-setting <setting name>=<setting value>]* [-allSubFeatures]
Instaluje rolę lub funkcję podaną jako parametr <name>. Forma skrócona -i.
Parametr Install posiada dodatkowe opcje:
-setting <setting name>=<setting value>
Pozwala na ustawienie dodatkowych parametrów instalacji. Skrócona forma: -s.
-allSubFeatures
Pozwala zainstalować wszystkie role i funkcje podrzędne wraz z rolą lub funkcją nadrzędną wyspecyfikowaną w parametrze -install <name>.
-remove <name>
Usuwa rolę lub funkcję podaną jako parametr <name>. Forma skrócona: -r.
Parametry install oraz remove posiadają także parametry resultPath, restart oraz whatif, które zostały omówione poniżej:
-resultPath <result.xml>
Zapisuje rezultat działania do pliku wskazanego jako parametr <result.xml>. Skrócona forma: -rp.
-restart
Jeśli po instalacji/usunięciu roli lub funkcji konieczny jest restart, to zostanie on wykonany automatycznie.
-whatIf
Zastosowanie przełącznika spowoduje tylko wyświetlenie rezultatu polecenia, które chcemy wykonać. Samo polecenie nie zostanie wykonane. Skrócona forma: -w.
UWAGA: Nie jest możliwe użycie -resultPath wraz z parametrem -whatif.
-logPath <log.txt>
Parametr pozwala na określenie innej niż domyślna ścieżki oraz nazwy pliku logu. Domyślnie plik zostaje zapisany w: %windir%\temp\servermanager.log. Skrócona forma: -l.
-help
Wyświetla pomoc dotyczącą polecenia ServerManagerCMD.exe. Skrócona forma: -?
-version
Jako wynik zwraca wersję Server Managera. Skrócona forma: -v.
Przykłady użycia
ServerManagerCmd.exe może zostać użyty w wielu scenariuszach. Poniżej zostanie przedstawionych kilka prostych zastosowań.
Wyświetlenie zainstalowanych ról i funkcji serwera
Wszystkie role i funkcje serwera wyświetlimy, wywołując polecenie:
servermanagercmd.exe -query lista.xml
Zainstalowane funkcje i role zostaną wyróżnione w spisie kolorem zielonym.
Lista najpierw wyświetla role, a dopiero później funkcje.
Opcjonalny parametr lista.xml dodatkowo spowoduje zapisanie listy do pliku w formacie XML. Fragment listy przedstawiono poniżej:
<ServerManagerConfigurationQuery Time="2008-03-17T12:17:32" Language="en"
xmlns="http://schemas.microsoft.com/sdm/Windows/ServerManager/Configuration/2007/1">
<Role DisplayName="Active Directory Certificate Services" Installed="false" Id="AD-Certificate">
<RoleService DisplayName="Certification Authority" Installed="false" Id="ADCS-Cert-Authority"
Default="true" />
<RoleService DisplayName="Certification Authority Web Enrollment" Installed="false"
Id="ADCS-Web-Enrollment" />
<RoleService DisplayName="Online Responder" Installed="false" Id="ADCS-Online-Cert" />
<RoleService DisplayName="Network Device Enrollment Service" Installed="false"
Id="ADCS-Device-Enrollment" />
</Role>
<Role DisplayName="Active Directory Domain Services" Installed="true">
<RoleService DisplayName="Active Directory Domain Controller" Installed="true"
Id="ADDS-Domain-Controller" Default="true" />
<RoleService DisplayName="Identity Management for UNIX" Installed="false" Id="ADDS-Identity-Mgmt">
<RoleService DisplayName="Server for Network Information Services" Installed="false" Id="ADDS-NIS"
Default="true" />
<RoleService DisplayName="Password Synchronization" Installed="false" Id="ADDS-Password-Sync"
Default="true" />
<RoleService DisplayName="Administration Tools" Installed="false" Id="ADDS-IDMU-Tools"
Default="true" />
</RoleService>
</Role>
Plik może zostać otwarty za pomocą dowolnego edytora tekstowego. Jako że jest to plik w formacie XML to w prosty sposób można odczytać, jakie role i funkcje są zainstalowane w systemie.
Aby sprawdzić, czy w systemie jest zainstalowany klient lub serwer Telnet, możemy posłużyć się poleceniem:
servermanagercmd.exe -query | find "Telnet"
Z rysunku powyżej wynika, że w systemie została zainstalowana tylko funkcja klienta Telnet.
Instalacja oraz usuwanie ról i funkcji serwera
Dodanie roli lub funkcji jest bardzo proste - wymaga jedynie znajomości jej nazwy. Odnośnik do spisu wszystkich ról i funkcji można znaleźć na końcu artykułu.
W poniższym przykładzie pokazano, jak za pomocą przełącznika -install (-i) dodać funkcję serwera, jaką jest Telnet Client. Instalacja ról serwera jest równie prosta i sprowadza się do wpisania odpowiedniej nazwy roli jako parametru. Oczywiście, należy pamiętać o tym, że rolę należy później poprawnie skonfigurować.
servermanagercmd.exe -i telnet-client
Kolejny przykład przedstawia zastosowanie przełącznika whatif, który wyświetla tylko i wyłącznie wynik wykonania operacji bez wykonania polecenia. W poniższym przykładzie przełącznik whatif poinformuje, że instalacja nie powiedzie się, ponieważ funkcja telnet-client jest już zainstalowana.
servermanagercmd.exe -i telnet-client -whatif
Poniżej przykład usunięcia roli Active Directory Lightweight Directory Services.
servermanagercmd.exe -remove ADLDS
Instalacja z pliku XML
Role i funkcje można instalować na podstawie pliku odpowiedzi. Poniższy plik XML został przygotowany w celu instalacji klienta Telnet oraz serwera DHCP. Na podstawie tego przykładu można w dość prosty sposób przygotować plik do instalacji dowolnej roli lub funkcji.
<ServerManagerConfiguration Action="Install"
xmlns="http://schemas.microsoft.com/sdm/Windows/ServerManager/Configuration/2007/1">
<Feature Id="Telnet-Client" />
<Role Id="DHCP" />
</ServerManagerConfiguration>
Powyższy listing pliku XML posłużył do wywołania polecenia:
servermanagercmd -inputpath c:\aktu.xml
Wynik został przedstawiony na rysunku poniżej. Warto zwrócić uwagę na sposób, w jaki Server Manager działa. Sprawdza on, czy role lub funkcje są zainstalowane. W przykładzie klient Telnet był już zainstalowany i dlatego jego instalacja została pominięta. Serwer nie posiadał roli DHCP, więc została ona dodana.
Praca z plikami XML
Po prostych przykładach przyszedł czas na coś bardziej złożonego.
Na pewno głównym zastosowaniem, jakie znajdzie ServerManagerCMD, będzie odwzorowanie zainstalowanych usług serwera na innym. Można to wykonać poprzez eksport ustawień do pliku XML z serwera wzorcowego i zainstalowanie ról na podstawie informacji zawartych w tymże pliku.
Zadanie wydaje się banalnie proste. Najpierw generowanie pliku wzor.xml za pomocą polecania:
ServerManagerCMD -query wzor.xml
A następnie w celu instalacji usług użycie polecenia:
ServerManagerCMD -inputPath wzor.xml
Niestety, to się nie uda! A przynajmniej nie w ten prosty sposób. Plik wyjściowy oraz wejściowy posiadają inny schemat.
Co można w takim razie zrobić? Są dwa rozwiązania. Pierwsze: plik wejściowy można przygotować ręcznie, co zostało pokazane w jednym z wcześniejszych przykładów. Drugie rozwiązanie, które zostanie za moment omówione, polega na użyciu programu msxsl.exe do konwersji pliku wyjściowego do odpowiedniego formatu wejściowego.
Program msxsl.exe
Aby poprawnie wykonać konwersję, musimy mieć trzy rzeczy:
- bezpłatny program Program Command Line Transformation Utility (msxsl.exe) do konwersji plików (link na końcu artykułu),
- plik lub pliki potrzebne do transformacji: instalacja.xsl, usuwanie.xsl, podglad.xsl (link na końcu artykułu),
- wygenerowany przez servermanagercmd.exe plik XML.
Za pomocą programów msxsl.exe, ServerManagerCMD.exe oraz odpowiedniego pliku xsl można wykonać 3 podstawowe konwersje, które mogą zostać użyte do:
- instalacji ról oraz funkcji serwera,
- usuwania ról oraz funkcji serwera,
- tworzenia pliku html do podglądu zainstalowanych ról oraz funkcji.
Instalacja ról i funkcji
Na początku zostanie zademonstrowana instalacja roli. To zadanie będzie chyba najczęściej wykonywane. Przykładem, kiedy można to wykorzystać, może być sytuacja, gdy firma wdrażająca system wysyła wstępne wymagania w postaci pliku XML. Wykorzystując taki plik, w bardzo prosty sposób mogą zostać przygotowane wstępne wymagania dotyczące ról i usług na serwerze. Oczywiście, nie da się skonfigurować usług ani ról, ale sama instalacja może zaoszczędzić dużo czasu. Pozwoli to także uniknąć sytuacji, w której została pominięta przez nieuwagę instalacja jakiegoś ważnego komponentu.
Utworzenie pliku zawierającego informacje o rolach i usługach wykonuje się w sposób następujący:
ServerManagerCmd.exe -query wzor.xml
Plik wzor.xml zawiera listę wszystkich ról i funkcji, które serwer pełni lub potencjalnie mógłby pełnić. Oczywiście, z listy w prosty sposób można dowiedzieć się, jakie już zostały zainstalowane.
Posiadając pliki wzor.xml i instalacja.xsl oraz program msxsl.exe, możemy przystąpić do konwersji na format akceptowalny jako wejściowy przez ServerManagerCMD.exe. Wywołanie polecenia jest bardzo proste:
msxsl.exe wzor.xml instalacja.xsl -o instalacja.xml
Plik, który otrzymamy jako wynik, został pozbawiony informacji nadmiarowych o rolach i funkcjach, które nie były zainstalowane na serwerze. Pozostały w nim tylko informacje o tych zainstalowanych, a reszta linii jest pusta, więc zostanie zignorowana. W tym miejscu należy podkreślić jedną ważną rzecz: plik nie zawiera także nazw ról ani funkcji, które zawierają inne usługi roli oraz funkcje podrzędne. Należy o tym wiedzieć, ale nie ma powodu, aby się tym martwić, ponieważ role i funkcje nadrzędne zostaną zainstalowane automatycznie.
Za pomocą otrzymanego jako wynik pliku instalacja.xml można już dodać wymagane role i funkcje.
ServerManagerCmd.exe -inputPath instalacja.xml
Z przykładowego ekranu widać, że instalacja części ról została pominięta, ponieważ zostały one dodane wcześniej. Została dodana tylko funkcja Telnet Client, gdyż tylko ona nie była zainstalowana w systemie.
Usunięcie ról i funkcji
Może zdarzyć się sytuacja, gdy na postawie porównania do wzorcowego systemu trzeba pozbawić serwer zainstalowanych ról lub funkcji. Procedura jest bardzo podobna do instalacji. Tak jak poprzednio, na początku należy wygenerować plik stanu serwera na komputerze wzorcowym za pomocą polecenia:
ServerManagerCmd.exe -query wzor.xml
Następnie należy wykonać konwersję pliku wzor.xml do postaci, która zaakceptuje servermanagercmd.exe. Potrzebny będzie do tego plik usuwanie.xsl. Wykonuje się to w sposób następujący:
msxsl.exe wzor.xml usuwanie.xsl -o usuwanie.xml
Plik usuwanie.xml można wykorzystać do odinstalowania ról i funkcji:
ServerManagerCmd.exe -inputPath usuwanie.xml
Należy pamiętać o tym, że nie w każdej sytuacji można usunąć rolę lub funkcję. Taka sytuacja może się zdarzyć na przykład wtedy, gdy serwer jest kontrolerem domeny. Usunięcie roli Active Directory Domain Services nie powiedzie się, dopóki serwer nie zostanie zdegradowany do funkcji serwera członkowskiego.
View
Za pomocą konwersji w programie msxsl.exe można także wygenerować bardzo czytelny raport na temat wszystkich ról oraz funkcji, jakie pełni serwer. Wystarczy wykorzystać wcześniej przygotowany plik wzor.xml oraz podgląd.xsl:
msxsl.exe wzor.xml podglad.xsl -o podglad.html
Linki
Lista nazw ról oraz funkcji
Plik instalacja.xsl
Plik usuwanie.xsl
Plik podglad.xsl
Program Command Line Transformation Utility (msxsl.exe)
Wnioski
Najważniejszym udogodnieniem dla administratorów jest niewątpliwie to, że nowe narzędzie można będzie zastosować w skryptach. Ułatwi to na przykład przygotowanie nowych, podobnych funkcjonalnie środowisk, gdyż za pomocą plików odpowiedzi opartych na XML można będzie w prosty sposób zautomatyzować ten proces.