如何修复 thix 批处理脚本
Posted
技术标签:
【中文标题】如何修复 thix 批处理脚本【英文标题】:How can i fix thix batch script 【发布时间】:2022-01-18 19:40:07 【问题描述】:您好,我的脚本有问题,我想从该脚本中获得以下内容。首先,我想创建一个文件夹,其中包含特定于我的计算机的月份,并在该文件夹中记录事件日志,但即使脚本以管理员权限运行也没有任何安全性,但仅保存应用程序事件和系统事件。下面是我的脚本
@echo off
rem Script starts here
rem Timestamp Generator
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set "dt=%%a"
:: Format the WMIC command output in YY_MM_DD_hr_mn format
set "YY=%dt:~0,4%"
set "MM=%dt:~4,2%"
set "DD=%dt:~6,2%"
set "hr=%dt:~8,2%"
set "mn=%dt:~10,2%"
:: Format the MM (month-number) to display the month-name
if %MM%==01 set MM=Ianuarie
if %MM%==02 set MM=Februarie
if %MM%==03 set MM=Martie
if %MM%==04 set MM=Aprilie
if %MM%==05 set MM=Mai
if %MM%==06 set MM=Iunie
if %MM%==07 set MM=Iulie
if %MM%==08 set MM=August
if %MM%==09 set MM=Septembrie
if %MM%==10 set MM=Octombrie
if %MM%==11 set MM=Noiembrie
if %MM%==12 set MM=Decembrie
set "today_date_time=%MM%_%YY%"
echo %today_date_time%
mkdir .\%today_date_time%
rem Set the timestamp format
wevtutil epl System %MM%_%YY%\system.evtx
wevtutil epl Application %MM%_%YY%\application.evtx
wevtutil epl Security %MM%_%YY%\security.evtx
wmic nteventlog where filename='system' cleareventlog
wmic nteventlog where filename='application' cleareventlog
wmic nteventlog where filename='security' cleareventlog
rem End of Script
【问题讨论】:
您的代码对我来说可以正常工作。尝试打开命令提示符并从那里运行脚本,而不是双击它来查看是否收到错误消息。 我不明白你为什么这样做,为什么不选择其中一个呢?例如,使用WMIC.exe
,您可以将nteventlog
与BackUpEventLog
方法一起使用,就像您打算使用ClearEventLog
方法一样。或者使用wevtutil.exe
,您可以一次性完成,%SystemRoot%\System32\wevtutil.exe cl Application /bu:"%today_date_time%\application.evtx"
,它将在清除事件之前备份事件。至于Security
,你确定你有吗? %SystemRoot%\System32\wbem\WMIC.exe nteventlog Get FileName
应该告诉你那些存在的。
如您所说,我从 cmd 使用管理员权限运行了该程序,但它没有为我生成名为 Security 的事件。忘记一张图片ibb.co/JH5rQYK,我想问你的是如何在月份文件夹中创建一个子文件夹,并且这个新生成的文件夹应该有计算机的名称。
Compo 你可以在代码中给我看,我不明白你的意思我是批处理脚本的新手。
当然是@Hadad,请给我几分钟的时间在答案区域输入内容。
【参考方案1】:
根据您的评论请求,这是一个没有所有 WMIC.exe 内容的重写示例:
@Rem Start of script.
@Echo Off
SetLocal EnableExtensions
Rem End script if end user is not running with the required permissions.
%SystemRoot%\System32\reg.exe Query "HKU\S-1-5-19" 1>NUL 2>&1 || GoTo :EOF
Rem Add the current directory to the stack and make this scripts location the current directory.
PushD "%~dp0."
Rem Generate a datestamp variable with a string formatted as yy_MMMM.
Set "DateStamp="
For /F %%G In ('%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile "Get-Date -F 'yy_MMMM'" 2^>NUL') Do Set "DateStamp=%%G"
Rem End script if datestamp variable was not defined.
If Not Defined DateStamp GoTo :EOF
Rem Backup and clear event logs.
If Not Exist "%DateStamp%\" MD "%DateStamp%"
For %%G In (Application Security System) Do %SystemRoot%\System32\wevtutil.exe cl %%G /bu:"%DateStamp%\%%G.evtx"
Rem Make the previous directory in the stack the current directory.
PopD
Rem End of Script.
如果最终用户没有以管理员身份运行,则该脚本被设计为关闭。备份文件也将保存到与正在运行的批处理文件相同的位置。
【讨论】:
这对我不起作用ibb.co/hKyVH1z这里有一张带有cmd的照片 我在上面的代码@Hadad 中修正了我的错字。还请尝试从其他地方运行批处理文件,而不是从网络位置\\VBOXSVR\share-folder
。我会假设它无法按原样写入该位置。如果可行,我会考虑修改上述内容。
还是不行,我也在电脑上跑了代码,还是不行
如果需要,请从您的原始位置尝试上面的修订版本。如果它没有达到预期的效果,而不是仅仅说“它不起作用”,尝试为其他读者或我自己提供足够的信息来找出可能的原因。我们期望所有消息、调试信息、是否创建了任何文件等。
我很抱歉这个表达式,它不会为我生成 3 个日志中的任何一个,我以管理员权限运行脚本,这是一张图片ibb.co/tmFDn1h以上是关于如何修复 thix 批处理脚本的主要内容,如果未能解决你的问题,请参考以下文章