Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
I recently had to setup a lot of SCOM management groups with the same network discovery rule. I soon found out there isn't a powershell cmdlet for it. Of course, it's the kind of thing you don't really need that often, as only one discovery rule is allowed per management server. Anyway, I needed one, so I wrote one, and I hope this saves someone some time in the future.
# # Name: Udated OM-Create-Network-Discovery-Rule.ps1 # Written by: Rafaela Brownlie # Date: 20/06/17 # Description: The script programatically builds SNMP run as account, and builds a discovery rule to discover the UPS # $OMFQDN stores the FQDN for the SCOM server # $HostIP = Network device ip address # I wrote it for SCOM 2012 R2. I haven't tested on SCOM 2016, but I believe it should work. # the functionality requires the the Operations Manager firewal rules for ping back and snmp enabled. $OMFQDN = "" $hostIP = "" `` Write-Host "enbling firewall rules for $OMFQDN" -ForegroundColor Magenta $Netrules = @('Operations Manager SNMP Response','Operations Manager SNMP Request', 'Operations Manager SNMP Trap Listener', 'Operations Manager Ping Response (Echo Response - ICMPv4 IN)') invoke-command -ComputerName $OMFQDN -Args $Netrules -ScriptBlock { param($rule1, $rule2,$rule3,$rule4) $rule1, $rule2,$rule3,$rule4 | %{get-netfirewallrule -DisplayName $_ | set-netfirewallrule -enabled true} } #enable scom firewall rules Get-SCOMManagementGroupConnection | Remove-SCOMManagementGroupConnection Write-Host "Connecting to SCOM MG $OMFQDN" -ForegroundColor Magenta New-SCOMManagementGroupConnection -ComputerName $OMFQDN Get-SCOMManagementGroupConnection $mg = Get-SCOMManagementGroup -ComputerName $OMFQDN $resourcepool = get-scomresourcepool -DisplayName "All Management Servers*" $discovery = $mg.NetworkDiscovery.GetNetworkDiscoveries() if ($discovery -ne $null){ Write-Host "there is one network discovery for this MS" -BackgroundColor Magenta break } $Account = Get-SCOMrunAsAccount -Name "SNMPv1 Account" `` If($Account -eq $null) { Write-Host "Creating account" -ForegroundColor Magenta # $a = Get-Credential -Message "Enter community string in password field" Write-Host "Creating account" -ForegroundColor Magenta Add-SCOMRunAsAccount -Name "UPS SNMPv1" -Descrption "Account used for Eaton UPS monitoring" -CommunityString -String $a.Password $Account = Get-SCOMrunAsAccount -Name "UPS SNMPv1" Write-Host "distributing account" -ForegroundColor Magenta Set-SCOMRunAsDistribution -RunAsAccount $Account -LessSecure `` Write-Host "Waitin for account to be created" -backgroundColor Magenta sleep -Seconds 60 } $Profile = Get-SCOMRunAsProfile -DisplayName "SNMP Monitoring Account" Set-SCOMRunAsProfile -Action "Add" -Profile $Profile -Account $Account $ms = (Get-SCOMManagementServer) #set account distribution to more secure. Write-Host "creating configuration object" -ForegroundColor Magenta $networkconfiguration = New-Object Microsoft.EnterpriseManagement.NetworkMonitoring.NetworkDiscoveryConfiguration $networkconfiguration.DefaultRetryCount = 3 $networkconfiguration.DefaultSnmpPort = 161 $networkconfiguration.SnmpDefaultAutoTimeoutMilliseconds = 1500 $networkconfiguration.IcmpDefaultAutoTimeoutMilliseconds = 500 $networkconfigurationtype = New-Object Microsoft.EnterpriseManagement.NetworkMonitoring.NetworkDiscoveryType $networkconfigurationtype.value__ = 0 $networkconfiguration.Type = $networkconfigurationtype Write-Host "creating SNMP host object" -ForegroundColor Magenta $SNMPCommunity =[Microsoft.EnterpriseManagement.NetworkMonitoring.Snmpv1Community]::create($mg, $account $snmpHost = New-Object Microsoft.EnterpriseManagement.NetworkMonitoring.SnmpHost #my snmp host IP addresses. $snmpHost.Host = $hostIP $snmpHost.Community = $SNMPCommunity #you could add more than one host here: $networkconfiguration.Seeds.add($snmphost) $networkconfiguration.Communities.add($SNMPCommunity) Write-Host "creating discovery object" -ForegroundColor Magenta $networkdiscovery = new-object Microsoft.EnterpriseManagement.NetworkMonitoring.NetworkDiscovery #Name of the discovery rule: $networkdiscovery.DisplayName = "NetoworkDiscovery" $networkdiscovery.Enabled = $true $networkdiscovery.MonitoringServerPool = $resourcepool $networkdiscovery.Configuration = $networkconfiguration $networkdiscovery.NetworkDiscoveryAgent = Get-SCOMClassInstance -Class (Get-SCOMclass -DisplayName "health service") | where displayname -eq $OMFQDN Write-Host "creating Disccovery rule" -ForegroundColor Magenta $mg.NetworkDiscovery.InsertNetworkDiscovery($networkdiscovery) #allow some time for discovery creation sleep -Seconds 40 #Run the discovery once it's created: Start-SCOMTask -Task (get-scomtask -name System.NetworkManagement.FullOnDemandDiscovery) -Instance (Get-SCOMMonitoringObject -Class (Get-SCOMClass -DisplayName "Network Discovery Server"))
Please sign in to use this experience.
Sign in