1

私のスクリプトが行うことは、最初に、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)
4

1 に答える 1

0

ああ、あなたのフォルダ C:\Windows\System32\winevt\Logs に Archive*.evtx のようなファイルがないのではないでしょうか? 通常はありません。何らかの理由でデスクトップにあると思いますので、スクリプトはそこで動作します。command = "...." の後に wscript.echo を配置して、コンソールでこれを実行してみてください。コマンドが実行されない理由を見つけるのは簡単です。コマンドが実行される可能性が高い場合は、スクリプトでも実行されます。

于 2012-06-30T21:15:42.490 に答える