极客学校:编写您的第一个完整的PowerShell脚本

几周前,“极客”向您展示了如何使用命令提示符查找您的计算机上次启动的时间。在PowerShell极客学校的最后一次安装中,我们将编写一个可重用的PowerShell命令来做同样的事情。

请务必阅读本系列的前几篇文章:

了解如何使用PowerShell自动化Windows。 学习在PowerShell中使用Cmdlet。 了解如何在PowerShell中使用对象。 在PowerShell中学习格式化、筛选和比较。 学习在PowerShell中使用远程处理。 使用PowerShell获取计算机信息。 在PowerShell中使用集合。 了解如何在PowerShell中使用作业。 了解如何扩展PowerShell。 学习PowerShell变量、输入和输出

写你的第一个剧本

我们需要做的第一件事是找到一种方法来访问我们正在寻找的信息。因为我们正在处理管理信息,所以我们可能需要了解一下如何使用WMI,它确实有一个名为Win32_OperatingSystem的类,它允许您查看有关操作系统的详细信息,包括它上次启动的时间。

现在我们知道在哪里可以找到要查找的信息,打开ISE并键入以下内容。

注意:我必须将我的代码分成两行,这样所有代码都可以放入屏幕截图中,但是您可以在一行中随意键入。如果您确实选择将其拆分成两行,请确保竖线字符是第1行的最后一个字符。

现在单击绿色的“run script”按钮或按键盘上的F5键来测试代码。

WMI时间可能有点神秘。我们的意思是,如果您查看LastBootUpTime属性,它显示为2013-03-19,时间为18:26:21,但是由于某种原因,WMI人员决定将所有这些内容连接到一个字符串中。幸运的是,我们不必担心手动解析字符串,因为有一种更简单的方法,尽管更高级。您需要将代码的Select-Object部分更改为如下所示:

我们在这里所做的是创建一个名为“Last Boted”的自定义属性,并指定它的值必须是对当前管道对象的LastBootUpTime属性调用ToDateTime静态方法的结果。您的代码现在应该如下所示。

现在运行代码将产生更具可读性的上次引导时间。

既然我们对脚本的基本功能很满意,我们需要保存它。为简单起见,我们将其保存为以下内容:

现在切换到ISE的下半部分并运行以下命令:

太棒了!我们的脚本工作正常,但是我们的脚本仍然有一个问题。我们硬编码了要获取上次启动时间的计算机的名称。我们应该提供一个参数,而不是对值进行硬编码,这样无论谁使用脚本,都可以选择在哪台计算机上运行脚本。为此,请转到脚本顶部并执行以下操作。

然后用$ComputerName变量替换硬编码的localhost值。您的脚本现在应该如下所示:

保存脚本,然后返回ISE的下半部分并查看脚本的帮助。

棒极了,现在我们可以使用新的ComputerName参数指定要获取上次引导时间的计算机的名称。不幸的是,仍然有一些事情是错误的。首先,ComputerName参数是可选的,其次,这是我见过的最难看的帮助,所以让我们快速解决这些问题。要使ComputerName参数成为强制参数,请将param块的内容更改为以下内容。

至于制作更好的帮助文件,最常用的方法是使用基于注释的帮助。这意味着我们只需在Out脚本的顶部添加一个超长的注释。

一旦所有这些都完成了,您最终应该会得到一个如下所示的脚本。

现在让我们去检查一下我们的新帮助文件。

啊,看起来棒极了!现在我们的脚本已经完成,我们还有最后一件事要做:测试。为此,我将退出ISE并返回PowerShell控制台,以便我们可以确保没有异常。

如果你从一个简单的眼线开始,然后像我们在本指南中所做的那样,在它的基础上不断发展,你很快就会掌握它的诀窍的。各位,这就是本期节目的全部内容,在下一期的“极客学校”中再见。

相关文章