我的脚本所做的是首先检查C:\ Windows \ System32 \ winevt \ Logs中的任何存档事件文件是否早于7天。如果他们删除它们。VBScript适用于Windows 7 Professional,不适用于Windows Home Premium
它所做的第二件事是任何剩余的Archive * .evtx文件(比7天更新的文件),它会压缩并发送到您指定的任何路径。
现在我的问题在于我的桌面运行Windows 7专业版,并且脚本昨天晚上正在运行时保持100%正确。现在我的笔记本电脑运行Windows Home Premium,因此在今天的工作中,当突然尝试从我的笔记本电脑运行脚本时,它无法工作。
它会使zip文件处于正确的路径,但它实际上不会在zip文件中放入任何东西。
现在在家里,我不得不以管理员身份运行该脚本才能使其运行,这需要我在网上发现的注册表编辑,甚至在右键单击.vbs时添加“以管理员身份运行”按钮文件。 (Wierd,这是不存在,但无论如何)
所以我在我的笔记本上做了同样的编辑,试图再次运行它,并发生了同样的事情。空的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)
我希望是这样。在开始这个过程之前,我确保保存一个以Archive开始的事件文件,以便它能够找到一些东西。自从周末开始再看看它,并没有试图修复它。 – parchambeau