Hier eine kleine Funktion die überprüft ob ein Prozess läuft oder nicht , sie baut auf VBS / WSH und WMI auf und liefert TRUE oder FALSE zurück.
Funktion :
Function CheckProcess(name)
'------------------ check for running process
Dim ObjProcess
Set ObjProcess = OBJWMI.ExecQuery("select * from win32_process where name='" & name & "' ")
If ObjProcess.Count <> 0 Then
CheckProcess = True
Else
CheckProcess = False
End If
Set ObjProcess = Nothing
End Function
diese Funktion kann z.B. so eingebunden werden
Beispiel :
Do
BoolCkProc = CheckProcess("notepad.exe")
WScript.Sleep 5000
Loop Until BoolCkProc = False
Benötigt wird natürlich das WMI interface
Dim StrComputer : StrComputer = "." '-- lokaler Rechner
Dim OBJWMI : Set OBJWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & StrComputer & "\root\cimv2")
Funktion um ein Logfile in VBS zu schreiben , der neue Eintrag wird immer angehängt.
Benötigt einen Verweis auf
Dim ObjFso : Set ObjFso = CreateObject("Scripting.FileSystemObject")
Und die Variable FIL_LOG muss deklariert sein !
Dim FIL_LOG : FIL_LOG = "C:\" & Replace(WScript.ScriptName,".vbs",".log")
Funktion :
Function WriteLog(Inhalt)
'------------------ Schreibt ein Logfile
Dim FileOut
Set FileOut = ObjFso.OpenTextFile(FIL_LOG,8,true)
FileOut.WriteLine (Inhalt)
FileOut.Close
Set FileOut = Nothing
End Function
Problem:
Um Aufmerksamkeit zu erregen, soll eine LED an der Tastatur blinken.
Lösung:
Die ScrollLock-LED blinkt, und auf dem Bildschirm erscheint ein PopUp, mit dem das Blinken abgestellt werden kann.
set WshShell = WScript.CreateObject("WScript.Shell")
do
WshShell.SendKeys "{SCROLLLOCK}"
Abbruch = WshShell.PopUp("Blinker stop",1,"Mail",0)
if Abbruch<>-1 then exit do
loop
Problem:
Man möchte den Inhalt einer ZIP-Datei bzw. die Anzahl der Dateien in der ZIP-Datei überprüfen.
Lösung:
Mit folgendem VB-Skript kann man die Anzahl der Dateien innerhalb der ZIP-Datei überprüfen.
Sollte die Anzahl (filesinzip.Count) 0 sein, dann ist die ZIP-Datei entweder beschädigt oder leer.
Set objApp = CreateObject("Shell.Application")
set filesInzip=objApp.NameSpace("C:\test.zip").Items
Msgbox filesinzip.Count
Der Name des Printservers hat sich geändert , jetzt kann man zu Fuß an alle Clients gehen und die Drucker umstellen oder man nimmt dieses Skript ins Loginskript auf und das erledigt einem diese Aufgabe ....
Skript :
Option Explicit
Dim ObjWsh : Set ObjWsh = CreateObject("WScript.Shell")
Dim ObjNet : Set ObjNet = CreateObject("WScript.Network")
Dim ObjFso : Set ObjFso = CreateObject("Scripting.FileSystemObject")
Dim objEnv : Set objEnv = ObjWsh.Environment("Process")
Dim Logfile : Logfile = objEnv("USERPROFILE") & "\PrtUmzug.txt"
Dim objNetPr,NPR,DUMMY,ToDo,Zeile,Inhalt,Entry,Printer_New,OLDSERVER,NEWSERVER
OLDSERVER = "SERVERALT" ' ----------------------------> Hier den Namen des alten Printservers eintragen
NEWSERVER = "SERVERNEU" ' ----------------------------> Hier den Namen des neuen Printservers eintragen
' ------------------ routine
WScript.Echo ""
WScript.Echo "-----------------------------------------------------"
If Not ObjFso.FileExists(Logfile) then
WScript.Echo "|-> Ihre Druckerverbindungen werden überprüft & korrigiert"
Inhalt = GetPrinterNames()
WriteLog Logfile,Inhalt
ReadLog Logfile
Else
WScript.Echo "|-> Druckerverbindungen wurden bereits überprüft"
End If
WScript.Echo "-----------------------------------------------------"
WScript.Quit (1)
' ------------------ funktionen
Function GetPrinterNames() '--- liest die verbundenen Netzwerkdrucker aus
Set objNetPr = ObjNet.EnumPrinterConnections
For NPR = 0 to objNetPr.Count - 1 Step 2
If Left(objNetPr.Item(NPR + 1),2) = "\\" then
If DUMMY = "" then
DUMMY = "NPR|" & objNetPr.Item(NPR) & "|" & objNetPr.Item(NPR + 1)
Else
DUMMY = DUMMY & vbCrLf & "NPR|" & objNetPr.Item(NPR) & "|" & objNetPr.Item(NPR + 1)
End If
End If
Next
GetPrinterNames = DUMMY
DUMMY = ""
Set objNetPr = nothing
End Function
Function SetPrinterNames(Line) '--- verbindet einen Netzwerkdrucker
On Error Resume Next
Entry = split(Line,"|")
If UBound(Entry) = 2 Then
Printer_New = Replace(lcase(Entry(2)),OLDSERVER,NEWSERVER)
ObjNet.RemovePrinterConnection Entry(2)
ObjNet.AddWindowsPrinterConnection Printer_New
End If
End Function
Function ReadLog(File) '--- überprüft ob Logfile existiert wenn ja liet Datei aus und spielt gesicherte Einträge zurück
If ObjFso.FileExists(File) Then
Set Dummy = ObjFso.OpenTextFile(File)
Do Until Dummy.AtEndOfStream
Zeile = trim(Dummy.Readline)
SetPrinterNames(Zeile)
Loop
End If
End Function
Function WriteLog(File,Content) '--- löscht die Datei wenn vorhanden und erstellt eine aktualisierte
If ObjFso.FileExists(File) Then
ObjFso.DeleteFile(File)
End If
Dim ObjLogFile : Set ObjLogFile = ObjFso.OpenTextFile(File,8,true)
ObjLogFile.WriteLine (Content)
Set ObjLogFile = Nothing
End Function
'DEL_X_DAYS_EXT_FILES.VBS
'
'Skript zum löschen von Dateien mit der Extension sExt im Pfad sDirectoryPath,
'die älter als iDaysOld Tage sind
'
'
'sDirectoryPath = Pfad zum Verzeichnis, in dem die zu löschenden Dateien liegen (ohne abschließnden Backslash)
'sExt = Extension, der Dateien, die gelöscht werden können/sollen
'iDaysOld = Angabe des Dateialters in ganzen Tagen
Option Explicit
On Error Resume Next
Dim oFSO, oFolder, sDirectoryPath
Dim oFileCollection, oFile, sDir
Dim iDaysOld, sExt
'Variablen definieren
sDirectoryPath = "D:\BACKUP"
sExt = "bak"
iDaysOld = 1
'Zugriff auf Ordner und Dateien
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sDirectoryPath)
Set oFileCollection = oFolder.Files
'Durchsuchen des Zielordners nach allen Dateien mit der Endung sExt
For each oFile in oFileCollection
If LCase(Right(Cstr(oFile.Name), 3)) = sExt Then
If oFile.DateLastModified < (Date() - iDaysOld) Then 'lösche Datei, wenn diese älter als iDaysOld Tage ist
'oFile.Delete(True) '----> Zeile ist nicht aktiv, bitte noch Dokemtarzeiehn davor herausnhemen!!!
msgbox oFile.Name '----> Es wird nur der Name der zu löschenden Datei angezeigt!!
End If
End If
Next
'Variablen zurücksetzen
Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”