在掌握Exchange Management Shell常用术语,你已经学习了有关Exchange Management Shell (EMS)的一些术语,这些术语由微软在Exchange 2007中引入。这里,你会学到如何使用EMS命令,以及如何格式化命令的输出。你还将初步领略怎样把你的命令管(pipe,即把一个命令的输出作为第二个命令的参数进行处理)进其他命令中。
学习EMS,首先最最重要的是学习如何得到帮助。对于这,EMS提供了两组办法。第一个方法是使用"help cmdlet" (cmdlet指command-let,就是小命令的意思,也就是EMS通过命令行输入的命令)或者"cmdlet -?"。这让EMS给出指定的命令cmdlet的语法和用法的简短信息。就如图A所示。
图A 让EMS给出指定的命令cmdlet的语法和用法的简短信息。
注意这个简短帮助没有给你任何各个参数的详细信息,它不过是给你指出这些参数数据的类型(是字符串、数字,等等)。有时候,那些信息真的不太够。于是EMS提供了一种获得更多详细帮助的方法。使用这个命令"help cmdlet -detailed",你就可以得到对每个参数都有详尽说明的好多页帮助,一定能满足你的期望。如果你要得到更多技术帮助,还可以使用"help cmdlet -full"。这个命令向你提供各个参数的技术信息。举例如,-full选项会告诉你某个特定参数是否为必需,它是否接受管道化(pipelined)的输入,以及你是否可以在参数值中使用通配符。
你现在才看过一个cmdlet,get-casmailbox。当你不使用参数运行时,get-casmailbox cmdlet返回一列当前Exchange企业内部的邮箱,以及一些概括信息,如每个邮箱是否激活了OWA、POP 和IMAP。图 B向你展示输出结果。
图B get-casmailbox 命令返回企业的邮箱信息
现在,可能你想操作某个特定邮箱对象的属性,比如禁止某个用户使用POP从你的服务器接收邮件。下面这个命令会禁止某个特定用户对邮箱的POP3访问。
set-CASMailbox -identity [email protected] -POPEnabled:$false
在该例中,"-identity"参数用于指定要操作的确切对象。然而,因为身份对象(identity object,本例中是
[email protected]本就必需,所以"-identity"选项不是不可或缺。换言之,下面的命令和上述例子在功能上等同:
set-CASMailbox [email protected] -POPEnabled:$false
set-CASMailbox -POPEnabled:$false [email protected]
对于其他的cmdlet,你可能就不需要指定某些其他的参数名字,只需要按特定顺序打入参数值就可以了。就个人来讲,我不喜欢这种方法,因为它太容易出错了,可读性也说不过去。
运行完set-casmailbox cmdlet,你可以打进get-casmailbox,回车查看你的更改生效了没有。
以get-casmailbox命令为例,你可能希望收集用户邮箱的其他信息,而不像刚才见到的那样,只能知道哪些服务可用,哪些服务被禁止了。通过把你的命令管入format-list命令,你可以得到用于输出的可能参数的完整列表。使用format-list时要仔细,尤其是对于大型数据组。对于此命令,除非你主动限制其输出内容,不然会显示每一个邮箱的每一项参数,如果你有成百上千的邮箱,这肯定要花好长好长时间!图 C是该命令针对单个邮箱的输出。
图C 你可以在输出中得到的参数非常之多。
产生图C我所用的命令是:
get-casmailbox | format-list
注意两个cmdlet之间的竖杠。在本系列入门的第1部分中,我讲过管道和管道化的问题。这个符号一般称之管道符(pipe character),在EMS里,它用来代表一个命令的结果交给另一个命令继续处理。本例中,get-casmailbox命令的完整输出被传递给format-list命令,后者等待前者的输出,并且负责把前者的输出进行格式化处理,这样最后输出的信息是清单格式(list form),而不是默认的表格格式(tabular)。Format-list有一个别名――"fl"。
很明显,让所有信息都输出也不总是悦人心意。format-list虽然是得到可用显示参数列表的了不起的方法,但一点不落地显示所有信息也远非实用。因此,你可以把get-casmailbox的输出结果管入另一个cmdlet――select。Select命令可以带一系列参数名,它只显示参数指定的信息,而不会眉毛胡子一把抓。
看看下面这个select cmdlet如何工作:
Get-casmailbox | select identity,guid
这个命令把get-casmailbox的显示结果管入select命令,之后就只有对象的GUID和身份(identity)被显示了,就如同下面图 D展示的那样。
图D 这个命令限制输出,只指定了两个输出域。
不过,这种方法的输出很快又变得笨拙不看了。看图 E就知道是怎么回事了。
图E这样的输出真是太丢三落四。
注意,图E的输出已经严重抹煞细节,甚至到了完全无用的地步。所以,你该怎么办呢?很简单:把它管入format-list,让它变成清单(list)而非现在的表格(table)。就像这样:
get-casmailbox | select identity,guid,samaccountname,primarysmtpaddress | fl
图F 这个输出简单易读
总结
到此为止,Exchange Management Console的入门就算完成。在以后的许多文章里,我将着重探讨用EMS真刀真枪的完成工作任务,所以就这个话题,以后我们还有见面机会。Exchange Management Shell是Exchange Server 2007中的一个新的功能。这个shell的基本目的是做为一个命令行和脚本界面。