Hyper-V MPE 2016 SMB Shares Discovery

HyperV.MPE.2016.SMBShare.Discovery (Discovery)

Discovery

Element properties:

TargetMicrosoft.Windows.HyperV.2016.ServerRole
EnabledTrue
Frequency43200
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
PS DataSource Microsoft.Windows.TimedPowerShell.DiscoveryProvider Default

Source Code:

<Discovery ID="HyperV.MPE.2016.SMBShare.Discovery" Enabled="true" Target="MSWinHV2016Dis!Microsoft.Windows.HyperV.2016.ServerRole" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="HyperV.MPE.2016.SMBShare"/>
</DiscoveryTypes>
<DataSource ID="PS" TypeID="MSWinLib!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
<ScriptName>HyperV.MPE.2016.SMBShare.Discovery.ps1</ScriptName>
<ScriptBody><Script>

param($sourceId,$managedEntityId,$computerName)

$listOfShares = Get-WmiObject -Class MSFT_SMBConnection -Namespace root\Microsoft\Windows\SMB | where {$_.UserName -like "NT VIRTUAL MACHINE*"} | Sort-Object servername,sharename -Unique

#SCOM
$api = New-Object -comObject 'MOM.ScriptAPI'
$discoveryData = $api.CreateDiscoveryData(0, $sourceId, $managedEntityId)

foreach ($Share in $listOfShares)
{
$instance = $discoveryData.CreateClassInstance("$MPElement[Name='HyperV.MPE.2016.SMBShare']$")

$instance.AddProperty("$MPElement[Name='SLib!System.Entity']/DisplayName$","\" + $Share.servername + "\" + $Share.sharename)

$instance.AddProperty("$MPElement[Name='MSWinLib!Microsoft.Windows.Computer']/PrincipalName$", $computerName)


$instance.AddProperty("$MPElement[Name='MSWinLib!Microsoft.Windows.LogicalDevice']/DeviceID$", "\" + $Share.servername + "\" + $Share.sharename)
$instance.AddProperty("$MPElement[Name='HyperV.MPE.2016.SMBShare']/Servername$", $Share.servername)
$instance.AddProperty("$MPElement[Name='HyperV.MPE.2016.SMBShare']/Sharename$", $Share.sharename)

$discoveryData.AddInstance($instance)
}


$discoveryData


</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>sourceID</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>managedEntityID</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>computerName</Name>
<Value>$Target/Host/Property[Type="MSWinLib!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>240</TimeoutSeconds>
</DataSource>
</Discovery>