Part 1: Bulk import server locations with PowerShell
For a recent project I had to specify the longitude and latitude for all my servers (about a 1000) to be able to show them on a map.
In OpsMgr 2012 you can now use the the following new PowerShell CMDlets:
- The New-SCOMLocation cmdlet creates a location. You can associate agent-managed computers, management servers, or resource pools with a location by using the Set-SCOMLocation cmdlet. The Web Application Availability Monitoring Summary Map Dashboard displays the items that you associate with a location.
- The Set-SCOMLocation cmdlet associates one or more agent-managed computers, management servers, or resource pools with a location. This cmdlet removes a current association, if one exists. The Web Application Availability Monitoring Summary Map Dashboard displays state information for agents, management servers, and resource pools associated with a location.
So In part 1 of this blog series I’m going to create a PowerShell script to bulk import my locations and then in part 2 a second script to bulk associate servers to a certain location. Lastly I’m going to utilize all those locations and GPS coordinates in a map.
The following PowerShell script will add the Longitude and Latitude coordinates of about 790 cities from a CSV file. You can download the CSV file from here.
[xml]
//***************************
// *\** Script Header ***
//
// Solution:
// File: Addlocations.ps1
// Author: Alexandre Verkinderen
// Purpose: Add locations from excell
//
//
// *\** End Header ***
//***************************
//—————————————————————————-
#//
#// Global constant and variable declarations
#/
#//—————————————————————————-
$list = Import-Csv -Path “C:tempLocations.csv”
$MS = “SCOMSERVER4”
Import-Module OperationsManager
#Connect to OpsMgr Management GroupStart-OperationsManagerClientShell -ManagementServerName: $MS -PersistConnection: $true -Interactive: $true
#//—————————————————————————-
#// Main routines
#//—————————————————————————-
foreach ($entry in $list)
{
$name = $entry.Name
$Long = $entry.Long
$Lat = $entry.Lat
#Set location
New-SCOMLocation –DisplayName $Name –Latitude $Lat –Longitude $Long
write-host Location $name added
}
[/xml]
Stay tuned for part 2.
Alexandre Verkinderen
Leave a comment