在说完ManagementPack之后,我们再来看看名词部分是Discovery的命令。通过使用之前的命令,可以说我们已经完成了SCOM服务器的基本准备工作,接下来要让SCOM成为真正意义上的服务器保姆,那么必须让SCOM把分散在各处的服务器给集中圈养起来。而实现这个目标的正是以Discovery为名词部分的命令。而名词是Discovery的命令也分两类,第一类中只有一个命令Get-Discovery,这个命令非常有迷惑性,和第二类命令完全不同。Get-Discovery是指ManagementPack中的对象发现设置,这些设置是随着MP一起发布的,有些设置根据SCOM SKU的不同而不同。而这些设置会影响到SCOM中Override选项,详细介绍可以看下这篇MSDN博客。至于命令的运行效果如下图所示(部分)。

image

接下来,我们来看看第二类命令,第二类命令则是之前所说的将服务器圈养起来的命令。也就是大家在图形界面中运行的计算机和设备发现向导。然后这里也分成两个子类,一类是用于Windows计算机的发现,另一类是用于网络设备也就是支持SNMP协议设备的发现。最后我们要使用Start-Discovery来触发发现过程。接下来就先来看看如何使用用于发现Windows计算机的命令。首先我们要做的就是利用动词为New的New-WindowsDiscoveryCofiguration新建一个发现配置,为此我们需要配置以下参数ComputerName:计算机名

PerformVerification:是否对发现到计算机执行验证

ComputerType:可选的值是Both,Server和Workstation,即我们想要发现的Windows类型是服务器还是工作站,或者两者都要。

ActionAccountCredential:ActionAccount的凭据

然后我们来看一个示例命令:

$discoveryConfig = New-WindowsDiscoveryConfiguration -ComputerName "cnshaddsdc01" -PerformVerification -ComputerType Server -ActionAccountCredential (Get-Credential corp\administrator)

然后我们将新建出来的配置保存到变量$discoveryConfig中,供稍后的Start-Discovery命令来使用,不过Start-Discovery需要指定ManagementServer参数,因此利用之前我们学习的Get-ManagementServer来获得相关的ManagementServer对象,同样的还是要将找到的对象保存到变量中,这样我们就能使用Start-Discovery来触发查询了:

$discoveryResult = Start-Discovery -WindowsDiscoveryConfiguration $discoveryConfig -ManagementServer $managementServer -Verbose

这里还是将搜索结果保存到变量$discoveryResult中,因为之后我们在安装Agent的时候要引用这里得到查询结果。

接下我们在来看看如何设置LDAP查询条件。首先要做的是新建LDAP查询条件,然后保存到变量中,供后续命令使用。

$ldapqueryCriteria = New-LdapQueryDiscoveryCriteria -LdapQuery "(&(sAMAccountType=805306369)(name=cnsh*))" -domain corp

接着要利用这个LDAP查询语句来新建发现配置,因为LDAP条件也是属于Windows查询的一部分,因此我们还是要使用New-WindowsDiscoveryConfiguration来新建发现配置。

$discoveryConfig = New-WindowsDiscoveryConfiguration -LdapQueryDiscoveryCriteria $ldapqueryCriteria

然后我们再使用Start-Discovery来启动查询。整个查询的执行过程如下:

image

接着我们再来看看如何配置设备的发现配置。大家可能会想在测试环境中又没有真实的网络设备,那怎么来测试这个命令呢?这里我们可以在Windows上安装SNMP组件来测试这个命令。当然SNMP服务是需要进行配置的(192.168.0.30是SCOM的RMS服务器):

image

然后我们就来看看命令该怎么写:

$networkdeviceclass = get-monitoringclass -name "System.NetworkDevice"

首先是定义MonitoringClass对象

$discoveryConfig = new-devicediscoveryconfiguration -monitoringclass `

$networkdeviceclass -fromipaddress 192.168.0.1 -toipaddress 192.168.0.1

然后还是定义发现配置,这里除了要设置刚才定义的MonitoringClass之外,然后还要设置要扫描的IP段。

$encoding = new-object System.Text.UnicodeEncoding

$encodedCommunityString = $encoding.GetBytes("Windows")

$discoveryConfig.ReadOnlyCommunity = `

[System.Convert]::ToBase64String($encodedCommunityString)

最后我们要指定接受的社区名称,当然这里要注意要转换编码。

接着我们还是使用Start-Discovery发起查询:

Start-Discovery -DeviceDiscoveryConfiguration $discoveryConfig -ManagementServer $managementServer -Verbose

最终如果一切设置配置正确的话,会返回以下结果:

image

最后提醒一点,如果目标计算机已经安装了Agent了,那么他不会出现在结果列表中。

本次介绍中,主要为大家介绍了,如何使用SCOM的PowerShell命令来发现需要管理的设备,在下次介绍中,我们将完成发现设备后的下一个操作,安装代理,还请各位期待,

已发表 2011年5月31日 7:03 作者 ghjconan

归档在:SCOM, PowerShell, OpsMgr