Creating Management Packs in SCOM 2012 with PowerShell

I have recently started working with Anders Bengtsson on some Data Center automation. Our goal is to demonstrate an end-to-end solution for automating repetitive tasks, like adding common monitoring, via a self-service portal. We have released an initial version of the Operations Manager Admin Integration Pack but I wanted to go a step further and post the PowerShell code behind the activities in the Orchestrator IP.

Syntax:
.\CreateManagementPack.ps1 –ManagementServer om01.contoso.com –ManagementPackID custom.example.test –ManagementPackName “My Test MP”

  1 Param(
 2     [parameter(Mandatory=$true)]
 3     $ManagementServer,
 4     [parameter(Mandatory=$true)]
 5     $ManagementPackID,
 6     [parameter(Mandatory=$true)]
 7     $ManagementPackName)
 8 
 9 Write-Host "ManagementServer: "$ManagementServer
10 Write-Host "ManagementPackID: "$ManagementPackID
11 Write-Host "ManagementPackName: "$ManagementPackName
12 
13 Write-Host "Adding SCOM Snap-in"
14 Add-PSSnapin Microsoft.EnterpriseManagement.OperationsManager.Client
15 
16 Write-Host "Connecting to SCOM Management Group"
17 $MG = New-Object Microsoft.EnterpriseManagement.ManagementGroup($ManagementServer)
18 
19 Write-Host "Creating new Microsoft.EnterpriseManagement.Configuration.IO.ManagementPackFileStore object"
20 $MPStore = New-Object Microsoft.EnterpriseManagement.Configuration.IO.ManagementPackFileStore
21 
22 Write-Host "Creating new Microsoft.EnterpriseManagement.Configuration.ManagementPack object"
23 $MP = New-Object Microsoft.EnterpriseManagement.Configuration.ManagementPack($ManagementPackID, $ManagementPackName, (New-Object Version(1, 0, 0)), $MPStore)
24 
25 Write-Host "Importing Management Pack"
26 $MG.ImportManagementPack($MP)
27 
28 Write-Host "Getting Management Pack"
29 $MP = $MG.GetManagementPacks($ManagementPackID)[0]
30 
31 Write-Host "Setting Display Name"
32 $MP.DisplayName = $ManagementPackName
33 
34 Write-Host "Setting Description"
35 $MP.Description = "Auto Generated Management Pack"
36 
37 Write-Host "Saving Changes"
38 $MP.AcceptChanges()
39 
40 Write-Host "Script Completed"

CreateManagementPack.renametops1