如何解决Powershell-检查上次重新启动计算机的时间
我需要确保所有计算机至少每周重新启动一次,而且我一直在谷歌上搜索,发现了一些东西,但这很简单,有些东西……1-定时器。 ..我想要使它更高级。
这是我在网上找到的命令:
Get-WmiObject Win32_OperatingSystem -ComputerName <computername> : select cname,@(LABEL='LastBootUpTime' ;EXPRESSION=($_.ConverttoDateTime($_.lastbootuptime)))
(我不确定在这里共享链接是否是个好主意,但我只是在Google上搜索“检查上次重新启动远程计算机的时间”,然后单击enterprisedaddy上的链接)
我对PowerShell一无所知,因此正在寻求您的帮助。另外,它不仅对我有用,对其他人也有用...
这就是我想要的:
- 创建* .ps1文件(我可以做到)并使其以24/7全天候运行
- 我不想每次都复制所有计算机,而是希望将新计算机追加到列表中,因为否则,列表将非常非常长……并且我不想删除一整堆计算机并确保只剩下1个副本,每天删除所有其他副本...
- 将列表导出到* .txt或(甚至更好)*。csv
- 在一天结束时,*。ps1将创建一个新的* .txt或* .csv文件并重新开始。在一个新文件中。当然,将旧的(或其他所有,从第二天开始...)进行审核...
我了解的希望很小,但是如果您能帮助我-太好了。如果不是,那么,用谷歌搜索全部内容可能要花很长时间,但是最后,我也许可以自己找到所有内容……尽管这里希望渺茫……
说句公道话,我所要做的就是查看上一次计算机重新启动的时间,仅此而已,所以,如果您知道一种更简单的方法-我准备阅读其他想法。
解决方法
这不是一个完整的答案,但是应该可以帮助您实现目标。如果我正确地解释了您的问题,那么您要每天检查一次上次启动时间,并报告在过去7天内没有重新启动的计算机。然后将这些数据存储在一个csv文件中。
因此,这实际上很容易实现,PowerShell是执行此操作的好地方。但是,您必须在已发现的内容之上进行“开发”。设定目标并实现这些目标。
开始可能类似于:
$Today = Get-Date
$ReportDate = $Today.AddDays( -7 )
$OutputCsv = ("C:\Temp\" + $Today.ToString( "yyyy-MM-dd" ) + ".csv" )
$BootTimes =
Get-WmiObject Win32_OperatingSystem -ComputerName pyex06 |
Select-Object PSComputerName,@{ LABEL='LastBootUpTime' ;EXPRESSION={ $_.ConverttoDateTime($_.lastbootuptime) } }
$BootTime |
Where-Object{ $_.LastBootUpTime -lt $ReportDate } |
Export-Csv -Path $OutputCsv -NoTypeInformation
注意:我没有进行测试,只是迅速将其锤击以进行演示。
发生了什么事
- 获取当前日期。
- 使用当前日期计算比您要报告的日期早的日期边界。
- 再次使用数据导出一个适合命名有点独特的输出文件的字符串。
- 执行查询,添加LastBootUpTime属性。注意:我在那里做了一些语法更正。
- 现在通过
Where{}
语句运行结果,该语句将过滤启动时间超过7天的启动时间,并导出到CSV文件。
同样,这只是一个开始。您将需要增加一种针对多台计算机进行工作的功能,并且需要考虑输入的内容。您可能还希望添加错误处理,因为WMI(和更高版本的CIM)连接可能并且确实会失败。
顺便说一句:Get-WMIObject
已过时。它已被Get-CimInstance
取代。 GetCimInstance
将返回LastBootUpTime属性作为实际日期,而无需添加该属性。该命令看起来像什么?
Get-CimInstance Win32_OperatingSystem -ComputerName ComputerName |
Select-Object PSComputerName,LastBootUpTime
所有这些东西都有很好的记录。实际上,我敢肯定有人甚至发布了完全符合您想要的脚本。您必须了解如何构建更大的脚本,并且希望我能给您这么多。这是一系列解决单个问题并将这些解决方案放在一起的系列。
,顺便说一句,WMI的东西已经贬值了,而CIM是新的发展趋势。请注意,使用跨平台PowerShell(PowerShell Core)赢得胜利时,WMI cmdlet不存在。
$PSVersionTable.PSVersion
# Results
<#
Major Minor Build Revision
----- ----- ----- --------
5 1 19041 1
#>
(Get-Command -Name '*wmi*').Count
# Results
<#
21
#>
$PSVersionTable.PSVersion
# Results
<#
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 0 3
#>
(Get-Command -Name '*wmi*').Count
# Results
<#
0
#>
第二,您发布的命令在语法上不正确,因此将永远无法使用。
最后,请务必先进行基本操作,以确保在进行下一步之前能达到预期的效果。
Get-CimInstance -ClassName Win32_OperatingSystem |
Select-Object -Property '*'
# Results
<#
...
CSName : Lab01
...
Description :
InstallDate : 20-Jun-20 18:59:14
...
Distributed : False
LastBootUpTime : 13-Aug-20 01:00:42
LocalDateTime : 20-Aug-20 14:01:53
...
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
#>
请注意,您无需转换即可直接获取日期,然后根据需要设置格式。
Get-CimInstance -ClassName Win32_OperatingSystem |
Select-Object -Property CSName,LastBootUpTime,@{
Name = 'TimeSpanSinceLastRestart'
Expression = {New-TimeSpan -Start $(Get-Date) -End $PSItem.LastBootUpTime }
}
# Results
<#
CSName LastBootUpTime TimeSpanSinceLastRestart
------ -------------- ------------------------
Lab01 13-Aug-20 01:00:45 -7.15:02:24.1130902
#>
至此...
我的问题是如何使其24/7运行并追加新计算机
...只需放入预定的任务(在每个主机上或从AD或文件中获取计算机名称的管理工作站上)中,然后使用-Append参数导出为CSV或文件。 / p>
(Get-ADComputer).Name |
ForEach{
Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName $PSItem |
Select-Object -Property CSName,@{
Name = 'TimeSpanSinceLastRestart'
Expression = {New-TimeSpan -Start $(Get-Date) -End $PSItem.LastBootUpTime }
} |
Export-Csv -Path 'D:\Temp\SystemRebootReport.csv' -Append -NoTypeInformation -WhatIf
}
# Results
<#
What if: Performing the operation "Export-Csv" on target "D:\Temp\SystemRebootReport.csv".
#>
只需删除-WhatIf即可创建文件。
更新
至于...
[那么我该如何使用此隐式远程处理呢?]
...这在Powershell帮助文件中都有详细说明,请参见
about_Remote_Requirements - PowerShell | Microsoft Docs
'PowerShell implicit remoting active directory'
https://www.youtube.com/results?search_query=powershell+implicit+remoting+active+directory
https://www.itprotoday.com/powershell/powershell-implicit-remoting-never-install-module-again
TechNet Install RSAT for Windows 10 1809 and 1903 and 1909 - automated
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。