-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathScomInstallConnector.ps1
71 lines (59 loc) · 2.24 KB
/
ScomInstallConnector.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
param(
#Action can be InstallConector or UninstallConector
[parameter(Mandatory=$true)]$Action,
[parameter(Mandatory=$true)]$ConnectorName,
#Your management server network name
[parameter(Mandatory=$true)]$ManagementServer
)
$ErrorActionPreference = "Stop";
$ScriptPath = $MyInvocation.MyCommand.Path -replace $MyInvocation.MyCommand.Name;
if ($Action -ne "InstallConnector" -and $Action -ne "UninstallConnector")
{
Write-Host -ForegroundColor Red "Action can be InstallConnector or UninstallConnector";
exit 3;
}
try
{
#We need to load SCOM assemblies to use its classes
$DLLs = ("Microsoft.EnterpriseManagement.Core.dll","Microsoft.EnterpriseManagement.OperationsManager.dll","Microsoft.EnterpriseManagement.Runtime.dll");
foreach ($lib in $DLLs)
{
[Reflection.Assembly]::LoadFile($ScriptPath + $lib) | Out-Null
}
}
catch
{
$exception = $_.Exception.Message;
Write-Host -ForegroundColor Red "Could not load assemblies, they should be in the same folder with script: " + $exception;
exit 3;
}
#This GUID is customizable, it is important to use the same one in all scripts working with this connector
$connectorGuid = New-Object Guid("{6A1F8C0E-B8F1-4147-8C9B-5A2F98F10007}");
if ($action -eq "InstallConnector")
{
$mg = New-Object Microsoft.EnterpriseManagement.ManagementGroup($ManagementServer);
$icfm = $mg.ConnectorFramework;
$info = New-Object Microsoft.EnterpriseManagement.ConnectorFramework.ConnectorInfo;
$info.Description = "...";
$info.DisplayName = $ConnectorName;
$info.Name = $ConnectorName;
$connector = $icfm.Setup($info, $connectorGuid);
$connector.Initialize();
}
elseif ($action -eq "UninstallConnector")
{
$mg = New-Object Microsoft.EnterpriseManagement.ManagementGroup($ManagementServer);
$icfm = $mg.ConnectorFramework;
$connector = $icfm.GetConnector($connectorGuid);
$subscriptions = $icfm.GetConnectorSubscriptions();
foreach ($subscription in $subscriptions)
{
if ($subscription.MonitoringConnectorId -eq $connectorGuid)
{
$icfm.DeleteConnectorSubscription($subscription);
}
}
$connector.Uninitialize();
$icfm.Cleanup($connector);
}
exit 0;