上半部分我们介绍了如何使用PowerShell查找管理动作,这里我们继续介绍PowerShell中最有用的几个技巧。
使用PowerShell管道和“this thing” cmdlet
PowerShell最有用的特性之一是它能够获取对象的信息,然后将结果作为另一条cmdlet的输入执行一系列的操作。
这种从一个cmdlet到另外一个cmdlet的结果集的传输被称为“管道输出。”你可以使用键盘上反斜线键上方的管道字符“|”来完成管道的输出。我们看到在上面的例子中,我用Get-Command的cmdlet来获取命令的列表。然后通过管道输出到命令Measure-Output中,这样就获得了通过Get-Command列出的对象数量的统计结果。
PowerShell中的管道功能还可以做更多的事情。大部分时间中,我们都是需要对一个结果子集执行一些操作。例如,我们可以列出当前运行的进程列表,然后只显示Microsoft Excel的进程。对于这一点,我们使用管道和名为Where-Object的cmdlet,可以对每个对象进行检查以筛选出那些能够满足某个特定条件的对象。
一个小的快捷方式:在PowerShell的脚本编写和日常开发中,你经常会遇到字符“$_”。它有一个技术性比较强的名字,但不是非常直观,所以我叫它“this thing”符号,因为你是根据“this thing”来要求PowerShell执行操作的。
让我们继续使用前面的例子,你会使用Get-Process列出当前所有的进程(这生成了一个字符版本的Windows任务管理器)。然后使用管道输出(列出进程和信息,如一个进程占用的CPU资源,使用的内存情况等)给Where-Object,这就像一个过滤器。后面跟上使用花括号定义的标准条件。接下来,使用“this thing”符号,告诉PowerShell我们想要一些关于“this thing”的信息,跟上name参数,找出符合要求的进程名称(图3)。
图3. 此例显示了管理员在试图使用“this thing”符号进行操作时看到的信息
这个例子中“–eq”就是等于。你可以使用其它的标准指定条件,在PowerShell中进行不同的尝试,就会对它是如何工作的有更深入的理解。
如何触发并保存脚本
另外一个PowerShell的技巧是如何触发脚本。脚本就是将文本文件保存到文件系统中一个给定的位置,但它们必须有一个ps1的文件扩展名。在某些情况下,你可能还需要解除阻止正在运行的脚本,特别是如果你开始运行的脚本来自其它系统,或互联网。
如果你需要执行某个任务的命令,可以通过将它们保存到记事本然后将文档保存为扩展名为PS1的文件来生成脚本。一旦完成,你可能需要在Windows资源管理器中右键点击保存的文件,在属性页上点击“解除阻止”按钮,告诉Windows这个脚本是可信的,并希望它直接运行而不用提示你,但是这一步并不是必需的。
如果你还不知道PowerShell,那就试着开始使用它。它将是Windows管理的下一个里程碑。你未来的职业发展可能依赖于它,所以立刻去体验这些PowerShell的技巧吧!