IT ›  Helios › 

VBS - šikovný editor aneb lepím skript

Buck the Bug
Ve snaze upravit můj stávajíci skript jsem začal hledat, zda neexistuje nějaký zajímavý editor, který by mi alespoň trochu pomohl. Po chvíli googlování jsem narazil na VbsEdit.
Hlavní výhodou pro mne bylo, že obsahuje příklady rozdělené dle kategorií (většina nebo možná všechny jsou i na stránkách M$). Nicméně pro uživatele s "implementační znalostí"* jazyka jako dělané.
Nevýhodou je omezení zkušební verze v podobě odpočtu před spuštěním skriptu.

A co, že se mi to podařilo slepit? Malou berličku, která se pokusí v Services vyhledat zadaný text a přidat cestu do výjimek standardního firewallu. Příkladem nechť jsou služby SQL Serveru ...

strComputer = "."
strKeyword = "SQL"
strFilePath = ""
strExceptionList = ""
cNL = "" + Chr(10) + Chr(13)

' Objekty firewallu a ověření, zda běží ...
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colApplications = objPolicy.AuthorizedApplications ' pro vkládání výjimek
If (objPolicy.FirewallEnabled=False) Then
        MsgBox "Standardní Windows Firewall není aktivní!!!", vbExclamation, "Upozornění"
        WScript.Quit
End If

' Klíčové slovo pro hledání služeb (def. SQL)
strKeyword = InputBox("Zadej část názvu služby", "Hledání služeb", strKeyword)
If (strKeyword = "") Then Wscript.quit

strQuery = "Select * from Win32_Service Where DisplayName like '%replaceStr%' or Name like ''"
strQuery = Replace(strQuery, "replaceStr", strKeyword)

' Vyhledání služeb
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices = objWMIService.ExecQuery(strQuery)
If Not (colRunningServices.Count > 0) Then        
        MsgBox "Žádná služba nebyla nalezena",vbInformation, "Výsledek"
        WScript.Quit
End if

' Zobrazení cesty pro korekci a vytvoření výjimek
On Error Resume Next
For Each objService in colRunningServices

        strPrompt = "Zkontroluj cestu k souboru a případně odstraň argumenty"
        If Not (objService.State = "Running") Then strPrompt = ">> POZOR: Služba není spuštěna ... <<" + cNL + strPrompt
        strFilePath = InputBox(strPrompt, "Cesta pro výjimku", Replace(objService.PathName,Chr(34),""))
        strFilePaht = Trim(replace(strFilePath,Chr(34),""))
       
        If Not (strFilePath = "") Then
                Set objCurrentException = CreateObject("HNetCfg.FwAuthorizedApplication")
                objCurrentException.ProcessImageFileName strFilePath
                If (Err.Number=0) Then
                        objCurrentException.Name = objService.DisplayName
                        objCurrentException.IPVersion = 2
                        objCurrentException.RemoteAddresses = "*"
                        objCurrentException.Scope = 0
                        objCurrentException.Enabled = True
                       
                        colApplications.Add(objCurrentException)
                        strExceptionList = strExceptionList + objService.DisplayName + cNL
                Else
                        MsgBox  "Výjimku se nepodařilo vytvořit " & Err.Description & " (" & CStr(Err.Number) & " " &Err.Source & ")", vbExclamation, "Chyba"
                        Err.Clear
                End If
        End If
    strFilePath = ""
Next

On Error Goto 0

If (strExceptionList = "") Then
        strMsg = "Nebyly vytvořeny žádné vyjímky"
Else
        strMsg = "Byly vytvořeny následující výjimky:" + cNL + strExceptionList
End If

MsgBox strMsg, vbInformation, "Výsledek"





* Termín "implementační znalost" jsem pochytil od bývalého kolegy Jindry Č. a znamená programátorský přístup, kdy na internetu najdete nějaký kód a téměř bez jakýchkoliv znalostí jazyka se jej zkusíte upravit k obrazu svému. Svým způsobem také Extrémní programování! ;)

 IT  Helios  0 Komentáře Buck the Bug, January 15th, 2008



Aktuální články

Aktuální komentáře

Kategorie

Linky

RSS blogu

Podporuji

Behej.com
Running Training Log
Opera, the fastest and most secure web browser Connectria.com

Reklama


Evidence