当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell:显示所有 Windows 服务器的正常运行时间

作者:精品下载站 日期:2024-12-14 20:37:57 浏览:12 分类:玩电脑

PowerShell:显示所有 Windows 服务器的正常运行时间


假设您想要了解域中所有 Windows 服务器的正常运行时间。这是一个非常重要的信息,您应该定期查看服务的正常运行时间。你还记得5个9吗?我说的是 99,999% 的服务正常运行时间。众所周知,这一价值是优质服务的基准。

目标

我喜欢先从目标开始。然后,读者有机会了解目标是什么,并决定是否值得进一步阅读。正如所承诺的,我将向您提供一个 Powershell 命令,该命令可以从所有已启用域加入的 Windows 服务器获取所有正常运行时间。我创建了一个没有任何参数的小函数,名为 Get-UpTimeAllServer。

输出将如下所示:

[玩转系统] PowerShell:显示所有 Windows 服务器的正常运行时间

如果由于网络故障、缺少 WinRM 配置或任何其他原因而无法访问您的一台服务器,则该服务器将被标记为“无法访问服务器”。

[玩转系统] PowerShell:显示所有 Windows 服务器的正常运行时间

功能

上面显示的所有内容都包装在一个函数中。这里是:


function Get-UpTimeAllServer {

# .SYNOPSIS
# Get-UpTimeAllServer is an advanced Powershell function. It shows the uptime of all domain joined and enabled Windows servers.

# .DESCRIPTION
# Uses Get-CimInstance and a Try/Catch block.

# .PARAMETER
# None

# .EXAMPLE
# Get-UpTimeAllServer

# .NOTES
# Author: Patrick Gruenauer
# Web: https://a-d.site

$servers=(Get-ADComputer -Filter 'operatingsystem -like "*server*"-and enabled -eq "true"').Name
$result=@()

Foreach ($s in $servers) {

Try {

$up=(Get-CimInstance -ClassName win32_operatingsystem -ComputerName $s -ErrorAction Stop).LastBootUpTime
$uptime=((Get-Date) - $up)
$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Server'=$s
'LastBootUpTime'=$up
'Days'=$uptime.Days
'Hours'=$uptime.Hours
'Minutes'=$uptime.Minutes
'Seconds'=$uptime.Seconds
})
}
Catch {

$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Server'=$s
'LastBootUpTime'='Server could not be reached'
})

}
}
}

您可以在这里下载该功能:

获取所有服务器的启动时间

在 PowerShell 中运行此脚本或将其复制到

C:\Program Files\WindowsPowerShell\Modules

在那里创建一个 Get-UpTimeAllServer 文件夹,并将下载的文件保存为 PSM1 文件。然后每次启动 PowerShell 时该命令都可用。

[玩转系统] PowerShell:显示所有 Windows 服务器的正常运行时间

下次再见,带来一些很酷的 Powershell 东西!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯