几个星期前,The Geek向您展示了如何使用命令提示符找到您的计算机上次启动的时间。 在最后一次安装PowerShell的Geek学校时,我们将编写一个可重用的PowerShell命令来做同样的事情。
请务必阅读本系列中的前几篇文章:
- 了解如何使用PowerShell自动化Windows
- 学习在PowerShell中使用Cmdlet
- 学习如何在PowerShell中使用对象
- 在PowerShell中学习格式,过滤和比较
- 学习在PowerShell中使用远程处理
- 使用PowerShell获取计算机信息
- 在PowerShell中使用集合
- 了解如何在PowerShell中使用作业
- 了解如何扩展PowerShell
- 学习PowerShell变量,输入和输出
编写你的第一个脚本
我们需要做的第一件事是找到一种方法来访问我们寻找的信息。 因为我们处理管理信息,我们可能需要看看使用WMI,它确实有一个名为Win32_OperatingSystem的类,它允许您查看有关操作系统的详细信息,包括上次启动它。
现在我们知道我们在哪里可以找到我们寻找的信息,打开ISE并键入以下内容。
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName,LastBootUpTime
注意:我不得不拆分我的代码在两行,以便它所有适合的屏幕截图,但随意键入它在一行。 如果你选择将它分成两行,请确保管道字符是第1行的最后一个字符。
现在点击绿色的“运行脚本”按钮或按键盘上的F5键来测试代码。
WMI时间可能有点神秘。 我们的意思是,如果你看看LastBootUpTime属性,它说2013-03-19在18:26:21,但由于某些原因,WMI的家伙决定将所有这一切连接到一个单一的字符串。 幸运的是,对于我们,我们不必担心手动解析字符串,因为有一个更简单的方法来做,虽然更高级。 您将需要更改代码的Select-Object部分,如下所示:
Select-Object -Property CSName,@ {n =“Last Booted”;
e = {[Management.ManagementDateTimeConverter] :: ToDateTime($ _。LastBootUpTime)}}
我们在这里做的是创建一个名为“Last Booted”的自定义属性,并指定其值必须是在当前管道对象的LastBootUpTime属性上调用ToDateTime静态方法的结果。 您的代码现在应该如下所示。
运行代码现在将产生一个更加可读的上次引导时间。
现在我们对脚本的基本功能感到满意,我们需要保存它。 为了简单起见,我们将其保存为以下内容:
C:\ Get-LastBootTime.ps1
现在切换到ISE的下半部分并运行以下命令:
C:\ Get-LastBootTime.ps1
大! 我们的脚本按预期工作,但是我们的脚本还有一个问题。 我们硬编码了我们想要获得最后引导时间的计算机的名称。 而不是硬编码值,我们应该提供一个参数,以便谁使用脚本可以选择他们运行脚本的计算机。 为此,请转到脚本的顶部并执行以下操作。
帕拉姆
[string] $ ComputerName
)
然后用$ ComputerName变量替换硬编码的localhost值。 您的脚本现在应该是这样:
保存脚本,然后返回到ISE的下半部分,并查看脚本的帮助。
help C:\ Get-LastBootTime.ps1
真棒,所以现在我们可以指定我们想要获得上次引导时间使用我们的新ComputerName参数的计算机的名称。 不幸的是,还有一些东西出了问题。 首先,ComputerName参数是可选的,其次,这是我见过的最有帮助的,所以让我们快速修复这些问题。 要使ComputerName参数成为强制性,请将param块的内容更改为以下内容。
[Parameter(Mandatory = $ true)] [string] $ ComputerName
至于做一个更好的帮助文件,最常见的方法是使用基于注释的帮助。 这意味着我们只需在顶部的脚本中添加一个额外的长注释。
<#
。概要
显示最后一次您的PC启动。
。描述
这是一个WMI包装函数,以获取您的PC上次启动的时间。
.PARAMETER ComputerName
要对其运行命令的计算机的名称。
。例
Get-LastBootTime -ComputerName localhost
。链接
www.howtoip.com
#>
一旦做了,你应该得到一个像这样的脚本。
让我们现在去看看我们的新帮助文件。
啊,看起来很棒! 现在我们的脚本完成了,我们有最后一件事:测试。 为此,我将退出ISE,并回到PowerShell控制台,以便我们可以确保没有异常。
如果你从一个简单的一个班轮开始,只是继续建立它像我们在本指南,你会得到它的悬挂在任何时间。 这就是这一次的人们,看到你在下一个安装的Geek学校。