VBScript适用于Windows 7 Professional,而不是Windows Home Premium

VBScript适用于Windows 7 Professional,而不是Windows Home Premium,vbscript,zip,admin,uac,Vbscript,Zip,Admin,Uac,我的脚本所做的是,首先检查C:\Windows\System32\winevt\Logs中的任何存档事件文件是否早于7天。如果是,则删除它们 它要做的第二件事是压缩剩余的归档文件*.evtx文件(更新7天的文件),并发送到您指定的任何路径 现在我的问题在于,我的桌面运行的是Windows7 professional,昨晚我在做收尾工作时,脚本运行的100%正确。现在我的笔记本电脑运行Windows Home Premium,所以在今天的工作中,当我试图从笔记本电脑上运行脚本时,它突然不起作用 它

我的脚本所做的是,首先检查C:\Windows\System32\winevt\Logs中的任何存档事件文件是否早于7天。如果是,则删除它们

它要做的第二件事是压缩剩余的归档文件*.evtx文件(更新7天的文件),并发送到您指定的任何路径

现在我的问题在于,我的桌面运行的是Windows7 professional,昨晚我在做收尾工作时,脚本运行的100%正确。现在我的笔记本电脑运行Windows Home Premium,所以在今天的工作中,当我试图从笔记本电脑上运行脚本时,它突然不起作用

它将使zip文件位于正确的路径中,但实际上不会将任何内容放入zip文件中

现在在家里,我必须以管理员身份运行脚本才能使其正常工作,这需要我进行一次在线注册表编辑,甚至在右键单击.vbs文件时添加“以管理员身份运行”按钮。(我想这已经不存在了,但不管怎样)

所以我在我的笔记本电脑上做了同样的编辑,尝试再次运行,同样的事情发生了。正确路径中的空zip文件

所以下一步我想是UAC搞砸了。因此,我关闭了笔记本电脑上的UAC,然后作为管理员运行,但它仍然遇到同样的问题。在家里,我的UAC仍然处于打开状态,脚本也可以运行,所以我根本不知道问题出在哪里

然后我想也许在我的笔记本电脑上,我的C:drive或者类似的东西有权限问题。所以我以管理员的身份打开了cmd,并运行了一个“takeown”,以确保管理员可以访问该驱动器

然后再次运行脚本,仍然遇到相同的问题

我现在想不出为什么它不能运行了,当我下班回家后,我要在我的桌面上再次尝试它,看看它是否还能工作。(应该是的,我没有对脚本做任何更改)

如果有人能帮我,那太棒了。我希望在今天之前完成这一切,并将其设置为预定任务,以便它开始运行,但它似乎想给我带来更多问题

脚本如下所示:


选项显式
SO的Dim、oFolder、sDirectoryPath、SDDestinationPath、sOutputFilename、Shell、sFileExt、sFilePrefix
集合、文件、sDir的尺寸
昏暗的艾德索德
Set Shell=WScript.CreateObject(“WScript.Shell”)
'指定要清除旧文件的目录路径',以及要清除zip文件的目标位置
sDirectoryPath=“C:\Windows\System32\winevt\Logs\”
sDestinationPath=“C:\Script\files\outzips\”
sOutputFilename=shell.ExpandEnvironmentString(“%COMPUTERNAME%”)
sfilext=“.evtx”
sFilePrefix=“存档*”
'指定要删除的文件的天数
iDaysOld=7
Set of so=CreateObject(“Scripting.FileSystemObject”)
文件夹集=oFSO.GetFolder(sDirectoryPath)
集合oFileCollection=oFolder.Files
对于oFileCollection中的每个文件
“指定要删除的文件扩展名”以及文件扩展名中的字符数
如果LCase(oFSO.GetExtensionName(oFile.Name))=“.evtx”,那么
如果oFile.DateLastModified<(Date()-iDaysOld),则
oFile.Delete(True)
如果结束
如果结束
下一个
一组SO=零
文件夹集=无
集合集合=无
文件集=无
Dim命令,返回
尺寸d:d=日期()
Dim dateStr:dateStr=Year(d)&“-”和Right(“00”和Month(d),2)&“-”和Right(“00”和Day(d),2)
Dim t:t=时间()
Dim timeStr:timeStr=小时(t)&“-”和右(“00”和分钟(t),2)&“-”和右(“00”和秒(t),2)
Command=“””C:\Program Files\7-zip\7z.exe“a”&sDestinationPath&sOutputFilename&“-”&dateStr&“-”&timeStr&“.zip”&sDirectoryPath&sFilePrefix&sFileExt
RetVal=Shell.Run(命令,0,true)

Ahum。。是否您的文件夹C:\Windows\System32\winevt\Logs中没有类似Archive*.evtx的文件?通常没有,我想在你的桌面上,出于任何原因都没有,所以脚本在那里工作。
尝试将wscript.echo放在command=“..”之后,并尝试在控制台上运行此命令。在那里,可以更容易地找出命令不运行的原因,如果它运行的几率很高,它也会在脚本中运行。

我希望是这样。在开始这个过程之前,我确保保存一个以Archive开头的事件文件,以便它能够找到一些东西。从周末开始,我明天再看一次,还没试着修复它。
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)