私のスクリプトが行うことは、最初に、C:\Windows\System32\winevt\Logs にアーカイブされたイベント ファイルが 7 日より古いかどうかを確認することです。それらが存在する場合は、それらを削除します。
2 番目に行うことは、残りの Archive*.evtx ファイル (7 日より新しいファイル) を圧縮して、指定したパスに送信することです。
さて、私の問題は、私のデスクトップで Windows 7 Professional が実行されており、最後の仕上げを行っている昨夜、スクリプトが 100% 正しく実行されていたという事実にあります。現在、私のラップトップは Windows Home Premium を実行しているため、今日の職場でラップトップからスクリプトを実行しようとすると、突然機能しなくなります。
正しいパスに zip ファイルを作成しますが、実際には zip ファイルに何も入れません。
現在、自宅でスクリプトを管理者として実行して機能させる必要がありました.vbsファイルを右クリックしたときに「管理者として実行」ボタンを追加するために、オンラインで見つけたレジストリ編集を行う必要がありました。(これはまだそこにないという奇妙なことですが、何でも)
そこで、ラップトップで同じ編集を行い、再度実行しようとしたところ、同じことが起こりました。正しいパスにある空の zip ファイル。
次に、UAC が何かをいじっていると考えました。そのため、ラップトップで UAC をオフにしてから管理者として実行しましたが、それでも同じ問題が発生しました。自宅ではまだ UAC がオンになっていて、スクリプトが機能しているため、何が問題なのかまったくわかりません。
次に、ラップトップで C: ドライブまたはそのような奇妙なものにアクセス許可の問題が発生している可能性があると考えました。そのため、管理者として cmd を開き、「takeown」を実行して、管理者によるドライブへのアクセスが許可されていることを確認しました。
その後、スクリプトを再度実行しましたが、同じ問題が発生しました。
なぜ実行されないのか、今はほとんど考えていません。仕事から家に帰ったら、デスクトップでもう一度試して、まだ機能するかどうかを確認します。(スクリプトに変更を加えていないはずです)
誰かがここで私を助けることができれば、それは素晴らしいことです. 今日までにこれをすべて完了し、スケジュールされたタスクとして設定して実行を開始したいと思っていましたが、さらに問題が発生するようです.
スクリプトは以下にあります。
Option Explicit
Dim oFSO, oFolder, sDirectoryPath, sDestinationPath, sOutputFilename, Shell, sFileExt, sFilePrefix
Dim oFileCollection, oFile, sDir
Dim iDaysOld
Set Shell = WScript.CreateObject("WScript.Shell")
'Specify Directory Path From Where You want to clear the old files 'Also where you want destination for zip
sDirectoryPath = "C:\Windows\System32\winevt\Logs\"
sDestinationPath = "C:\Script\files\outzips\"
sOutputFilename = shell.ExpandEnvironmentStrings("%COMPUTERNAME%")
sFileExt = ".evtx"
sFilePrefix = "Archive*"
' Specify Number of Days Old File to Delete
iDaysOld = 7
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sDirectoryPath)
Set oFileCollection = oFolder.Files
For each oFile in oFileCollection
'Specify the Extension of file that you want to delete 'and the number with Number of character in the file extension
If LCase(oFSO.GetExtensionName(oFile.Name)) = ".evtx" Then
If oFile.DateLastModified < (Date() - iDaysOld) Then
oFile.Delete(True)
End If
End If
Next
Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
Dim Command, RetVal
Dim d : d = Date()
Dim dateStr : dateStr = Year(d) & "-" & Right("00" & Month(d), 2) & "-" & Right("00" & Day(d), 2)
Dim t : t = Time()
Dim timeStr: timeStr = Hour(t) & "-" & Right("00" & Minute(t), 2) & "-" & Right("00" & Second(t), 2)
Command = """C:\Program Files\7-zip\7z.exe"" a " & sDestinationPath & sOutputFilename & "-" & dateStr & "-" & timeStr & ".zip " & sDirectoryPath & sFilePrefix & sFileExt
RetVal = Shell.Run(Command,0,true)