购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

与大多数编程语言一样,PowerShell也有 命令 ——泛指一切具名的可执行表达式。命令的形式多样,可以是惯常的ping.exe工具,也可以是前面提到的 Get-Alias 命令。甚至还可以自建命令。但如果使用不存在的命令,则会看到一段不招人喜欢的红色错误文本,如代码清单1-2所示。

代码清单1-2 输入的命令无法识别时,显示一段错误文本

PS> foo
foo : The term 'foo' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a
path was included, verify that the path is correct and try again.
At line:1 char:1
+ foo
+ ~~~
    + CategoryInfo          : ObjectNotFound: (foo:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

执行 Get-Command 命令可以列出PowerShell默认支持的所有命令。可以从这个列表中发现一个常用的模式:多数命令的名称遵从“动词-名词”形式。这是PowerShell的一大特性。为了确保语言简洁直观,微软为命令名称制定了一些指导方针。尽管这种命名约定不是强制性的,但强烈推荐自建命令时遵守。

PowerShell命令分为以下几类:cmdlet、函数、别名和外部脚本。微软提供的多数内置命令是cmdlet,通常使用C#等其他语言编写。执行 Get-Command 命令得到的结果中有一个 CommandType 字段,如代码清单1-3所示。

代码清单1-3 显示 Get-Alias 命令的类型

PS> Get-Command -Name Get-Alias

CommandType     Name                Version    Source
-----------     ----                -------    ------
Cmdlet          Get-Alias           3.1.0.0    Microsoft.PowerShell.Utility

函数 则是使用PowerShell编写的命令。为了完成手头的任务,我们编写的往往就是函数;cmdlet一般留给PowerShell软件的开发者来写。cmdlet和函数是PowerShell中最常使用的两种命令类型。

我们将使用 Get-Command 命令探索PowerShell中可用的众多cmdlet和函数。你会发现,如果只输入 Get-Command ,不带任何参数,则控制台输出的内容很多,要向下滚动很长一段距离才能看完所有可用的命令。

在PowerShell中,很多命令有 参数 ——提供(或传递)给命令的值,以用于定制命令的行为。例如, Get-Command 就有一些参数,用以指定只返回特定的命令,而不显示全部命令。浏览 Get-Command 的输出,你会注意到几个常用的动词,如 Get Set Update Remove 。你可能会想,以 Get 开头的命令是获取信息的,其他命令则是修改信息的。没错,你是对的。PowerShell就是这么直来直往。命令的名称都很直观,一般都表明了其意图。

我们刚开始学习,肯定不想随意改动系统,而是想从不同的源头获取信息。鉴于此,可以将 Verb 参数传给 Get-Command 命令,从而限制性地列出使用动词 Get 的命令。为此,在提示符中输入下列命令:

PS> Get-Command -Verb Get

不难发现,这个命令输出的内容依然很多。可以再加上 Noun 参数,以指定名词部分为 Content ,从而进一步限制输出结果,如代码清单1-4所示。

代码清单1-4 只显示动词为 Get 、名词为 Content 的命令

PS> Get-Command -Verb Get -Noun Content

CommandType     Name                Version    Source
-----------     ----                -------    ------
Cmdlet          Get-Content         3.1.0.0    Microsoft.PowerShell.Management

如果发现结果太少,可以只传递 Noun 参数,而不提供 Verb 参数,如代码清单1-5所示。

代码清单1-5 只显示名词为 Content 的命令

PS> Get-Command -Noun Content

CommandType     Name                Version    Source
-----------     ----                -------    ------
Cmdlet          Add-Content         3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Clear-Content       3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Get-Content         3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Set-Content         3.1.0.0    Microsoft.PowerShell.Management

可以看到, Get-Command 命令支持分别提供动词和名词部分。如果想将整个命令作为一个整体传递,则需要使用 Name 参数来指定命令的完整名称,如代码清单1-6所示。

代码清单1-6 通过名称查找 Get-Content cmdlet

PS> Get-Command -Name Get-Content

CommandType     Name                Version    Source
-----------     ----                -------    ------
Cmdlet          Get-Content         3.1.0.0    Microsoft.PowerShell.Management

前文说过,PowerShell中的很多命令有定制行为的参数。可以通过PowerShell完善的帮助系统来学习参数的用法。 ePhwDzl5qmGaE3vBr/0LIWiZCm/pfE3Ohh6Jp/AvSLZIMor9Ytk1knQ5HSrN2tCZ

点击中间区域
呼出菜单
上一章
目录
下一章
×