Fujitsu PRIMERGY Seed Discovery Rule for Windows Servers

Fujitsu.Servers.PRIMERGY.WindowsSeed.Discovery (Discovery)

Seed Discovery Rule for Fujitsu PRIMERGY Windows Servers. Any further server and components discovery is based on this first stage discovery outcome.

Knowledge Base article:

Summary

This discovery rule instantiates Fujitsu PRIMERGY Windows Servers via Registry Access.

Element properties:

TargetMicrosoft.Windows.Server.Computer
EnabledTrue
Frequency14400
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.FilteredRegistryDiscoveryProvider Default

Source Code:

<Discovery ID="Fujitsu.Servers.PRIMERGY.WindowsSeed.Discovery" Enabled="true" Target="Windows!Microsoft.Windows.Server.Computer" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Fujitsu.Servers.PRIMERGY.WindowsSeed.Server"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.FilteredRegistryDiscoveryProvider">
<ComputerName>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<RegistryAttributeDefinitions>
<!-- Server Manufacturer from PYServerData (fallback for unsupported systems, e.g. VMs) -->
<RegistryAttributeDefinition>
<AttributeName>PYServerManufacturerVal</AttributeName>
<Path>SOFTWARE\Fujitsu\ServerView Suite\SCOM Integration\SVISCOM-Win\PYServerData\Manufacturer</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<!-- Server Manufacturer and Type from CurrentControlSet\Control\SystemInformation -->
<RegistryAttributeDefinition>
<AttributeName>SystemManufacturerVal</AttributeName>
<Path>System\CurrentControlSet\Control\SystemInformation\SystemManufacturer</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<RegistryAttributeDefinition>
<AttributeName>SystemProductVal</AttributeName>
<Path>System\CurrentControlSet\Control\SystemInformation\SystemProductName</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<!-- Server Manufacturer and Type from Hardware\Description\System\Bios -->
<RegistryAttributeDefinition>
<AttributeName>HardwareManufacturerVal</AttributeName>
<Path>Hardware\Description\System\Bios\SystemManufacturer</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<RegistryAttributeDefinition>
<AttributeName>HardwareProductVal</AttributeName>
<Path>Hardware\Description\System\Bios\SystemProductName</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<!-- Windows edition (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion) -->
<RegistryAttributeDefinition>
<AttributeName>WinProductName</AttributeName>
<Path>Software\Microsoft\Windows NT\CurrentVersion\ProductName</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<RegistryAttributeDefinition>
<AttributeName>WinEditionID</AttributeName>
<Path>Software\Microsoft\Windows NT\CurrentVersion\EditionID</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<!-- PowerShell 1 is installed on Server -->
<RegistryAttributeDefinition>
<AttributeName>PS1InstalledOnServer</AttributeName>
<Path>SOFTWARE\Microsoft\PowerShell\1\Install</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<!-- PowerShell 1 version -->
<RegistryAttributeDefinition>
<AttributeName>PS1Version</AttributeName>
<Path>SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<!-- PowerShell 3 is installed on Server -->
<RegistryAttributeDefinition>
<AttributeName>PS3InstalledOnServer</AttributeName>
<Path>SOFTWARE\Microsoft\PowerShell\3\Install</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
<!-- PowerShell 3 version -->
<RegistryAttributeDefinition>
<AttributeName>PS3Version</AttributeName>
<Path>SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion</Path>
<PathType>1</PathType>
<AttributeType>1</AttributeType>
</RegistryAttributeDefinition>
</RegistryAttributeDefinitions>
<Frequency>14400</Frequency>
<ClassId>$MPElement[Name="Fujitsu.Servers.PRIMERGY.WindowsSeed.Server"]$</ClassId>
<InstanceSettings>
<Settings>
<Setting>
<Name>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Name>
<Value>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/DNSName$</Name>
<Value>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/DNSName$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/NetbiosComputerName$</Name>
<Value>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/NetbiosComputerName$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/NetbiosDomainName$</Name>
<Value>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/NetbiosDomainName$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/NetworkName$</Name>
<Value>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/DomainDnsName$</Name>
<Value>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/DomainDnsName$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="System!System.Entity"]/DisplayName$</Name>
<Value>$Target/Property[Type="System!System.Entity"]/DisplayName$</Value>
</Setting>
</Settings>
</InstanceSettings>
<!-- If Not Nano And (PYServerManufacturerVal Or (SystemManufacturerVal And SystemProductVal) Or (HardwareManufacturerVal And HardwareProductVal)) And
(PS1Version = 2.0 Or PS3InstalledOnServer) -->
<Expression>
<And>
<!-- No Nano in Windows edition -->
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Values/WinEditionID</XPathQuery>
</ValueExpression>
<Operator>DoesNotMatchRegularExpression</Operator>
<Pattern>[Nn][Aa][Nn][Oo]</Pattern>
</RegExExpression>
</Expression>
<Expression>
<Or>
<!-- We found the fallback string. Accept discovery immediately. -->
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Values/PYServerManufacturerVal</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^[Ff][Uu][Jj][Ii][Tt][Ss][Uu]|^[Ff][Ss][Cc]$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<And>
<!-- Found Fujitsu PRIMERGY/PRIMEQUEST in CurrentControlSet\Control\SystemInformation. Accept. -->
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Values/SystemManufacturerVal</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^[Ff][Uu][Jj][Ii][Tt][Ss][Uu]|^[Ff][Ss][Cc]$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Values/SystemProductVal</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^[Pp][Rr][Ii][Mm][Ee]</Pattern>
</RegExExpression>
</Expression>
</And>
</Expression>
<Expression>
<And>
<!-- Found Fujitsu PRIMERGY/PRIMEQUEST in Hardware\Description\System\Bios. Accept. -->
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Values/HardwareManufacturerVal</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^[Ff][Uu][Jj][Ii][Tt][Ss][Uu]|^[Ff][Ss][Cc]$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Values/HardwareProductVal</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^[Pp][Rr][Ii][Mm][Ee]</Pattern>
</RegExExpression>
</Expression>
</And>
</Expression>
</Or>
</Expression>
<Expression>
<Or>
<!-- PowerShell 1 version = 2.0 -->
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Values/PS1Version</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2.0</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<!-- PowerShell 3 is installed on Server -->
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Values/PS3InstalledOnServer</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>1</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
</And>
</Expression>
</DataSource>
</Discovery>