我正在寻找一个可以在关闭 Windows 更新服务的情况下在网络上查找服务器的 PS 脚本。我是 PS 新手,因此任何帮助都非常感谢。
答案1
您需要一份包含所有服务器名称的列表。没有任何东西可以轻松“爬取”您的网络。(请参阅文章底部以了解如何轻松获取此信息)
对于单个实例,或者抽查服务器,您可以通过以下方式检查 Windows 更新服务的状态:get-service wuauserv -computername MyServer01 | select Displayname,Status
现在,让我们扩展它并让它针对我们提供的列表中的每台计算机运行。
首先,让我们列出我将要命名的计算机名称c:\temp\servers.txt
。这是该文件内容的示例。所有我的域计算机名称都放在一个新行上。
Server01
Server02
Server03
Server04
好的,现在我们已经制作了这个文件,我们需要制作一个 powershell 脚本,该脚本获取列表并在之前的 get service 命令上进行迭代。将以下内容保存为 .ps1 文件。
$computernames = get-content “c:\temp\servers.txt”
foreach ($computer in $computernames) {
Get-Service wuauserv -computername $computername | Where-Object {$_.Status -ne "Running"}
}
现在,您应该获得每个服务器的结果和 Windows 更新服务器的状态。
笔记您应该以域管理员身份登录才能正常工作。
要获取网络上所有计算机的列表,您可以下载 RSAT (https://support.microsoft.com/en-us/help/2693643/remote-server-administration-tools-rsat-for-windows-operating-systems),这将允许您导入 powershell 模块来运行命令。要获取域中的所有计算机名称,请执行以下操作:
import-module activedirectory
Get-ADComputer -Filter {OperatingSystem -Like “Windows Server*”} -Property * | Format-Table Name