如何从下游 WSUS 服务器中删除计算机?
2024-03-25 17:17:31
如何有效地从下游 WSUS 服务器中删除计算机
对于 IT 管理员来说,维护分布式 Windows Server 更新服务 (WSUS) 环境至关重要,以确保所有计算机都能收到必要的更新和补丁。有时,计算机需要从下游服务器中删除,例如,当它们不再属于组织或位置已更改时。本博客文章将逐步指导您使用 PowerShell 有效地完成此任务。
步骤 1:连接到下游 WSUS 服务器
首先,您需要使用 PowerShell 连接到需要删除计算机的下游 WSUS 服务器。您可以使用 Get-WsusServer
cmdlet 来获取服务器对象:
$connectDownstreamServer = (Get-WsusServer -Name $wsusDownstreamServer.FullDomainName -PortNumber 8530)
步骤 2:获取计算机目标范围
接下来,您需要创建计算机目标范围,以确定要删除的计算机。这是通过创建 ComputerTargetScope
对象并指定时间范围来实现的:
$computerScopeIn = New-Object Microsoft.UpdateServices.Administration.ComputerTargetScope
$computerScopeIn.ToLastReportedStatusTime = (Get-Date).AddDays(-8)
步骤 3:获取计算机列表
使用获取计算机目标范围 (GetComputerTargets
) 方法,您可以获取计算机列表。如果您希望限制结果,还可以使用 GetComputerTargets
方法,它允许您根据时间范围过滤结果:
$computerList = $connectDownstreamServer.GetComputerTargets()
$computerListScope = $connectDownstreamServer.GetComputerTargets($computerScopeIn)
步骤 4:遍历计算机列表
遍历计算机列表并检查它们是否属于您要删除它们的 OU。这可以通过使用 ForEach
循环来实现:
Foreach($computer in $computerList)
{
if($OUstock -contains $computer.FullDomainName)
{
$computer.Delete()
}
}
步骤 5:遍历计算机目标范围
对于那些不在 OU 中但没有同步的计算机,您需要删除其计算机目标范围。这也可以通过使用 ForEach
循环来实现:
Foreach($computerScope in $computerListScope)
{
$computerScope.Delete()
}
示例代码
以下示例代码演示了如何使用 PowerShell 从下游 WSUS 服务器删除计算机:
$UpdateServer = "wsusserver.domain.local"
$Port = 8530
$UseSSL = $false
$ExclusionPeriod = 0
# 获取 Active Directory 中 OU Stock 中的计算机
$OUstock = (Get-ADComputer -SearchBase "OU=Stock,DC=domain,DC=lan" -Filter * -SearchScope Subtree).DNSHostName
# 连接到 WSUS 服务器
[reflection.assembly]::LoadWithPartialName('Microsoft.UpdateServices.Administration') | Out-Null
$wsusMaster = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($UpdateServer, $UseSSL, $Port)
# 获取下游服务器列表
$wsusDownstreamServers = $wsusMaster.GetDownstreamServers()
# 遍历下游服务器
foreach ($wsusDownstreamserver in $wsusDownstreamServers)
{
# 连接到下游服务器
$connectDownstreamserver = (Get-WsusServer -Name $wsusDownstreamserver.FullDomainName -PortNumber 8530)
# 创建计算机目标范围
$computerScopeIn = New-Object Microsoft.UpdateServices.Administration.ComputerTargetScope
$computerScopeIn.ToLastReportedStatusTime = (Get-Date).AddDays(-8)
# 获取计算机列表
$computerList = $connectDownstreamserver.GetComputerTargets()
$computerListScope = $connectDownstreamserver.GetComputerTargets($computerScopeIn)
# 删除 OU Stock 中的计算机
foreach ($computer in $computerList)
{
if ($OUstock -contains $computer.FullDomainName)
{
$computer.Delete()
}
}
# 删除未同步的计算机
foreach ($computerScope in $computerListScope)
{
$computerScope.Delete()
}
}
结论
通过按照这些步骤,您可以有效地使用 PowerShell 从下游 WSUS 服务器中删除计算机。通过定期清理您的 WSUS 环境,您可以优化性能并确保计算机始终收到必要的更新。
常见问题解答
1. 我可以看到已删除的计算机的列表吗?
否,PowerShell 中没有内置功能可以列出已删除的计算机。但是,您可以创建自己的日志文件来记录已删除的计算机名称。
2. 可以使用其他方法删除计算机吗?
是的,您还可以使用 WSUS 管理控制台或 Microsoft Endpoint Manager 删除计算机。
3. 删除计算机是否会影响其更新状态?
是的,删除计算机将停止其从 WSUS 服务器接收更新。如果您计划重新添加计算机,您需要手动批准任何错过的更新。
4. 我无法从下游服务器中删除计算机。我该怎么办?
确保您已连接到正确的服务器并拥有所需的权限。您还应该检查计算机是否属于某个组,该组可能阻止其被删除。
5. 自动化删除过程的最佳实践是什么?
您可以使用定期执行的脚本或 PowerShell 作业来自动化删除过程。这将确保在特定时间间隔后自动删除符合删除标准的计算机。