Powershell-检查上次重新启动计算机的时间

如何解决Powershell-检查上次重新启动计算机的时间

我需要确保所有计算机至少每周重新启动一次,而且我一直在谷歌上搜索,发现了一些东西,但这很简单,有些东西……1-定时器。 ..我想要使它更高级。

这是我在网上找到的命令:

Get-WmiObject Win32_OperatingSystem -ComputerName <computername> : select cname,@(LABEL='LastBootUpTime' ;EXPRESSION=($_.ConverttoDateTime($_.lastbootuptime)))

(我不确定在这里共享链接是否是个好主意,但我只是在Google上搜索“检查上次重新启动远程计算机的时间”,然后单击enterprisedaddy上的链接)

我对PowerShell一无所知,因此正在寻求您的帮助。另外,它不仅对我有用,对其他人也有用...

这就是我想要的:

  1. 创建* .ps1文件(我可以做到)并使其以24/7全天候运行
  2. 我不想每次都复制所有计算机,而是希望将新计算机追加到列表中,因为否则,列表将非常非常长……并且我不想删除一整堆计算机并确保只剩下1个副本,每天删除所有其他副本...
  3. 将列表导出到* .txt或(甚至更好)*。csv
  4. 在一天结束时,*。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

注意:我没有进行测试,只是迅速将其锤击以进行演示。

发生了什么事

  1. 获取当前日期。
  2. 使用当前日期计算比您要报告的日期早的日期边界。
  3. 再次使用数据导出一个适合命名有点独特的输出文件的字符串。
  4. 执行查询,添加LastBootUpTime属性。注意:我在那里做了一些语法更正。
  5. 现在通过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 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res