今天接着为大家介绍和MonitoringObject有关的命令。首先来看看Get-MonitoringObject,这个命令看上去和Get-Monitor很像,但是实际上是有着本质的区别。Get-Monitor命令返回的结果来自于ManagementPack,因此会包很多Monitor本身的信息比如配置信息,报警设置,是否启用等等。而Get-MonitoringObject命令则返回当前正处于监视状态的监视器,因此它只返回和监视有关的信息,比如健康状态,健康状态的最后一次更新时间,隶属于哪个管理组等少量信息。不过Get-MonitoringObject返回的对象却是我们执行后续命令的前提条件。

比如需要返回ManagementClass类是Microsoft.Windows.Computer中所有监视器的健康状态,那么可以使用以下命令:

Get-MonitoringClass -Name "Microsoft.Windows.Computer" | Get-MonitoringObject | FT PathName,Healthstate

结果如下:

p_w_picpath

当然仅仅得到健康状态还是不够的,有时我们需要获得健康状态的最后一次修改时间,那么可以使用以下命令:

Get-MonitoringClass -Name "Microsoft.Windows.Server.2008.Computer" | Get-MonitoringObject | Select-Object DisplayName,HealthState,@{Name="LastTimeModified";Expression={(Get-State $_).LastTimeModified}}

p_w_picpath

这里由于最后的LastTimeModified属性来自于Get-State命令的运行结果,因此为了将显示结果进行整合,使用了“已计算的属性”这个技巧。接下来看看Get-MonitorHierarchy这个命令。该命令主要是得到MonitoringObject的层次化结构,有点类似于图形界面中的健康浏览器。具体命令和刚才有点类似:

Get-MonitoringClass -Name "Microsoft.Windows.Server.2008.Computer" | Get-MonitoringObject | Select DisplayName,@{Name="Hierarchy";Expression={Get-MonitorHierarchy $_ -Recurse}} | fl *

p_w_picpath

在说完Get-MonitorHierarchy之后,名词部分是Monitor的命令就到此结束了。与此同时我们还熟悉了Get-MonitoringObject和Get-MonitoringClass这两个命令。接下来再来看看其它名词部分包含Monitoring的命令。

首先是Get-MonitoringObjectGroup,这个命令主要返回所有的MonitoringObjectGroup的列表并返回当前的健康状态。

p_w_picpath

接下来是Get-MonitoringObjectPath,该命令的主要作用就是用来获得MonitoringObject的路径,该路径会被很多命令使用到,虽然我之前的介绍里并没有过多涉及。命令的使用很简单,将Get-MonitoringObject得到结果传递给Get-MonitoringObjectPath即可,当然如果要进行筛选的话,我们可以使用Where-Object来实现:

p_w_picpath

接下来的命令是Get-MonitoringObjectProperty,该命令的主要作用就是返回MonitoringObject的属相信息,使用方法和很多命令一样:

p_w_picpath

接下来的一个命令是Get-MonitoringClassProperty,该命令主要对应图形界面中Authoring,Management Pack Objects中的Attirbutes界面。主要用于获得MonitoringObject类中的一些属性信息。

p_w_picpath

接着我们来看一下Get-RelationshipObject这个命令,该命令的主要作用就是找出MonitoringObject和具体对象之间的联系,比如使用以下命令就能获得当前正在监视的和SQL有关的MonitoringObject的信息:

Get-MonitoringObject | ?{$_.DisplayName -like "SQL*"} | Get-RelationshipObject | FT *Object,LastModified –A

p_w_picpath

然后我们来看一下 Get-RelationshipClass。该命令主要用于返回当前SCOM中Relationship类。可以使用Name参数来限定要查找的对象,但是要注意Name参数是区分大小写的。

p_w_picpath

接着来看下Get-Recovery命令。该命令主要返回恢复操作对象,也就是单一Monitor中Diagnostic and Recovery便签卡中的Configure recovery tasks中的recovery对象。如果大家需要找到特定对象的话,可以使用Where-Object和DisplayName属性来进行筛选。

p_w_picpath

接着是Remove-DisabledMonitoringObject命令。该命令负责移除所有发现设置被禁用的Monitoring Object。该命令不接受参数输入,同时命令也不会返回任何值。

最后我们来熟悉下如何使用New-MonitoringPropertyValuePair及New-CustomMonitoringObject来新建自定义的MonitoringObject. 首先来看一下New-CustomMonitoringObject,该命令接受两个参数输入,一个是MonitoringClass,用于指定新建的CustomMonitoringObject关联到哪个类,我们可以使用Get-MonitoringClass来获得特定对象。第二个参数是KeyPropertyValuePair,这个参数用于指定MonitoringObject的具体属性,可以通过New-MonitoringPropertyValuePair来创建该参数所需对象。详细的命令如下:

$mc = get-monitoringclass -name "Microsoft.Windows.Computer"

$prop = get-monitoringclassproperty -monitoringclass $mc | where-object {$_.Name -eq 'PrincipalName'}

$mpvalue = new-monitoringpropertyvaluepair -monitoringclassproperty $prop -propertyvalue "CNSHSQLSVR01"

New-CustomMonitoringObject -MonitoringClass $mc -KeyPropertyValuePair $mpvalue

关于这部分的PowerShell命令的确是很难操作,也脱离了PowerShell原来给系统管理员带来的操作体验,大量的.NET知识贯穿其中,希望SCOM v.Next中的PowerShell都给我们带来改进后的操作体验吧。

已发表 2011年7月25日 21:35 作者 ghjconan

归档在:SCOM, PowerShell, OpsMgr