我有一个批处理文件设置为通过
Windows Server 2008 R2中的任务计划程序运行.批处理文件用于旋转和压缩
MySQL日志,包含这些日志的文件夹使用Windows内置的EFS加密进行加密.我找到了一个VBS脚本,它将压缩(zip)一个文件夹,我用它来压缩旋转后的旧日志文件.如果我在命令行运行它,批处理文件运行正常.
问题是当我尝试让Task调度程序运行它时.我把它设置为每天运行一次,并且像我一样运行(我可以访问并可以查看加密的日志文件等).但是当任务运行时(无论是在预定的时间还是我手动运行任务),它在运行VBS脚本时会窒息,说它是未经授权的.当批处理文件调用CScript运行VBS脚本时,CScript是否作为同一个用户(我自己)运行?我只是从批处理文件中调用它,如下所示:
CScript zipIt.vbs %TEMPDIR% %ARCHIVEDIR%\%TARGETZIP%
以下是VBS脚本的内容:
Set objArgs = WScript.Arguments InputFolder = objArgs(0) ZipFile = objArgs(1) CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile,True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18,vbNullChar) Set objShell = CreateObject("Shell.Application") Set source = objShell.NameSpace(InputFolder).Items objShell.NameSpace(ZipFile).CopyHere(source) wScript.Sleep 2000
我对VBS或Windows管理一般都不是很了解,但我猜这个脚本在加密文件夹中创建一个新文件时遇到了麻烦.因为当我关闭文件夹加密时,它可以在任务计划程序中正常工作.我正在考虑使用“Runas”使用我自己的凭据调用CScript,但我不希望将我的密码存储在批处理文件中,因为其他用户可以访问这些文件(DatabaseAdmin等).在任务计划程序中,有一个“以最高权限运行”选项.这会解决这个问题吗?我正在避免这种情况,因为我认为我应该试着弄清楚如何让它以尽可能少的特权来工作.
更新:
在探索时,我发现我实际上没有能力解密MysqL日志文件,即使我对包含文件夹有这种能力(由cipher.exe / c验证).唯一具有未加密权限的帐户是SYSTEM.这可能是因为MysqL日志是由“MysqLAdmin flush-logs”工具创建的.据我了解,应用程序创建的文件由SYSTEM拥有(不是100%肯定).也许我必须使用“runas”在我的脚本中调用MysqLAdmin flush-logs.但是我有同样的问题,不想以明文形式将我的凭据存储在批处理文件中.我会尽力测试.
任何帮助表示赞赏.