好吧,
我正在尝试编写一个远程 GPO 脚本,该脚本将从我们的一台管理机器向某些服务器推送 GPUPDATE 命令。经过一番谷歌搜索,我找到了一个我尝试改编/运行的脚本。
然而问题是当我通过批处理文件运行它时,它在执行第 9 行时出错(公平地说,它没有错误,它只是退出脚本)
通过 pastebin 链接到脚本: http://pastebin.com/ugmC9uEr
脚本代码:
@echo on
XPGPORef1=gpupdate.exe /Target:User /force
XPGPORef2=gpupdate.exe /Target:Computer /force
Win2kGPORef1=secedit.exe /refreshpolicy user_policy
Win2kGPORef2=secedit.exe /refreshpolicy machine_policy
For /f “Tokens=*” %%a in (ComputerList.txt) Do (
SET Comp_name=%%a
Ver.exe \\%comp_name% > Hostver.txt
Find /I “XP” < Hostver.txt > CheckCC.txt
IF %errorlevel% == 0 (
Psexec.exe \\%comp_name% Gpupdate.exe /Target:User /force
Psexec.exe \\%comp_name% Gpupdate.exe /Target:Computer /force
) ELSE (
Psexec.exe \\%comp_name% secedit.exe /refreshpolicy user_policy
Psexec.exe \\%comp_name% secedit.exe /refreshpolicy machine_policy
)
pause
如果我通过 DOS 提示窗口手动运行第 9 行代码,例如执行以下操作:
For /f “Tokens=*” %a in (ComputerList.txt) Do ( echo %a)
它将正常运行并回显列表中的所有计算机名称。
有人介意帮我一下吗?:)
干杯
PS:该脚本将尝试对 Win2k8/Win2K3 和 Win2K 计算机进行 GPUPDATE。
答案1
降低组策略刷新间隔gpupdate
在这些服务器上只需 5-10 分钟,而不是在所有服务器上执行远程操作。
答案2
我明白远程让机器更新通过组策略获得的设置的能力是多么有益。但是远程为用户执行 gpupdate 不起作用。您需要在用户帐户的上下文中执行此操作。我怀疑您主要感兴趣的是计算机配置的 gpupdate。
像http://www.specopssoft.com/products/specops-gpupdate感兴趣吗?免责声明我还没有用过它。