Проблема с InStr - Shadow-Copy Script с регистрацией и проверкой ошибок

Я пытаюсь разработать сценарий VBS, который создает резервные копии с shadowcopy.exe и копирует их с помощью rsync в конкретное место назначения. Существуют файлы журналов, которые будут созданы для процедуры копирования rsync тем же сценарием и проверены на наличие определенных слов (например, "ошибка" или "ошибка").

Проблема, с которой я столкнулся сейчас, заключается в том, что я не знаю, как проверять файлы журналов / считывать конкретные ключевые слова.

Я прочитал это InStr есть возможность решить мою проблему, но я не знаю, как использовать его для определения моих ключевых слов, их чтения и объединения с моим почтовым предупреждением. Может, у кого-нибудь есть совет для меня?

Мой код до сих пор:

Dim oEmail, oConf
Dim authuser, authpass, smtpserver
Dim recipient,sender,subject,message 
Dim ObjFso
Dim FIL_LOG
Dim response

'Angaben zur Quelle und Ziel 
quelle = "c:\vshadow"   'beispiel c:\vshadow
ziel = "/cygdrive/c/users/example/desktop/test/"    'beispiel /cygdrive/c/users/example/desktop/test/

'angaben zu den emails die verschickt werden wollen
authuser = "example@example.de"
authpass = "123"
smtpserver = "server" 
recipient = "example@example.de"
sender = "rsync@test.de"
subject = "Test E-Mail"
message1 = "Schattenkopie konnte nicht erstellt werden"
message2 = "rsync befehl ist durchgelaufen"
message3 = "rsync ist abgebrochen"

'für den email versand benötigte daten
Set oEmail = CreateObject("CDO.Message")
Set oConf = CreateObject("CDO.Configuration")

oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtpserver
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = authuser
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = authpass
oConf.Fields.Update 

'Schattenkopie erstellen
Const CONTEXT = "ClientAccessible"

Set Args = WScript.Arguments
If Args.Count() > 0 Then
     VOLUME = Args.item(0)
Else
     VOLUME = "C:\"
End If

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objShadowStorage = objWMIService.Get("Win32_ShadowCopy")

errResult = objShadowStorage.Create(VOLUME, CONTEXT, strShadowID)

'falls schattenkopie nicht erstellt werden kann email mit Fehlermeldung, sonst gehts
'weiter
If errResult <> 0 Then
    oEmail.Configuration = oConf
    oEmail.To = recipient
    oEmail.From = sender
    oEmail.ReplyTo = sender
    oEmail.Subject = subject 
    oEmail.HTMLBody = message1
End If

'Mounted die Schattenkopie und Kopiert per Rsync
Set WshShell = WScript.CreateObject("WScript.Shell") 

WshShell.Run "%COMSPEC% /C ShadowSpawn.exe " & quelle & _
    " t: rsync -rltDv --log-file=rsync.log--link-dest=/" & ziel & _
    "/%last_run% /cygdrive/t/* " & ziel & _
    " > c:\users\example\desktop\vbs\rsync\bin\vss1.log ", 0, True

'''''''''''''''''''''
'Hier möchte ich die gerade erstelle log Datei auf Stichwörter wie z.B error
'untersuchen. Falls error in der log datei vorhanden ist soll es mir eine Abbruch
'mail schicken. Ansonsten eine email das alles gut durchgelaufen ist

ergenbis = InStr(1, vss1, error, 1)

'If Ergebnis <> 0 Then  'Email verschicken das alles durchgelaufen ist
    oEmail.Configuration = oConf
    oEmail.To = recipient
    oEmail.From = sender
    oEmail.ReplyTo = sender
    oEmail.Subject = subject 
    oEmail.HTMLBody = message2
Else   'abbruchmail verschicken
    oEmail.Configuration = oConf
    oEmail.To = recipient
    oEmail.From = sender
    oEmail.ReplyTo = sender
    oEmail.Subject = subject 
    oEmail.HTMLBody = message3
End If

oEmail.Send

Set oConf = Nothing
Set oEmail = Nothing

1 ответ

Использование Option Explicit чтобы избежать грубых ошибок, таких как

ergenbis = instr(1, vss1, error, 1)
if Ergebnis <> 0 then  'Email verschicken das alles durchgelaufen ist

Подумайте о разнице между именем (переменная, файл) и содержанием (переменная, файл).

Напишите простой тестовый скрипт, который применяет InStr() к файлу / каждой строке файла.

Другие вопросы по тегам