设为首页 收藏本站
查看: 1024|回复: 0

SCOM PowerShell 命令使用指南 - 08 (Monitor)

[复制链接]

尚未签到

发表于 2018-9-3 09:18:40 | 显示全部楼层 |阅读模式
  今天要和大家分享的是SCOM中的一个关键对象,Monitor。首先我们来看看如何使用Get-Monitor命令来得到当前SCOM中的所有Monitor。
  命令如下:
  Get-Monitor | Select-Object DisplayName,Algorithm | Sort Displayname

  当然这样列一下所有的Monitor其实是没有什么意义的,在一个大型的环境中,Monitor的数量上千其实是一件很正常的事,那么此时就需要用到Get-Monitor的几个参数了。用的最多的可能是-ManagementPack和-Criteria这两个参数。如果想要查看一个ManagementPack中的Monitor数量,那么使用前者是最方便的。但是实际上并不是什么时候都是那么走运的,因此使用-Criteria参数也是很常见的。但是如果看过Get-Monitor命令帮助的朋友便会发现这个参数的使用提示,包括参数的语法规则是包含在SCOM SDK中的,这时可能很多朋友会打退堂鼓,作为SE去看SDK是不是很不合适?关于这个问题,大家各有各的看法,不过接下来,我会尝试着把这个参数的使用方法解释清楚。
  其实这个参数的作用主要就是把我们的筛选条件转换成SQL查询语句,如果大家想跳过PowerShell的话,那可以直接在数据库中查询[MonitorView]这张视图。不过这边呢,还是要介绍下Criteria是如何书写的。比如要查显示名中包含SQL的Monitor,那么可以使用以下查询条件:
  Get-Monitor -Criteria "Name like '%SQL%'" | FT DisplayName

  但此时我们会发现部分Monitor中包含DEPRECATED,那我们怎么样修改参数值呢?这里其实只要使用AND操作符就能解决问题:
  Get-Monitor -Criteria "Name LIKE '%SQL%' And DisplayName NOT LIKE '%DEPRECATED'" | FT Name,DisplayName
  当然查询条件还支持更高级的正则表达式以及SQL中关键词IN来进行筛选,大家可以根据具体情况来进行设置。不过需要注意一点,IN只适用于Monitor对象的GUID属性。具体命令如下:
  Get-Monitor -Criteria "Name Matches 'SQL.*2005'" | FT Name,DisplayName
  Get-Monitor -Criteria "Id In ('FAA97AF2-FEC2-D949-AC63-9C09BA6F88DC','92C699CC-6142-DBB3-C832-2450FC24F240')" | FT Name, DisplayName

  细心的朋友可能已经发现了,在最开始为大家整理出来的命令列表中不存在类似Set-Monitor之类的命令,那么假设我们要对Monitor进行修改该如何操作呢?为了说明这个问题,这里我先利用图形界面新建了一个UnitMonitor,然后在创建向导的最后,我没有勾选产生警报的复选框,接下来我的目的就是利用PowerShell来启用它。

  首先要做的还是要得到这个UnitMonitor对象,因此使用以下命令:
  Get-Monitor -Criteria "DisplayName='TestMonitor'" | FT Name,DisplayName -A

  这里需要注意通过图形界面创建出来的Monitor的Name属性是自动生成,这也决定了我们在进行筛选时必须使用DisplayName属性。接下来看看如何启用这个Monitor的警报功能。当然希望只要修改这个Monitor的一个属性即可,因此先来看下这个Monitor有哪些属性:

  运气不错,看到了AlertSettings属性,当前是一个空值,那是不是只要设置一个$true或者$false就可以了呢?可以通过Get-Member来确认下这个猜想:

  看来事情不像我们想的那么简单,大家可能已经注意到这个属性的类型是Microsoft.EnterpriseManagement.Configuration.ManagementPackMonitorAlertSettings,这意味着不能简单的设置$true或者$false了,接下来需要做的是使用New-Object来创建这个类的一个实例,这里建议大家在SDK中搜索下,看看有哪些有用的信息。我在查询SDK之后,确定下来具体代码如下:
  $monitor = Get-Monitor -Criteria "DisplayName='TestMonitor'"
  $mp = Get-ManagementPack | ?{$_.Name -eq "Contoso"}
  $alertSetting = New-Object Microsoft.EnterpriseManagement.Configuration.ManagementPackMonitorAlertSettings
  $alertMessage = New-Object Microsoft.EnterpriseManagement.Configuration.ManagementPackStringResource($mp,"AlertMessage")
  $alertSetting.AlertMessage = $alertMessage
  $alertSetting.AlertParameter1 = "Event Description: $Data/Context/EventDescription$"
  $alertSetting.AlertOnState = [Microsoft.EnterpriseManagement.Configuration.HealthState]::Warning
  $alertSetting.AlertPriority = [Microsoft.EnterpriseManagement.Configuration.ManagementPackWorkflowPriority]::High
  $alertSetting.AlertSeverity = [Microsoft.EnterpriseManagement.Configuration.ManagementPackAlertSeverity]::Error
  $monitor.AlertSettings = $alertSetting
  $monitor.Status = "PendingUpdate"
  $monitor.GetManagementPack().AcceptChanges()
  代码中首先得到Monitor对象,接着再得到ManagementPack对象,然后初始化了ManagementPackMonitorAlertSettings的一个实例,并且由于AlertMessage的类型也必须是ManagementPackStringResource,因此接着初始化该类的一个实例,这里大家需要为构造函数,传递代表ManagementPack的变量以及一个标识字符串。接下来设置AlertSetting的各个属性,比如什么时候发出Alert,严重程度是什么,关键度是什么,然后将Monitor的状态设置为待更新,最后让ManagementPack接受更改。

  这里不得不承认修改这个设置是一件非常复杂的事,可能已经脱离系统工程师的范畴了,当然我们可以期待未来SCOM的开发团队来简化这些操作,但是随之而来的一种情况可能就是大家看到就不再是80多个命令,而是变成几百个命令。这边就不在深入探讨怎么样在PowerShell中修改Monitor的属性了,有兴趣的朋友不妨参考下MSDN和SCOM SDK来实现你的需求。
  已发表 2011年7月11日 21:44 作者 ghjconan
  归档在:SCOM, PowerShell, OpsMgr


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-561865-1-1.html 上篇帖子: SCOM PowerShell 命令使用指南 - 07 (Agentless) 下篇帖子: SCOM PowerShell 命令使用指南 - 09 (MonitoringObject)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表