为什么考虑这种情况
在 Active Directory 中已找到运行不受支持的操作系统版本的计算机。 强烈建议将这些计算机升级到受支持的操作系统。 不支持 Windows Vista 和更低版本,且未提供适用于它的任何更新。 Microsoft 未对不再支持的 Windows 版本执行测试。 Windows Server 2008、Windows Server 2008 R2 和 Windows Server 2012 的默认安全设置得到了改进,而且这些安全设置不适用于 Windows NT 4.0。 这将阻止 Windows NT 4.0 计算机建立和维护域加入和安全通道连接,而且与 Windows NT 4.0 域的信任关系也将失败。
观看客户工程师解释问题
上下文和最佳做法
Active Directory 中存在的计算机对象指出其正在运行 Windows 2003 或更低版本。 这些可能是旧的计算机对象或者可能是仍存在于该环境中的活动的服务器或工作站。
Microsoft 未对不再支持的 Windows 版本执行测试。
从 Windows Server 2008 开始的默认安全设置得到了改进。 这些安全选项不适用于 Windows NT 4.0,它们会阻止创建和维护域加入及安全通道连接。 与 Windows NT 4.0 域之间的信任关系也会失败。
当基于 Windows NT 4.0 的计算机尝试使用 NETLOGON 服务建立与基于 Windows Server 2008 的域控制器的安全通道时,该操作会失败。 如果硬件或软件使用 Windows NT 4.0 中使用的加密算法,则硬件或软件可能无法建立与基于 Windows Server 2008 的域控制器的安全通道。
建议措施
从 Active Directory PowerShell 运行下面的示例 PowerShell 命令,以获取不再受支持的所有计算机的列表:
$OSInfo = "*2008*",
"*Windows 10*",
"Windows Server 2019*",
"Windows Server 2016*",
"*Windows 8*",
"*Windows 7*",
"*xp*",
"*vista*",
"*Windows NT*",
"*2000*",
"*2003*"
#用于 Win 10 和 Windows Server 半年频道枚举
$BuildInfo = "*(10586)",
"*(15063)"
"*(14393)",
"*(10240)",
"*(9200)"
Foreach ($OS in $OSInfo) {
$PossibleEOLmachines = Get-ADComputer -Filter {operatingsystem -like $OS} -Property Name,OperatingSystemVersion,OperatingSystem,OperatingSystemServicePack,lastlogontimestamp
#筛选出 Windows 10 / Server SAC 频道仍受支持
If ( ($PossibleEOLmachines.OperatingSystem -like "Windows 10*") -or ($PossibleEOLmachines.OperatingSystem -like "Windows Server 2016*") -or ($PossibleEOLmachines.OperatingSystem -like "Windows 8*") -or ($PossibleEOLmachines.OperatingSystem -like "Windows Server 2019*") ){
foreach ($Build in $BuildInfo) {
$EOLMachines += $PossibleEOLmachines | Where-Object {$_.operatingSystemVersion -like $Build}
}
} else { $EOLMachines = $PossibleEOLmachines }
foreach ($machine in $EOLmachines) {
[pscustomobject]@{
Name = $machine.name
OperatingSystem = $machine.OperatingSystem
OperatingSystemServicePack = $machine.OperatingSystemServicePack
OperatingSystemVersion = $machine.OperatingSystemVersion
lastlogontimestamp = [datetime]::FromFileTime($machine.lastlogontimestamp)
}
}
Remove-Variable EOLMachines
}