繁体   English   中英

如何通过脚本检查服务器的RDP屏幕来检查服务器是否正在运行Windows 2003或Windows 2008?

[英]How to check if a server is running windows 2003 or Windows 2008 by checking its RDP screen, through script?

我们最近收购了一家小型公司,该公司拥有1500台服务器,尽管我们的团队处于域中,但我们的团队目前无法访问这些服务器。 我们需要找出运行Windows 2k3的服务器数量以及运行Windows 2k8的服务器数量。 我知道这两个版本的RDP屏幕都是不同的,例如:如果我们在Win2k3计算机上RDP,它会首先发出警告通知,一旦单击“确定”,它将带我们进入凭据屏幕,但是在Win2k8情况下,它将直接将我们带到Crendentials,这是服务器上操作系统的证明。 对于1500台服务器手动执行此操作非常耗时。 我们可以使用脚本来查找Windows操作系统版本来实现此RDP屏幕逻辑吗?

我可以想象一个算法是这样的:

  1. 输入服务器名称。
  2. 为该服务器调用mstsc
  3. 验证对话框是否直接提示输入凭据?
  4. 如果是这样,请打印Windows 2k8,否则打印2k3 / 2k。

如果此逻辑在一台服务器上成功,则可以在所有服务器的foreach循环中使用它,并在Excel中导出。

我假设有1500台服务器,并且已经有一个Active Directory。 在这种情况下,您应该能够简单地对AD运行查询以检索所需的信息:

Import-Module ActiveDirectory

$server = 'somehostname'
$dc = '...'  # domain controller of trusted domain

$fltr = "OperatingSystem -like '*server*'"

Get-ADComputer -Filter $fltr -Property OperatingSystem -Server $dc |
  Where-Object { $_.Enabled } |
  Select-Object Name, OperatingSystem |
  Sort-Object OperatingSystem, Name

将结果通过管道Export-CsvExport-Csv以创建可以导入Excel的CSV文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM