我最近在我的工作场所设置了一个新的 SCCM 2012 环境,现在我们正在创建我们的应用程序以进行分发。
某些应用程序是使用脚本设置的。在测试过程中,出现问题,需要更改应用程序的内容。分发点继续向客户端提供旧内容。
我想知道当应用程序的内容更改时更新 DP 的正确程序是什么。我曾尝试重新分发到分发点并删除旧版本,但无济于事。
在我的工作场所,我们继承了一台运行 Windows 2008 R2 的文件服务器。(不幸的是核心服务器,所以没有 GUI)
去年我们决定为用户提供以前版本的文件会很好。所以我们给了 VSS 一个单独的卷,占数据卷空间的 10%。(分别为 300GB 和 3TB)我们设置了一个计划任务,每天拍摄两个 VSS 快照并且一切正常。以前的版本显示得很好。
最近,以前的版本刚刚消失,我找不到原因。我检查了管理共享是否有效,它们是。当我列出 VSS 编写器时,所有编写器都显示稳定状态,没有最后一个错误。当您使用 vssadmin 列出它们时,也会显示 VSS 阴影。
事件日志有时会显示来自 volsnap 的一些错误,指出“卷 D 上的刷新和保持写入操作:等待释放写入命令时超时”。我的猜测是这只是由于创建阴影时的活动。它们是在任何情况下创建的。
还有什么我可以检查的吗?
我们在两台几乎相同的文件服务器上执行此操作,而在另一台上,一切仍然正常。
情况
在我们的组织中,我制作了一个 GPO 来创建计划任务。此任务在两个用户帐户登录时触发。
它执行一个 powershell 脚本来更改网络连接的 DNS 服务器。(为了阻止这些用户的一些网站,使用 dnsmasq。我知道这不是一个防弹解决方案,但它已经足够了。)
计划任务的操作是以下命令:
C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe
这些是参数:
-ExecutionPolicy Bypass –NoProfile –Command "& {C:\ProgramData\ORGNAME\scripts\SetDNS.ps1}" > C:\ProgramData\ORGNAME\scripts\SetDNS.log
如您所见,输出被发送到日志文件。
这是脚本的内容:
$wmi = get-wmiobject Win32_NetworkAdapterConfiguration -filter "ipenabled = 'true'"
foreach($adapter in $wmi)
{
if($adapter.description -NotLike "*VMware*")
{
$adapter.SetDNSServerSearchOrder("XXX.XXX.XXX.XXX")
}
}
invoke-expression -command "c:\windows\system32\ipconfig /flushdns"
Run Code Online (Sandbox Code Playgroud)
问题
问题是这很好用,大约 10 次中有 9 次。当它不起作用时,任务调度程序仍然报告退出代码 0,但似乎脚本甚至没有开始执行,因为没有任何反应并且没有创建日志文件。
一些额外的信息
我尝试过的一些事情
我想也许是任务调度程序触发脚本太快了,有些事情可能还没有初始化,所以我尝试设置 30 秒的延迟。
每 5 分钟重新运行一次任务,持续 15 分钟。
任务失败时重新启动任务,这显然不起作用,因为 powershell.exe 似乎返回错误代码 0。