Job / Praca

    Zmiana nazwy komputerów z AD

    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 :)


    Related Posts with Thumbnails
    Add your widget here