作为一家公司,我们购买了新的防病毒软件,并希望通过组策略将其安装到我们所有的计算机上。
安装程序是一个 .exe 文件,并且我们提供了一个在启动时使用的 .bat 文件,但我注意到该脚本并没有运行(大多数时候)。
我尝试解决问题,并部分修改了脚本以记录运行时的情况,这让我发现问题不在于脚本本身,而在于脚本甚至没有运行
@echo off
For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%b-%%a)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
ECHO [%mydate%_%mytime%] %USERNAME% sophos script run>>"\\server11\client_install\Sophos\Client\Logger.txt"
SET MCS_ENDPOINT=Sophos\Management Communications System\Endpoint\McsClient.exe
IF "%PROCESSOR_ARCHITECTURE%" == "x86" GOTO X86_PROG
IF NOT EXIST "%ProgramFiles(x86)%\%MCS_ENDPOINT%" GOTO INSTALL
exit /b 0
:X86_PROG
IF NOT EXIST "%ProgramFiles%\%MCS_ENDPOINT%" GOTO INSTALL
exit /b 0
:INSTALL
ECHO [%mydate%_%mytime%] %USERNAME% sophos installation>>"\\server11\client_install\Sophos\Client\Logger.txt"
pushd \\server11\client_install\Sophos\Client
SophosSetup.exe --quiet
Popd
脚本没有任何问题,每个人都有文件和文件夹的读取权限。并且出于测试目的,每个人都有 Logger.txt 的写入权限。
最让我困惑的是,这个脚本有时会运行。该策略已与 3 个组织单位相关联,总共包含 40 台计算机(一些笔记本电脑,一些台式机)。今天早上有 2 台计算机运行了该脚本,但今天至少有 30 台计算机启动了该脚本。
我对服务器和组策略还很陌生,所以下面提到和尝试的一切对我来说都是新的。
我尝试过的事情:
- 将其更改为在登录时而不是启动时运行脚本(并将策略链接到存储用户的 OU)
- 启用“异步运行启动脚本”
- 将批处理文件存储在与 .exe 相同的文件夹中
- 将批处理文件存储在策略提供的文件夹中
- 检查了gpresult(可以看到策略)
- 将启动更改为在启动后 0 分钟运行
- 将启动程序改为在启动后 30 分钟后运行
服务器是 Windows Server 2012 R2,所有计算机都运行 Windows 10 Pro (1803)
当前设置: 政策截图
答案1
默认情况下,工作站在启动时不会等待网络,因此脚本执行的阶段通常在网络初始化时就已经过去了。
组策略管理控制台:
计算机 > 管理模板 > 系统 > 登录
计算机启动和登录时始终等待网络:已启用
此外,您应该复制安装程序本地并从本地文件夹执行。