我想configurationWSUS,以便员工到达主要位置时使用WSUS下载内容,当他们位于其他位置(不同位置/家中等)时,使用Windows更新。
在这个问题中build议使用subnets/locations
来做到这一点。 这是很好的解决scheme,但是我们决定只有大约10-15台电脑会automatic installation of updates
,而其余的会得到update/download
信息。
所以我们处于这样一种情况,我们应该使用GPO进行定位,而GPO进行OU组合(自动球员将获得他们自己的OU)。
有没有办法configurationWindows客户端,以便WSUS将采取从2 GPO的信息? 还有,我们不知道subnets
Home
/客户位置呢? 我们可以以某种方式configurationGPO,以便在已知subnets/locations
以外的计算机将使用来自Microsoft的Windows更新打开另一个GPO,但保留“自动下载”与“仅下载”(取决于员工)的“select”。
我们select为后台员工安装所有东西,只为程序员(这是公司的90%)下载。
你需要多个GPOS。
至于连接到WU,你需要有一个公司的政策,远程用户VPN在一定的时间间隔,以方便更新。 在DMZ中创build一个没有内容的副本服务器,这样系统就可以从微软更新服务器获取内容(所以你不需要连接到VPN来获取更新
我用wsus做了这个,发现奇怪的事情出错了。 你想使用wsus批准更新,但从MS下载?
我在这里设置了一个这样的地方:主办公室有自己的wsus服务器,分支机构的PC有一个辅助的wsus服务器。 辅助服务器被configuration为不下载任何内容,批准从主服务器链接。 我使用GPO将PC分配给一个或另一个。
我发现,将笔记本电脑带到主办公室的用户会在主服务器上显示一次,并且永远无法连接到辅助的wsus服务器。 我将不得不从主要节点删除节点,以允许它同步。
那些用笔记本去分支机构的人也会这样。
一旦个人电脑已经联系了一个特定的wsus节点,它似乎“坚持”,你不能切换到另一个….但并不总是。 通常这会纠正自己。 据我所知这应该工作,但我一直find几个月没有更新的节点。 在wsus中删除节点将解决问题。
总而言之 – 它根本不能很好地工作。
当人们离开现场(但通过vpn连接)时,gpos应该直接将用户引导到MS – 但是我会发现他们会继续使用旧的GPO,有时甚至在gpupdate / force之前几个月才能纠正这种情况。 这是一个组策略的问题,但我从来没有找出为什么发生这种情况。
我切换到一个单独的服务器,向所有人发送补丁。 你猜怎么了? 没有人注意到这个区别,但是一切都很完美。
恕我直言,这是不可能做到这一点使用香草WSUS。
但是,如果WSUS服务器不可访问,则可以编写一个将Windows更新configuration为故障切换备选的脚本。
使用GPO,将Windows任务计划程序configuration为在机器启动时使用SYSTEM权限运行此( 松散testing的 )powershell脚本。
# Check server availability function pingServer ([String]$server) { Write-Host "Checking server $server" $ping = New-Object System.net.networkinformation.ping 1..3 | foreach { write-host $result = ($ping.send($server)).status.toString(); sleep 1 } return "$result" } # Discover WSUS Server address function getWSUSServer { $inserver = (get-itemproperty -erroraction "SilentlyContinue" hklm:\software\microsoft\policies\windows\windowsupdate-bkp\ WUServer).WUServer $outserver = (get-itemproperty -erroraction "SilentlyContinue" hklm:\software\microsoft\policies\windows\windowsupdate\ WUServer).WUServer if ($inserver){ $wuserver = $inserver } elseif ($outserver) { $wuserver = $outserver } else { throw "Could not find nor internal or external WSUS configuration." } Write-Host "WUServer is $wuserver" return $wuserver } # Change between locations configuratons function changeLocation ([String]$location) { if ( $location -eq 'internal' ){ rename-item -erroraction "SilentlyContinue" hklm:\software\microsoft\policies\windows\windowsupdate -NewName "windowsupdate-bkp" Set-ItemProperty -erroraction "SilentlyContinue" hklm:\software\Policies\Microsoft\Windows\WindowsUpdate\AU UseWUServer 0 write-host "Location changed to $location." } elseif ( $location -eq 'external' ){ rename-item -erroraction "SilentlyContinue" hklm:\software\microsoft\policies\windows\windowsupdate-bkp -NewName "windowsupdate" Set-ItemProperty -erroraction "SilentlyContinue" hklm:\software\Policies\Microsoft\Windows\WindowsUpdate\AU UseWUServer 1 write-host "Location changed to $location." } else { trhow "Location can be either internal or external, not $location." } } # main if ( (pingServer(getWSUSServer)) -eq "Success") { Write-Host 'WSUS server available.' changeLocation ('internal') } else { Write-Host 'WSUS server unavailable.' changeLocation ('external') } Write-Host "End of script."