3. Powershell关键命令介绍

2020-01-08 18:21:37 浏览数 (1)

3. Powershell关键命令介绍

我们将在这介绍三种简单的但是很关键的命令,这些命令能够让你的 Powershell之旅更加顺利。

当你学习的时候,请记住一条军规,那就是Powershell的动词-名词(Verb-noun)结构, 就如get-PSProvider命令,get是动词,PSProvider是名词。

今天要介绍的三条关键命令是:get-comand, get-help, get-member


1. Get-Command

我们就从get-command开始,它是用来列出Powershell所有的动词-名词结构,当然,这些也被称为内置的cmdlets。

假设你已经打开了Powershell窗口,上面有提示,类似PS>;, 现在你只要输入一个带连字符号的语句:

get-command

我们可以使用通用符 星号 * 来过滤该列表,比如:

Get-command out*

Get-command add*

Get-command get-*

下面就是显示以set开头的cmdlets

Get-command set* -commandtype cmdlet

我们可以把这些输出以表格形式来显示,(Format-table), 这里将用到 Powershell的管道符号 |, 具体语句是:

Get-command | format-table name,definition –auto

我们现在只是体会、测试和感觉Powershell, 因此你完全可以按照建议进行任何的自我体验。 当你看到诸多内置命令时,随便选定一个cmdlet作为研究对象,比如

Get-psprovider

下面就是我运行这个命令的结果

家庭作业: 使用PSProvider

get-psprovider | Get-member

命令: PSSnapin

PSSnapin向我们展示内置cmdlets的来源于哪里

Get-pssnapin

Get-PSSnapin |ft name, description –autosize

你可能也注意到,

  • .  每个Powershell的名词都是唯一的,PSSnapin,command,PSProvider。
  • .  每个管道符|后面连着FT 意思是将输出格式作为一个表格形式(Format-Table),相对的是,把输出作为清单形式那就是使用 fl (Format-list). FT后面连着属性的名称,每个名称以分号分开。
  •  . 命令的最后是-autosize, 他让Powershell每列的宽度自动调整适应。
  •  . 当你使用 format-table 或者ft, 试着在后面加上-autosize,或者-auto,会让你的输出更紧凑、美观。

下面这个例子,我使用了ft来省略Description属性,只是显示名称

Get-PSSnapin |ft name


2. Get-Help

拒绝傲慢,把骄傲丢在一边,求助Powershell的内置帮助吧。 我们所需要学习的是如何寻求Powershell内置的帮助以及它能给我们带来的好处。

也许老的DOS系统的帮助的经历,让我们不太愿意再求助内置的帮助,但是,难道我需要建议大家都使用互联网的搜索来得到吗?幸好,这个现象没有在Powershell中出现。

Powershell的帮助有很多很有趣的开发,比如-full和-example, 一般来说-examples也可以工作,这是在Powershell里面非常少见的一个名词的复数。

尝试下面这个例子:

Get-help get-wmiobject

请注意: get-help不需要管道符号。事实上,管道符只会妨碍到get-help。

对下面的语句,Powershell会直接报错

Get-help | get-wmiobject cim_chip

因此,我们还是按照简单的模式来输入

Get-help get-wmiobject

我的经验之谈

对于初学者而言,Powershell的帮助是最爱;然而对于中级高手而言,却会忽略掉Powershell帮助;对于大师而言,他又会回归到使用get-member。 Powershell大师之所以是大师,是因为他们知道如何使用、什么时候使用合适的工具,比如get-help工具。

隐藏的Powershell 关于About文件

在Powershell文件夹里面(又被称为 $PSHome **), 你会发现全部的关于(about)文件。在这些文件里面,都是以About_开头,你将会发现很多的内容,比如foreach。

我的经验是,通过输入get-hep foreach你不能直接的得到帮助,但是你可以通过直接读该文件而得到大量帮助信息 $PSHomeabout_foreach.help.txt

下面这个cmdlet向我们展示了About文件的名称

# List all the About help files         $i=0         $Homes = get-ChildItem "$PSHomeabout*.*" -recurse         foreach ($About in $Homes) {$About.name; $i }

结果: 55个文件清单(根据版本不同数字可能不同)

**在我的系统里面, $PShome就是在 C:WINDOWSsystem32WindowsPowerShellv1.0


3. Get-Member

从我以前犯的错误得出来的教训,希望你能够铭记Get-member用法。关键点就是我们要把对象放在开头,而不是在命令的后面,另外一个教训就是我经常忘了管道符。

正确的格式是:

Get-process | get-member

错误

  •  get-Member | get-Process  (顺序错误)
  • get-Process get-Member (忘记了管道符)

家庭作业

Get-process | Get-Member -Membertype property

Get-process | Get-Member -Membertype method

从上面来看,所有的命令都不区分大小写的,比如get-Process, Get-Process 和get-Process, 三者的结果都一样。在Powershell里面, 大写的命令语句不会影响命令执行。


Tab键的自动完成

可能是考虑到我们比较懒,Powershell也提供了支持tab键自动完成的功能。 一旦你输入了足够的命令来确保该语句唯一,即不会被别的重复的时候,你可以直接按tab键,powershell就会自动完成接下来的命令。

Get-process get-mem(tab键)会自动扩展成:get-process get-member.

你可能也知道了,tab键的自动完成不但对某个命令起作用,对于所有的命令都起作用。

同样,当你使用Powershell的参数的时候,你也可以使用相同的自动填写功能。比如

-auto就等同于-autosize, -f就是相当于-filter.

Powershell里面有太多的自动完成了。


总结:Powershell命令行

如果你和一位经验丰富的Powershell用户,或者和某位专家聊天,他们都会告诉你,成功的秘诀就是简单。

请坚守这个定律直到你成功了。而这个基本定律的三大帮手就是,get-command, get-member和get-help

0 人点赞