接下来的一组命令和之前的相比,相信大家的关注度应该不低。因为没有ManagementPack,SCOM就是一空壳。ManagementPack同时也是一组知识的集合,我们可以通过ManagementPack学到很多东西。当然有时候大家也会抱怨ManagementPack里面的一些设置不太适合我的环境,一个个调整太费事。但是如果让大家根据自己的环境一个个从头开始设置监视器,估计大家马上就会怀念ManagementPack。

说了那么多,接下来我们就来看看怎么样使用名词部分是ManagementPack的命令。首先毫无疑问的是Install-ManagementPack,默认SCOM安装好之后是不存在任何ManagementPack,因此我们要做的就是安装ManagementPack。和图形界面有所类似,命令行下的也分为两步。只是少许有点区别的是,图形界面是先导入后安装,而命令行下下可以做到导入后直接安装。但是这里需要注意到必须先导入作为其他管理包所依赖的基础管理包,然后导入剩余的管理包。接下来我们就以安装用于SQL的ManagementPack为例来看下命令的使用方法。

用了那么久PowerShell,大家想必都学会了下面的批量对对象执行操作的命令了吧?

Get-ChildItem "C:\Program Files (x86)\System Center Management Packs\SQLServerMP" -Filter *.mp | %{Install-ManagementPack -FilePath $_.FullName -Verbose}

但是在SCOM的PowerShell管理控制台中使用以下命令会出现如下问题:

image

问题的原因也很简单,之前也提到了,因为SCOM的ManagementPack之间是有依赖性的。因此假设我们要在新安装的SCOM服务器上导入管理包,那么至少要分两步走,第一步导入文件名中包含Library的ManagementPack,第二步导入剩下的ManagementPack。因此刚才的那一条命令要拆成两条执行,具体命令如下:

Get-ChildItem "C:\Program Files (x86)\System Center Management Packs\SQLServerMP" -Filter *Library* | %{Install-ManagementPack -FilePath $_.FullName -Verbose}

Get-ChildItem "C:\Program Files (x86)\System Center Management Packs\SQLServerMP" -Exclude "*Library*","*.RTF" | %{Install-ManagementPack -FilePath $_.FullName -Verbose}

命令的运行过程如下图所示:

image

导入之后我们可以使用Get-ManagementPack来确认相关的ManagementPack有没有被安装到位:

image

同时Export-ManagementPack和Uninstall-ManagementPack也必须配合Get-ManagementPack使用。接下来就来看下如何导出ManagementPack。熟悉SCOM的朋友都知道,默认ManagementPack里面的设置都无法直接保存,我们必须手动创建一个新的ManagementPack来保存这些修改。那么作为一个好习惯,将每次修改后的ManagementPack都导出保存便是理所应当的。但是当我们有大量修改需要进行的时候,如果每次修改一次都要导出的话,大家肯定会感到烦躁,因此我们可以尝试使用Export-ManagementPack来导出相应的管理包。比如在测试环境中,我新建了一个名为Contoso的管理包,那么导出的命令便是:

image

最后如果我们要卸载ManagementPack的话便可以如法炮制,但是卸载的时候由于ManagementPack之间的依赖性,如果直接使用以下命令:

Get-ManagementPack | ?{$_.Name -match "SQL"} | %{Uninstall-ManagementPack -ManagementPack $_ -Verbose}

是无法一次性卸载所有涉及到的ManagementPack的。因此这里我们可以使用一个小技巧,如果是微软官方出品的ManagementPack可以先卸载名称中包含Monitoring的ManagementPack,然后再卸载名称中包含Discover的ManagementPack,最后卸载名称中有Library的ManagementPack。接下来我们还是以SQL Server的ManagementPack问题为例来看下Uninstall-ManagementPack是如何使用的:

Get-ManagementPack | ?{$_.Name -match "SQL\S+Monitoring"} | %{Uninstall-ManagementPack -ManagementPack $_ -Verbose}

Get-ManagementPack | ?{$_.Name -match "SQL\S+Discovery"} | %{Uninstall-ManagementPack -ManagementPack $_ -Verbose}

Get-ManagementPack | ?{$_.Name -match "SQL\S+Library"} | %{Uninstall-ManagementPack -ManagementPack $_ -Verbose}

这次的结果相信是大家会比较满意的:

image

本次的介绍就就到此结束了,下次将为大家介绍安装Agent之前的一项准备工作,即发现需要进行监控的设备,还请大家期待。

已发表 2011年5月23日 21:26 作者 ghjconan

归档在:SCOM, PowerShell, OpsMgr