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

4.1 PowerShell Cmdlet 定义

有些读者可能是第一次看到这个单词:Cmdlet。在PowerShell 出现之前大家习惯使用CMD Shell 中的命令进行过程的操作,比如使用mkdir 命令进行文件夹的创建,使用copy 命令进行文件的复制。在PowerShell 出现以后,命令结构和模式发生了很大的变化,为了区别在传统的CMD Shell 执行的命令,我们将在PowerShell 中执行的命令称为Cmdlet。Cmdlet 的执行必须在PowerShell环境中,在CMD Shell 中执行Cmdlet的命令,会出现如图4.1所示的错误。

图4.1 Cmdlet无法在CMD Shell环境中执行

这是因为Cmdlet 相比传统的CMD 命令,它是基于.Net 框架进行重构的命令。这就意味着执行PowerShell Cmdlet,必须有.Net 环境支持,脱离.Net执行环境支持,执行PowerShell Cmdlet会直接报错。

4.1.1 CMD命令对比Cmdlet

那传统的CMD命令和Cmdlet除执行环境不同之外,还有什么差别呢?接下来我们通过对比CMD命令和Cmdlet,来让大家了解下其他的具体差别。

· Cmdlet是.Net类的实例化,不是单独执行的命令。

· Cmdlet是经过.Net 类实例化编译后的可执行程序。

· Cmdlet本身不负责错误处理、数据输出等操作,这些操作交由PowerShell 本身的运行环境处理。

· Cmdlet通过管道进行对象的处理,而不是文本数据流,同时可以将Cmdlet执行的结果作为对象传递到管道。

· Cmdlet是面向记录的操作,因为Cmdlet 一次只能面对一个对象实现处理。

4.1.2 PowerShell环境中可以执行的命令

在PowerShell 环境中除了可以执行一些PowerShell的Cmdlet之外,还可以部分执行如下的命令或脚本。如果一个命令既是PowerShell Cmdlet别名,也是CMD Shell中的命令,命令执行之后优先执行为PowerShell Cmdlet命令。

· Cmdlet命令:PowerShell中的所有Cmdlet都支持直接执行。

· CMD命令:支持传统的CMD Shell里面除了别名之外的所有命令功能。

· 别名命令:基于PowerShell构建的Cmdlet的别名。

· Bat脚本:支持CMD Shell 可用的脚本。

· VBS脚本:支持VBS脚本的命令执行。

· Function :支持PowerShell Function 功能函数。

这里以Set为例,Set在CMD Shell中是获取系统中的参数变量,但是我们在PowerShell中的功能是设置变量。在执行相同命令时结果是完全不同的,图4.2所示为CMD 环境中执行的Set和PowerShell环境中执行的Set命令的对比。

图4.2 CMD环境和PowerShell环境中的Set命令对比

4.1.3 PowerShell Cmdlet的特点

Cmdlet命令相比传统的CMD 命令,更加人性化和语言自然化。如果PowerShell不采用别名的情况下,它的所有Cmdlet都满足“动词+名词”格式。“动词+名词”这样的结构让管理员理解命令变得更加简单,当前PowerShell环境中支持哪些PowerShell命令呢?我们可以通过如图4.3所示的Get-Command命令来查看当前PowerShell支持哪些命令。

图4.3 PowerShell中的Cmdlet格式

相信大家能够发现,命令都是非常固定的格式。动词可以定义为行为,而行为一定要有目标,目标这里就是定义的名词。“动词+名词”结构构成了PowerShell的Cmdlet的组成方式,而且这种定义与人的自然语言很相似。这种结构让使用者通过前面的动词就能猜测出行为,大家能猜出下面使用非常频繁的单词代表的意思吗?

· New:新建对象使用的动词。

· Remove:删除对象使用的动词。

· Set:设置对象使用的动词。

· Get:获取对象使用的动词。

· Update:更新对象使用的动词。 MvXR5jpCBTVrJbFqz6ApZK31api3NL4hfoKNLQaB5ni3cztkPTzUCVb4k9BL1byu

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