HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

DNS-ügyfél szolgáltatás elindítása és leállítása szkriptekből


Példaprogram letöltése

2317 bájt

Windows 2000 alatt előfordulhat, hogy nem működik a DNS névfeloldó szolgáltatás. Ekkor újra kell indítani a számítógépet és ismét helyreáll a rend. Egy kiszolgáló esetében ez nem a legszerencsésebb módja a hibajavításnak és arra sincs mód, hogy mindig a gép mellett üljünk. Cikkünkben készítünk egy szkriptet, amely javítja a hibát újraindítás nélkül is és nem csak a DNS, hanem bármilyen más szolgáltatás leállítására és elindítására alkalmas.

Cikkünkhöz mellékelve megtalálható az alábbiakban szereplő szkript. Futtatva leállítja és elindítja a DNS-ügyfél szolgáltatást.
Az alábbiakban szereplő műveletek elvégzéséhez rendszergazdai jogosultság szükséges.
A hibajelenség abból áll, hogy a gép nem lát "kifelé", tehát nem képes a kéréseket feloldani IP címekké. Ellenkező irányban minden rendben van, a kliensek képesek csatlakozni az adott géphez. A probléma a "DNS-ügyfél" ("DNS-Client") szolgáltatás lefagyása. Amikor újraindítjuk a gépet, akkor ez is újraindul és működik tovább. A gép újraindítása nélkül a következő módon lehet elhárítani a hibát:
Indítsuk el a Felügyeleti eszközök > Szolgáltatások ("Administrative Tools > Services") konzolt és keressük meg a "DNS-ügyfél" ("DNS-Client") szolgáltatást. Kattintsunk rá a jobb oldali egérgombbal és válasszuk az "Újraindítás" ("Restart") menüt. Rövid várakozás után megtörténik a szolgáltatás leállítása és ismételt elindítása.
Ennél a módszernél van egyszerűbb megoldás is: Készítsünk egy szkriptet, amely elvégzi a fenti lépéseket helyettünk. A Windows Management Instrumentation (WMI) "Win32_Service" osztálya kezeli a szolgáltatásokat. Nem csak tulajdonságokat, de metódusokat is elérhetővé téve.
Szolgáltatás leállítása
Első dolog, amit meg kell tennünk, hogy csatlakozunk az osztályhoz és lekérdezzük az összes példányát. Hitelesítési szintnek az "impersonate" értéket adva, egy rendszergazda számára már elérhetővé válnak az objektumok.
Set ServiceSet = GetObject( "winmgmts: {impersonationLevel = impersonate}" ).ExecQuery ("select * from Win32_Service")
Ezután egy ciklussal ellenőrizzük le egyesével a visszakapott gyermekobjektumokat és keressük ki a DNS-ügyfelet. Hogy tudjuk meg, hogy melyik az? Meg kell nézni a "Name" vagy "Description" tulajdonságokat. Hogy melyiket az a legtöbb WMI objektumnál mindegy, mert tartalmuk megegyezik. A szolgáltatás leállítására használjuk a "StopService" metódust és ellenőrizzük le, hogy hiba nélkül lefutott-e. Ha nem, akkor írjunk ki a képernyőre egy hibaüzenetet és a hibakódját.
  for each Service in ServiceSet
    if Service.Description = "DNS-ügyfél" then
     error=Service.StopService
     if error <> 0 then WScript.echo "A szolgáltatás leállítása közben hiba keletkezett. Kódja:" & error
    end If
  next
Ezzel az adott szolgáltatás leállt. Most az elindítást végző kód következik.
Szolgáltatás elindítása
A hitelesítés és a "Win32_Service" objektum elérése most is ugyanúgy zajlik, mint az előbb. Az objektum példányokon is ugyanúgy végre kell hajtani az ellenőrzést, de ezúttal a "StartService" metódus meghívására lesz szükség.
Set ServiceSet = GetObject( "winmgmts: {impersonationLevel = impersonate}").ExecQuery ("select * from Win32_Service")
  for each Service in ServiceSet
    if Service.Description = "DNS-ügyfél" then
     error=Service.StartService
     if error <> 0 then WScript.echo "A szolgáltatás elindítása közben hiba keletkezett. Kódja:" & error
    end If
  next
Más szolgáltatások leállításához, elindításához vagy újraindításához a fenti kódban át kell írni a "DNS-ügyfél" nevet az adott szolgáltatás nevére.

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 172. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |