VBS - šikovný editor aneb lepím skript
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í! ;)
0 


