极客学派:学习PowerShell变量、输入和输出

随着我们从简单地运行命令转向编写成熟的脚本,您将需要一个临时位置来存储数据。这就是变量的用武之地。

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

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

在接下来的一周里,我们将继续关注这一系列的节目。

变数

大多数编程语言都允许使用变量,变量只是保存值的容器。在PowerShell中,我们也有变量,它们非常容易使用。下面介绍如何创建一个名为“FirstName”的变量并为其赋值“Taylor”。

大多数人似乎会问的第一件事是,为什么我们在变量名前面放一个美元符号,这实际上是一个非常好的问题。实际上,美元符号只是对shell的一个小小提示,表明我们希望访问变量的内容(考虑容器内的内容),而不是容器本身。在PowerShell中,变量名不包括美元符号,这意味着在上面的示例中,变量名实际上是“FirstName”。

在PowerShell中,您可以看到在变量PSDrive中创建的所有变量。

这意味着您也可以随时从shell中删除变量:

变量也不必包含单个对象;您可以同样轻松地在一个变量中存储多个对象。例如,如果您希望在变量中存储正在运行的进程列表,则只需将get-process的输出分配给它即可。

理解这一点的诀窍是记住等号的右手边总是首先求值。这意味着如果您愿意,您可以在右侧拥有整个管道。

CPUHog变量现在将包含使用最多CPU的三个正在运行的进程。

当您确实有一个保存对象集合的变量时,有一些事情需要注意。例如,对变量调用方法将导致对集合中的每个对象调用该方法。

这会杀死集合中的所有三个进程。如果要访问变量中的单个对象,则需要将其视为数组。

这样做将为您提供集合中的第一个对象。

别被抓到!

默认情况下,PowerShell中的变量是弱类型的,这意味着它们可以包含任何类型的数据,这似乎一直吸引着PowerShell的新人!

我们有两个变量,一个包含字符串,另一个包含整数。那么,如果添加它们会发生什么呢?这实际上取决于您添加它们的顺序。

当…的时候 / 然而 / 尽管 / 虽然

在第一个示例中,第一个操作数是一个整数$a,因此PowerShell认为您正在尝试进行数学运算,因此也会尝试将任何其他操作数转换为整数。但是,在第二个示例中,第一个操作数是字符串,因此PowerShell只是将其余操作数转换为字符串并将它们连接起来。更高级的脚本编写者通过将变量转换为他们期望的类型来防止这种陷阱。

以上两种情况都会导致Number变量包含一个值为5的整数对象。

输入输出

因为PowerShell旨在实现自动化,所以您会希望尽可能避免提示用户输入信息。也就是说,有些时候您无法避免它,对于这些时间,我们有Read-Host cmdlet。使用它非常简单:

然后,您输入的任何内容都将保存在变量中。

使用写输出cmdlet,写入输出同样简单。

明天加入我们吧,我们把学到的一切都联系在一起!

相关文章