2017-12-09 7 views
0

shadowcopy.exeでバックアップを作成し、それらをrsyncで特定の宛先にコピーするVBSスクリプトを開発しようとしています。 同じスクリプトで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 = "[email protected]" 
authpass = "123" 
smtpserver = "server" 
recipient = "[email protected]" 
sender = "[email protected]" 
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()をファイルの各行/ファイルの各行に適用する簡単なテストスクリプトを作成します。

関連する問題