Pewnie każdy administrator, staje z czasem przed problemem, że w sieci ma totalny bałagan jesli chodzi o nazwy hostów, zwłaszcza jak komputery przyjeżdżają preinstalowane. Ja także postanowiłem zrobić sobie porządek ponieważ właśnie przygotowuje sieciowy backup i nie chce jako nazwy klientów podawać IP, które jest z DHCP, poza tym wybieranie klientów do restore lub backupu po IP to utrudnienie a nie ułatwienie. Dlatego też komputery będą nazywały się tak jak pracujący na nich userzy. Tutaj zaczynają się schody, ponieważ w Active Directory gdzie figurują wszystkie komputery nie ma możliwości zmiany ich nazwy. Można zarządzać wszystkim co tylko mamy pod Zarządzaj po kliknięciu prawym na Mój Komputer, no ale nazwy jednak zmienić nie można. Nie jest tak źle i można sobie oszczędzić biegania od komputera do komputera jednak przy pomocy dwóch programów i jednego skryptu. Po pierwsze potrzebujemy PsTools oraz wsname.
Na koniec, potrzebujemy skrypt (nazwij go dowolnie np changer.cmd)
@echo off
if "%1" EQU "" GOTO SHOWSYNTAX
if "%2" EQU "" GOTO SHOWSYNTAX
if "%3" EQU "" GOTO SHOWSYNTAX
if "%4" EQU "" GOTO SHOWSYNTAX
if not exist wsname.exe GOTO SHOWSYNTAX
if not exist psexec.exe GOTO SHOWSYNTAX
if /i "%5" EQU "REBOOT" (
SET REBOOT=Y
) ELSE (
SET REBOOT=N
)
echo Connecting
net use \\%1\ipc$ > NUL
if NOT ERRORLEVEL == 0 GOTO NETERROR
echo Copying WSNAME locally
COPY WSNAME.EXE \\%1\C$ > NUL
echo Launching WSNAME
PSEXEC \\%1 C:\WSNAME.EXE /N:%2 /RCID /USER:%3 /PASS:%4
if "%ERRORLEVEL%" NEQ "0" SET REBOOT=N
echo Tidying Up
DEL \\%1\C$\WSNAME.EXE
echo Disconnecting
net use \\%1\ipc$ /d > NUL
if "%REBOOT%" EQU "Y" (
echo Rebooting '%2' so new the name will take effect
shutdown /m \\%1 /r /f /c "Rebooting so new name will take effect"
)
GOTO END
:NETERROR
echo.
echo ERROR: Could not connect to %1
echo.
GOTO END
:SHOWSYNTAX
echo.
echo Remote Rename in Domain
echo. Syntax: RemoteName "device existing name" "new name" "userid" "password" [REBOOT]
echo.
echo. Requires PSEXEC.EXE and WSNAME.EXE
echo.
echo. Get PSEXEC from www.sysinternals.com
echo.
echo.
:END
SET REBOOT=
Wrzucamy wszystko do jednego katalogu, wchodzimy do shella (cmd) i piszemy (będąc w katalogu ze skryptem i programami):
changer 10.1.0.50 JanKowalski DOMENA/Administrator haslo [reboot]
changer – to nazwa naszego skryptu
10.1.0.50 – adres komputera docelowego (może być też nazwa NetBIOSowa)
JanKowalski – nowa nazwa komputera
DOMENA/Administrator – użytkownik z prawami do zmiany nazwy (gdy komputery są w domenie to mamy ułatwione zadanie ponieważ wystarczy Administrator domeny dla każdego komputera, jeśli nie to cóż, mam nadzieje, że znasz hasła każdego komputera ;)
haslo – hasło użytkownika DOMENA/Administrator
[reboot] – wymuszenie restartu aby zmiany odniosły skutek
Napewno błędem, który napotkasz będzie jednak nie działanie tego rozwiązania z powodu zapory Windowsowej. Znowu w domenie można załatwić to przez GPO, bez domeny pozostaje bieganie do komputerów.
Wyłączamy zaporę stosując następujące GPO:
i podpinamy do komputerów, których ma dotyczyć.
Nastepnie czekamy, aż polityki się odświeżą lub odpalamy gpupdate /force .
Jesli maszyna zacznie odpowiadac na pingi to możemy zacząć zabawe ze zmianami nazw :)
Cześć,
Tytułem komentarza do „Tutaj zaczynają się schody, ponieważ w Active Directory gdzie figurują wszystkie komputery nie ma możliwości zmiany ich nazwy.” zachęcam do zapoznania się z artykułem MS Technet dotyczącym zmiany nazwy komputerów w AD za pomocą narzędzia netdom:
http://support.microsoft.com/kb/325354/pl
Inna sprawa to zastanowił bym się jednak nad innym, bardziej ogólnym sposobem nazywania komputerów niż użytownicy, ponieważ:
a) w AD będą figurowały dwa obiekty o tej samej nazwie
b) w przypadku odeścia pracownika z firmy, zmiany miejsca pracy, czy nawet tak prozaicznej rzeczy jak zamążpójście ;-) proponowane przez Ciebie nazewnictwo weźmie w łeb (a dokładnie wymusi ponowną zmianę nazwy)
c) względy bezpieczeństwa – znając nazwisko osoby pełniącej strategiczną funkcję w firmie możemy z łatwością przy Twojej metodzie wybrać komputer do zaatakowania..
Pozdrawiam