CIM Indications Listener deploy and discovery PowerShell script
Fujitsu.Servers.PRIMERGY.ESXi.CIMIndicationsListener.Discovery.DataSource (DataSourceModuleType)
PowerShell script to deploy and discover CIM Indications Listener windows service
Element properties:
Member Modules:
Overrideable Parameters:
Source Code:
<DataSourceModuleType ID="Fujitsu.Servers.PRIMERGY.ESXi.CIMIndicationsListener.Discovery.DataSource" Accessibility="Public" Batching="false">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="IntervalSeconds" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="Scheduler" TypeID="System!System.Discovery.Scheduler">
<Scheduler>
<SimpleReccuringSchedule>
<Interval>$Config/IntervalSeconds$</Interval>
<SyncTime/>
</SimpleReccuringSchedule>
<ExcludeDates/>
</Scheduler>
</DataSource>
<ProbeAction ID="Script" TypeID="Windows!Microsoft.Windows.PowerShellDiscoveryProbe">
<ScriptName>CIMIndicationsListenerDiscovery.ps1</ScriptName>
<ScriptBody><Script>
#-------------------------------------------------------------------
# Fujitsu
# Copyright 2015-2019 FUJITSU LIMITED
#
# CIMIndicationsListenerDiscovery.ps1
#
# Summary:
# Deploy and discover script for Fujitsu PRIMERGY CIM Indications Listener.
#
#-------------------------------------------------------------------
param (
[string] $SourceId,
[string] $ManagedEntityId,
[string] $PrincipalName,
[switch] $OutsideManagementPack
)
Import-Module ("$FileResource[Name='Fujitsu.Servers.PRIMERGY.PS.CommonModule']/Path$", "$PSScriptRoot\Modules\CommonModule.psm1" )[[bool]$OutsideManagementPack]
Import-Module ("$FileResource[Name='Fujitsu.Servers.PRIMERGY.PS.LoggerModule']/Path$", "$PSScriptRoot\Modules\LoggerModule.psm1" )[[bool]$OutsideManagementPack]
Import-Module ("$FileResource[Name='Fujitsu.Servers.PRIMERGY.PS.CIMIndicationsListener']/Path$", "$PSScriptRoot\Modules\CIMIndicationsListener.psm1")[[bool]$OutsideManagementPack]
$script:servicePath = ("$FileResource[Name='Fujitsu.Servers.PRIMERGY.CIMIndicationsListener']/Path$", "$PSScriptRoot\..\Resources\Fujitsu.Servers.PRIMERGY.CIMIndicationsListener.exe")[[bool]$OutsideManagementPack]
function Main {
$script:Logger = New-Logger -Section $SectionHostServer -HostTag $TagHostsDiscovery -ServerName $PrincipalName -ScriptName "CIMIndicationsListenerDiscovery.ps1" -CreateSampleConfig -OutsideManagementPack:$OutsideManagementPack
Set-CIMIndicationsListenerLogger $Logger
$Logger.Debug("SourceId = $SourceId")
$Logger.Debug("ManagedEntityId = $ManagedEntityId")
$Logger.Debug("PrincipalName = $PrincipalName")
$Logger.Debug("ServicePath = $ServicePath")
$ver = Get-RegValue -SubKey $RegKeyCIMListener -Property $RegValueVersion
$port = Get-RegValue -SubKey $RegKeyCIMListener -Property $RegValueListenPort
$protocol = Get-RegValue -SubKey $RegKeyCIMListener -Property $RegValueListenProtocol
$status = Get-RegValue -SubKey $RegKeyCIMListener -Property $RegValueDeployStatus
$logName = Get-RegValue -SubKey $RegKeyCIMListener -Property $RegValueEventLogName
$logSource = Get-RegValue -SubKey $RegKeyCIMListener -Property $RegValueEventLogSource
$Logger.Debug("ServiceVersion = $ver")
$Logger.Debug("ServicePort = $port")
$Logger.Debug("ServiceProtocol = $protocol")
$Logger.Debug("ServiceStatus = $status")
$Logger.Debug("ServiceLogName = $logName")
$Logger.Debug("ServiceLogSrc = $logSource")
$SourceType = 0
try {
$script:oAPI = New-SCOMApiObject -OutsideManagementPack:$OutsideManagementPack
$script:oDiscoveryData = $script:oAPI.CreateDiscoveryData($SourceType, $SourceId, $ManagedEntityId)
} catch {
}
# Installation or Reinstallation of CIM Indications Listener
if ($status -eq $CIMListenerDeployStatus[$StatusAwaitingInstallation] -or $status -eq $CIMListenerDeployStatus[$StatusAwaitingReinstallation]) {
$Logger.Debug("Service is not installed. Installing service...")
try {
Uninstall-CIMListenerService
Disable-CIMListenerCertificateForPort $port
if ($protocol -ieq "https") {
$thumbprint = New-CIMListenerCertificate
Enable-CIMListenerCertificateForPort -Thumbprint $thumbprint -Port ([int]$port)
}
Install-CIMListenerService -ServicePath $servicePath -LogName $logName -LogSource $logSource
$status = $CIMListenerDeployStatus[$StatusInstalled]
} catch {
}
}
# CIM Indications Listener is installed
if ($status -eq $CIMListenerDeployStatus[$StatusInstalled]) {
$service = Get-CIMListenerService
if ($service -ne $null) {
$Logger.Debug("Service is installed.")
if ($service.State -ne "Running") {
$Logger.Debug(" > starting service...")
Start-Service $CIMListenerServiceName | Out-Null
}
$Logger.Debug(" > creating discovery data")
$oInst = $script:oDiscoveryData.CreateClassInstance("$MPElement[Name='Fujitsu.Servers.PRIMERGY.ESXi.CIMIndicationsListener']$")
$oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", "$PrincipalName")
$oInst.AddProperty("$MPElement[Name='FTSESXSEED!Fujitsu.Servers.PRIMERGY.ESXiSeed.HostServer']/PrincipalName$", "$PrincipalName")
$oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "$displayName")
$oInst.AddProperty("$MPElement[Name='Fujitsu.Servers.PRIMERGY.ESXi.CIMIndicationsListener']/ListenPort$", "$port")
$oInst.AddProperty("$MPElement[Name='Fujitsu.Servers.PRIMERGY.ESXi.CIMIndicationsListener']/ListenProtocol$", "$protocol")
$oInst.AddProperty("$MPElement[Name='FTSLIB!Fujitsu.ServerView.ManagementSoftware']/Version$", "$ver")
$oDiscoveryData.AddInstance($oInst)
} else {
$Logger.Debug("Service $displayName is not installed. Discovery data will be empty.")
}
}
$Logger.Debug("Returning discovery data.")
$script:oDiscoveryData
$Logger.Debug("***** Normal end of script. *****")
}
try {
Main
} finally {
$Logger.OutputBuffer()
}
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>SourceId</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>ManagedEntityId</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>PrincipalName</Name>
<Value>$Target/Property[Type="FTSESXSEED!Fujitsu.Servers.PRIMERGY.ESXiSeed.HostServer"]/PrincipalName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>1200</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="Script">
<Node ID="Scheduler"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>