在说完Agent之后,我们再来看看另外一种管理模式,也就是所谓的Agentless模式。该模式需要使用命令名词部分包含Remotely的名词来进行管理。名词中包含Remotely的命令也可以分为两组,第一组针对计算机,第二组针对设备。接下来我们就先来看下针对计算机的命令。

和之前的Agent模式类似,首先我们要做的就是添加计算机,而添加的方式也是一样的,需要使用名词部分是Discovery的命令来完成。具体过程如下:

$proxyAgent = Get-Agent | ?{$_.Name -eq "cnshaddsdc01.corp.contoso.com"}
$managementServer = Get-ManagementServer | ?{$_.Name -eq "cnshscomms01.corp.contoso.com"}
$discoveryConfig = New-WindowsDiscoveryConfiguration -ComputerName "cnshsqlsvr01"
$discoveryResult = Start-Discovery -WindowsDiscoveryConfiguration $discoveryConfig -ManagementServer $managementServer –Verbose
Add-RemotelyManagedComputer -ProxyAgent $proxyagent -Computer $discoveryResult.custommonitoringobjects -Verbose

命令的执行效果如下:

image

这里我们首先要做的就是找到作为ProxyAgent的对象,由于我测试环境里面机器数量有限,因此我就选取域控制器的Agent作为ProxyAgent,在实际生产环境中,还请大家按需指定。指定完ProxyAgent后,我们还需要指定用于执行发现的ManagementServer。当然ProxyAgent和ManagementServer的查找结果需要保存到变量中,供后续使用。接下来我们还是像之前一样,需要指定查询条件并执行查询,这里我还是使用之前的查询条件,将一台SQL服务器作为远程管理的计算机。等查询结果返回之后,我们就使用Add-RemotelyManagedComputer来进行添加操作,命令的使用也比较简单,只需将之前准备的两个变量分别作为ProxyAgent和Computer的参数值输入即可。最后便看到目标服务器已经作为远程管理计算机被添加到SCOM中了。我们可以使用Get-RemotelyManagedComputer来进行确认。命令的最终输出结果和刚才Add-RemotelyManagedComputer命令返回的结果是一样的。最后,如果将来有一天我们要从Agentless模式切换到Agent模式,那么肯定是要先执行删除远程管理计算机的操作,和其他动词部分是Remove的命令一样,只需要使用Get-RemotelyManagedComputer找到相应的远程管理计算机然后通过管道传递给Remove-RemotelyManagedComputer即可。这里就不在多做演示了。

在说完名词部分是RemotelyManagedComputer的命令之后,我们在来看看名词部分是RemotelyManagedDevice的命令。之前我们谈到了如何使用Start-Discovery来发现网络设备,但是相信大家都知道光发现了设备是没有意义的,对该设备进行管理才是我们的目标。而将设备添加到SCOM中的命令正是Add-RemotelyManagedDevice。接下来我们先来回顾下之前的发现命令,然后再将发现到的设备添加到SCOM中,使用到的命令如下:

$proxyAgent = Get-Agent | ?{$_.Name -eq "cnshaddsdc01.corp.contoso.com"}$managementServer = Get-ManagementServer | ?{$_.Name -eq "cnshscomms01.corp.contoso.com"}
$networkdeviceclass = get-monitoringclass -name "System.NetworkDevice"$discoveryConfig = new-devicediscoveryconfiguration -monitoringclass `
$networkdeviceclass -fromipaddress 192.168.0.1 -toipaddress 192.168.0.1
$encoding = new-object System.Text.UnicodeEncoding
$encodedCommunityString = $encoding.GetBytes("Windows")$discoveryConfig.ReadOnlyCommunity = `
[System.Convert]::ToBase64String($encodedCommunityString)
$remoteDevice = Start-Discovery -DeviceDiscoveryConfiguration $discoveryConfig -ManagementServer $managementServer –Verbose
Add-RemotelyManagedDevice -ProxyAgent $proxyAgent -Device $remoteDevice. custommonitoringobjects -Verbose

命令的执行结果如下:

image

这里Add-RemotelyManagedDevice命令的使用还是很简单的,和之前一样,需要指定ProxyAgent参数,然后要指定Device对象。命令是否执行成功的关键还是在于能否发现到Device对象。因此如果大家发现最后命令执行失败的话,不妨检查下$remoteDevice对象。至于Remove-RemotelyManagedDevice命令,相比大家已经知道怎么使用了,这里就不再多做介绍了。

在结束本次SCOM的PowerShell命令介绍之前,先来预告下之后的安排,目前我正在使用PowerShell Module来实现Windows Update Agent API,等SCOM系列文章完成之后,便会和大家分享,因此无论是SCOM还是Windows Update Agent API的文章都尽情给位期待。

image

已发表 2011年6月27日 21:29 作者 ghjconan

归档在:SCOM, PowerShell, OpsMgr