Server Core
Co to LGH core?
Server Core jest 'okrojoną’ wersją Windows Longhorn. Dementując plotki, nie jest to linux-windows składający się wyłącznie z konsoli – stworzenie takiej wersji jest po prostu niemożliwe, ze względu na liczne zależności między bibliotekami. Stąd, użytkownika powita normalny ekran logowania znany z Vista czy LGH, po wciśnięciu ctrl-alt-del czy wybraniu task managera również pojawi się graficzne okienko, identycznie jak to z pełnych wersji. Nie ma natomiat explorera [fizycznie – więc nie da się go uruchomić w żaden sposób] – na pierwszy rzut oka, jest to wersja systemu, jaką można zobaczyć po wybraniu opcji 'Safe Mode with command line’.
Zaskoczeniem niewątpliwie jest brak PowerShella i dostępność wyłącznie cmd. Wynika to z faktu, iż nie ma wersji .NET framework dla core’a, a tej nie ma, ponieważ framework nie jest póki co na tyle modularny, żeby można było wybrać opcję instalacji komponentów niezależnych od bibliotek powiązanych pośrednio lub bezpośrednio z bibliotekami GUI, explorerem i wieloma innymi komponentami, które z core’a zostały usunięte. Do premiery pozostał jeszcze rok [planowane wydanie Q4 2oo7/Q1 2oo8], a do bety 3, która ma być wersją zamkniętą [od tej wersji nie pojawi się już nic nowego w funkcjonalności – będą jedynie wprowadzane poprawki] zostało ponad pół roku [planowane wydanie Q2/Q3 2oo7]. Trochę czasu jeszcze jest, oczekiwać więc wszyscy będą z niecierpliwością, chociaż szansa na pojawienie się powerShella jest nikła.
Po co taka wersja?
Mniej wszelkich usług, brak bibliotek odpowiedzialnych za większość GUI, brak podstawowych źródeł rozprzestrzeniania się szkodliwych aplikacji – exploratora i IE – to aspekty, które znacząco wpłyną zarówno na bezpieczeństwo rozwiązania jak i wydajność. Administracja serwerem będzie uciążliwa [na początku], ale też ideą nie jest instalacja go jako głównego serwera, a raczej jako 'dodatkowego’. Większość codziennych prac administracyjnych będzie można wykonywać zdalnie, za pomocą mmc z innego komputera. Czyli furtka do łatwego zarządzania została. W temacie zdalnego zarządzania – dostępna również jest usługa terminalowa. Po zalogowaniu mamy oczywiście do dyspozycji wyłącznie cmd, nie jest to więc w żadnym razie informacja pomocna dla klikaczy. Innym sposobem – w tym przypadku bardziej sensownym – będzie WinRS – Windows Remote Shell, który jest porotem do rcmd czy remotecmd znanego z reskitów. IMHO wielkim błędem MSa jest niepoddanie się standardowi jakim jest SSH, ale nie znam tajników polityki firmy, więc czemu tak jest pozostanie dla mnie zagadką…
Real Man don’t Click
Hasło przyszło chyba z platformy *xowej, ale jest wielu wprawnych adminów Windowsowych którzy również są wyznawcami tego podejścia. Brak powerShella to baaardzo poważny problem, ponieważ zarządzanie z linii poleceń jest znacznie trudniejsze niż w linuxach. Podstawowym powodem nie jest brak narzędzi – tych można znaleść sporo czy to w ResKicie, w samym systemie, w necie, czy choćby pisząc własne skrypty – problemem jest jest brak standardu. O ile w systemach wywodzących się z zarządzania z linii poleceń, od wielu lat utworzył się pewien standard podawania parametrów, ich oznaczeń, sposobu przetwarzania itp itd. , każde z narzędzi windowsowych rządzi się swoimi prawami – jaki kto miał pomysł, tak to zrobił. Narzędzia nie zostały zunifikowane i napisane od nowa – po prostu są, czy się to komuś podoba, czy nie. Nauka jest więc trudna, wymaga poznania nie tylko nazw programów, ale skąd je wziąć, jak wpisuje się parametry, jaki jest format wyjścia etc, nawet fakt czy dany tool jest wrażliwy na wielkość liter – nie koniecznie jest oczywisty.
Niniejszy art ma na celu przybliżyć podstawowe narzędzia, i pomóc w pierwszych krokach na nowej platformie…. i nie tylko – ponieważ biegłość w posługiwaniu się command-line’em na pewno przyda się również w pracy z GUIową wersją. A powershell nawet jeśli pojawi się w LGH, długo jeszcze nie będzie ogólnym standardem.
Po zalogowaniu
Logowanie wygląda identycznie, jednak chwilę później do dyspozycji mamy wyłącznie linie poleceń. Jest to wspaniały test na to, jak dobrze znamy narzędzia command-line z Windows. Uważam się za osobę mocno 'skryptową’, mimo to okazało się, że niektóre bardzo podstawowe rzeczy są niewiadomą – po prostu zawsze, nawet nie do końca świadomie, korzysta się z narzędzi z GUI. Na początek więc najbardziej podstawowe czynności, które mogą sprawić kłopot:
Zegarek
W jaki sposób sprawdzić która godzina, kiedy nie ma traya z zegarkiem?
prompt [$t]$s$p$g
Prompt jest tylko dla obecnej sesji, jeśli więc chciałoby się, aby każda konsola miała taki by-default, trzeba pobawić się rejestrem. To pierwsza wersja artu – i na razie nie będę zmieszczał informacji zbyt zaawansowanych.
Dyski logiczne w systemie
Bardzo podstawowy problem – jak sprawdzić jakie są dostępne dyski w systemie? Pierwszy strzał zapewne padnie na diskpart, ponieważ jest narzędziem dość znanym. Sprawdźmy czy pomoże. Najpierw jakie wogóle są dyski fizyczne:
diskpart list disk
Teraz dla konkretnego dysku lista partycji:
select disk 0 list partition
diskpart można oskryptować. parametr /s pozwala na podanie pliku wsadowego, w którym wystarczy zapisać kolejne polecenia:
****file list.dp: select disk 0 list partition
Następnie wywołanie:
diskpart /s list.dp
Takie rozwiązanie ma jednak same wady – po pierwsze nie wiemy ile mamy dysków fizycznie, a więc skrypt nie będzie uniwersalny. Po drugie 'Partion 1′ nie daje informacji o tym, jaką ta ma przypisaną literę dysku – aby się tego dowiedzieć, trzeba dalej drążyć:
select partition 1 detail partition
…co niezmienia faktu, że metoda ta jest niewygodna, a przedewszystkim nieprzenośna i nie daje informacji o użądzeniach zewnętrznych – CD/Flash – czy dyskach sieciowych. Krótko – odpada.
Narzędzie, które przyjdzie w sukurs zarówno w tym przypadku, jak i w większości pozostałych – jest wmic. WMIC jest skrótem od Windows Management Instrumentation Console – i jest włąśnie niczym innym jak konsolą do zapytań WMI (; . Jeśli ktoś nie wie czym WMI jest – to czas najwyższy, nadrobić zaległości. Jest to podstawowy mechanizm Windows do zarządzania, na którym opiera się wiekszość budowanych narzędzi. Dla osób, które z WMI miały do czynienia od strony developerskiej – pisały aplikacje lub skrypty – wmic będzie narzędziem nieprzyjaznym, ponieważ celem 'uproszczenia’ ma własną składnię i własny pomysł na odpytywanie się pewnych obiektów. Dla osób, które z 'żywym’ WMI do czynienia nie miały, powinien być jednak narzędziem stosunkowo przyjemnym. I tak wszystkie literki dysku można sprawdzić następująco:
wmic logicaldisk get caption, description
uruchomiony bez parametru działa jak diskpart czy nslookup – jako konsola pozwalająca wpisywać kolejne polecenia. Proponuję więc wykonać trzy podstawowe działania, aby zaznajomić się co jak działa:
wmic /? logicaldisk
Dwa podstawowe spostrzeżenia – wmic działa w trybie konsoli oraz fakt, iż prośba o wypisanie dysków logicznych bez dodatkowych parametrów zwraca ogrom informacji. Stąd w poprzednim przykładzie pojawiło się ’get caption, description’, które zawęrza zapytanie do dwóch, wybranych parametrów. Więcej informacji na temat działania wmic można znaleźć na stronach microsoft.
Operacje na koncie użytkowników
Wszelkie podstawowe operacje można wykonać przy pomocy starego, dobrego net. Z tym 'dobrym’ to może przesada, bo narzędzie to nie tyle co jest stare, ale raczej prymitywne. Do podstawowych zastosowań jest jednak wystarczające:
net user administrator *
lub dla konta domenowego:
net user administrator * /domain
Do bardziej zaawansowanych operacji na userach trzeba zaopatrzeć się w odpowiednie skrypty – np. umgr.vbs ze strony ze skryptami.
Zmiana nazwy komputera
Nazwę komputera można zmienić za pomocą dwóch podstawowych narzędzi – netdom, który może równocześnie posłużyć do zmiany komputera w domenie, oraz odpowiednia metoda w wmic:
Netdom renamecomputer %computername% /NewName:new-name /UserD:domain-username /PasswordD:* wmic computersystem where name="%computername%" rename name="new-name"
W obu przypadkach wykorzystana jest zmienna środowiskowa %computername% – w przypadku korzystania z wmic w trybie konsoli, nie będzie ona obsłużona.
Dostęp zdalny
Do Server Core można podłączyć się za pomocą klienta RDP. Po zalogowaniu będzie do dyspozycji oczywiście wyłącznie konsola cmd – tak jak przy normalnym logowaniu lokalnym [toć logowanie terminalowe, jest przecież lokalnym]. Najpierw trzeba jednak włączyć możliwość podłączenia, którą zazwyczaj wykliqje się we właściwościach 'my computer’. Włączyć połączenia terminalowe na Core można na wiele sposobów:
Cscript windowssystem32scregedit.wsf /ar 0
Plik scregedit.wsf służy do zmiany parametrów dostępnych we właściwościach 'my computer’ – np. właściwości pagefile. Drugim sposobem jest skorzystanie z wmic:
wmic rdtoggle where servername="%computername%" SetAllowTSConnections 1
Zarządzać sesjami terminalowymi można przy pomocy kilku narzędzi, dostępnych w katalogu system32, a są to: query, który służy do wylistowania sesji, logoff – który pozwoli wylogować się ze stacji oraz ts*.exe, które pozwolą na pozostałe operacje takie jak wylistowanie procesów, zabicie któregoś etc.
Usługi i sterowniki
Do operacji na usługach dostępne są dwa podstawowe narzędzia: sc oraz oczywście wmic. Możliwości i rola WMI staje się chyba coraz bardziej jasna dla osób, które wcześniej się z tym nie spotkały:
wmic service get caption, state, name
Ciekawostką jest fakt, iż wszystkie sterowniki traktowane są jako usługi. Dzięki temu można sprawdzić jakie sterowniki są zainstalowane:
sc query type= driver
Bardzo istotna jest tu składnia – „type= driver” nie może być zapisane w żaden inny sposób. Jeśli w systemie trzeba zainstalować urządzenie, do którego sterownika standardowo brakuje, należy rozpakować pliki drivera, wejść do katalogu w którym się znajdują i uruchoamić drvload wskazując na plik .inf ze sterownikiem.
Na zakończenie
Informacje, które znajdują się na tej stronie to wstęp, przegląd zarządzania z linii poleceń – nie tylko dla ServerCore, ale pisany z myślą o tym systemie. Jeśli będzie zainteresowanie tym tematem poprawie art, uzupełniając o szczegóły i dopisze następne części. Tym czasem życzę miłej pracy i nauki zarządzania Windows bez GUI. Real man don’t click.