Windows - IIS adatbázisának helyreállítása szkriptből

forráskód letöltése
Korábbi cikkeinkben már írtunk az Internet Information Services (IIS) metaadatbázisának szkriptből való mentéséről és az elkészült mentések listázásáról (lásd kapcsolódó cikkeinket). Most két dolgot nézünk meg: miként lehet - ugyancsak szkriptből - törölni egy meglévő mentést és hogy lehet visszaállítani (restore), felülírva az azóta végrehajtott változtatásokat.
Cikkünkhöz mellékeltük az alábbi szkripteket:
"DeleteBackup.vbs" - törli egy 1-es sorszámú metaadatbázis mentést.
"RestoreBackup.vbs" - visszaállítja a metaadatbázist a legutóbbi mentésből.
Minden egyes biztonsági mentésnek - történjen a felügyeleti konzolból, szkriptből vagy programból - van egy sorszáma, mely egyesével növekszik. Ezen sorszám egyrészt megkönnyíti a legutolsó mentés beazonosítását (még a dátumot sem kell megnézni), másrészt a programozói interfészen keresztül ezzel lehet hivatkozni az adott mentésre. Az alábbi szkriptek gerincét ez a tulajdonság adja.
Az IIS metaadatbázis programozási eszközökkel történő mentéséhez, a mentések listázásához, törléséhez és helyreállításához az operációs rendszer beépített támogatást biztosít előre elkészített tulajdonságok és metódusok formájában. Nem kell mást tenni, mint ezeket használni és néhány lépésben megvalósítható a metaadatbázis biztonsági mentésének kezelése.
Mentés törlése
Deklaráljunk egy objektumot, amin keresztül felvesszük a kapcsolatot az IIS szolgáltatással.
  Dim ComputerObj 
Hozzuk létre az objektum egy példányát a helyi gépen (Localhost). Amennyiben a hálózat egy más gépén található az IIS, mint amin a szkriptet futtatjuk a "Localhost" helyett írjuk be a távoli gép nevét vagy IP címét.
  Set ComputerObj = GetObject("IIS://LocalHost") 
Meglévő mentés törlése a "DeleteBackup" metódussal lehetséges. Paraméterként át kell adnunk a mentés elérési útját, mi itt nem adunk meg semmit, ilyenkor az alapértelmezett elérési út lesz érvényben (%systemroot%\system32\inetsrv\MetaBack). Megkötés, hogy az útvonal hossza nem lehet több 100 karakternél. Második paraméter a mentés sorszáma, ha hiányzik a megadott sorszám, hibajelzést kapunk.
  ComputerObj.DeleteBackup "", 1 
Utolsó lépésként tájékoztassuk a felhasználót, hogy a szkript lefutott.
wscript.echo "Kész."
Adatbázis helyreállítása a legutolsó mentésből
A helyreállítás hasonlóan egyszerű, de a háttérben több folyamat is lezajlik egymás után, úgyhogy több időt vesz igénybe.
Szintén deklaráljunk egy objektum változót az IIS-el való kapcsolatfelvételhez.
  Dim ComputerObj
Hozzuk létre az objektum egy példányát a helyi gépen (Localhost).
  Set ComputerObj = GetObject("IIS://Localhost) 
A helyreállítás a "Restore" metódussal lehetséges. Meghívásakor leállítja az IIS szolgáltatásait, így átmenetileg nem lesz elérhető sem a Web, sem az FTP szolgáltatás (ha használunk SMTP vagy NNTP-t az sem). Az első paraméter a mentés helye, ugyanazok érvényesek rá, mint az előbb. Második paraméter a mentés sorszámát jelenti, ebből a sorszámú fájlból történik a helyreállítás. Alternatív megoldásként használhatunk egy konstans értéket, melynek neve: "MD_BACKUP_HIGHEST_VERSION" és a legutolsó mentést jelenti. Az utolsó paraméter fenntartott érték, mindig nulla.
  ComputerObj.Restore "", MD_BACKUP_HIGHEST_VERSION, 0 
Miután megtörtént a helyreállítás, a "Restore" metódus elindítja az IIS szolgáltatásait. Ha közben meg volt nyitva az "Internet szolgáltatáskezelő" ("Internet Services Manager") felügyeleti konzol, akkor ki kell lépnünk belőle és ismét el kell indítani.
Utolsó lépésként most is tájékoztassuk a felhasználót, hogy a szkript lefutott - ez lehet, hogy több percig is eltart.
wscript.echo "A helyreállítás elkészült."