Überprüfen ob Prozess läuft mit VBS/WSH

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")

VBS Logfile schreiben | Funktion

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

VBS: Blinkende Tastatur

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

VBS: ZIP-Datei überprüfen

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


VBS zum automatischen umziehen der lokalen Druckerverbindungen

Problem :

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

VBS zum Löschen von Dateien mit bestimmter Extension nach x Tagen

'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.”
Gene Spafford (Sicherheitsexperte)