创建批处理文件以运行exe。并通过GPO启动/关闭输出到日志文件

时间:2014-01-16 21:42:57

标签: batch-file

我在创建批处理文件时遇到一些问题,我首先要删除.msi文件,然后运行.exe文件,这是我到目前为止所做的。

echo on 

title remove mimecast 3.5.6

if exist c:\windows\mimecastrem.tag goto alldone

msiexec.exe /x {86C4653D-E9B2-4421-8578-D2B953FFAEDA} /qn /L "C:\windows\mimecast.log"

start \\fcmsvr2\MimecastMSO\deploymimecast.exe /zap

echo. >c:\windows\mimecastrem.tag

:alldone

rem exit

如果我在DOS上运行它登录到它运行正常,我已经尝试将其添加到GPO启动和关闭并批处理运行但只删除.msi文件并且不会启动.exe,是有一种方法可以添加日志记录,以便我可以看到它为什么没有运行?

由于 大卫

2 个答案:

答案 0 :(得分:0)

创建包装器脚本以捕获输出

当我尝试从GPO运行批处理命令时,我通常有两个批处理文件:

  • 一个批处理文件可以完成所有工作。
  • 一个调用另一个并重定向所有输出。

这样,如果重要的批处理文件有语法问题(通常是由于变量的内容或机器上的其他条件),我仍然会在日志中看到一些内容。

<强> batch_worker.cmd

@ECHO OFF
SETLOCAL

@ECHO Proceeding with important tasks...
REM do other stuff (delete, install, etc.)

<强> batch_wrapper.cmd

CALL %~dp0batch_worker.cmd > C:\Windows\TEMP\batch_worker.log 2>&1

自卷曲

我偶尔使用的另一个选项是让脚本自行调用,重定向输出。

<强> batch_worker.cmd

@ECHO OFF
SETLOCAL

IF NOT "%_LOGGING%"=="1" (
    SET _LOGGING=1
    CALL "%0" %* > C:\Windows\TEMP\batch_worker.log 2>&1
    EXIT /B %ERRORLEVEL%
)

@ECHO Proceeding with important tasks...
REM do other stuff (delete, install, etc.)

答案 1 :(得分:0)

GPO中的网络文件

在Windows计算机上运行的任何启动脚本都将具有计算机帐户的网络标识(COMPUTERNAME$)。此帐户通常无法访问大多数网络资源。 GPO是一个例外。所有计算机帐户都可以访问GPO(存储为文件)。

如果您的脚本需要其他文件:

  • 将它们存储在世界可读的网络位置(或授予任何域成员RX访问权限)。
  • 使用GPO存储它们 创建/添加启动脚本时,GPMC管理单元使您可以访问脚本应驻留的网络位置(在SYSVOL下)。使用该UNC路径保存脚本需要访问的任何其他文件。