<ManagementPack  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsi:noNamespaceSchemaLocation="C:\MPSchema\ManagementPackSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  <Manifest>
    <Identity>
      <ID>QND.Windows.Server.2008.LDisk</ID>
      <Version>6.0.6278.6</Version>
    </Identity>
    <Name>Progel Windows Server 2008 Rules</Name>
    <References>
      <Reference Alias="System">
        <ID>System.Library</ID>
        <Version>6.0.5000.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Windows">
        <ID>Microsoft.Windows.Library</ID>
        <Version>6.0.5000.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
</Reference>
      <Reference Alias="SystemHealth">
        <ID>System.Health.Library</ID>
        <Version>6.0.5000.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Win2008">
        <ID>Microsoft.Windows.Server.2008.Discovery</ID>
        <Version>6.0.5000.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Win2008Mon">
        <ID>Microsoft.Windows.Server.2008.Monitoring</ID>
        <Version>6.0.5000.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="SystemPerf">
        <ID>System.Performance.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="SCDW">
        <ID>Microsoft.SystemCenter.DataWarehouse.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="SC">
        <ID>Microsoft.SystemCenter.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <TypeDefinitions>
    <ModuleTypes>
        <ProbeActionModuleType ID="QND.Library.DiskSpaceGet.PT" Accessibility="Public" Batching="false">
          <Configuration>
            <IncludeSchemaTypes>
              <SchemaType>System!System.CommandExecuterSchema</SchemaType>
            </IncludeSchemaTypes>
            <xsd:element minOccurs="1" name="ComputerName" type="xsd:string" />
            <xsd:element minOccurs="1" name="DiskLabel" type="xsd:string" />
            <xsd:element name="ScriptTimeout" type="xsd:integer"  />
            <xsd:element minOccurs="0" maxOccurs="1" name="EventPolicy" type="CommandExecuterEventPolicyType" />
          </Configuration>
          <OverrideableParameters>
            <OverrideableParameter ID="ScriptTimeout" Selector="$Config/ScriptTimeout$" ParameterType="int" />
          </OverrideableParameters>
          <ModuleImplementation Isolation="Any">
            <Composite>
              <MemberModules>
                <ProbeAction ID="WA1" TypeID="System!System.CommandExecuterProbe">
                  <ApplicationName>%windir%\system32\cscript.exe</ApplicationName>
                  <WorkingDirectory />
                  <CommandLine>//nologo QND.Library.DiskInfo.vbs "$Config/ComputerName$" "$Config/DiskLabel$"</CommandLine>
                  <SecureInput></SecureInput>
                  <TimeoutSeconds>$Config/ScriptTimeout$</TimeoutSeconds>
                  <RequireOutput>true</RequireOutput>
                  <Files>
                    <File>
                      <Name>QND.Library.DiskInfo.vbs</Name>
                      <Contents>
                        <![CDATA[

  
    Option Explicit
SetLocale ("en-us")

On Error Resume Next

Dim dtStart, oArgs


    DIm TargetComputer
    Dim P_DiskLabel
	TargetComputer = WScript.Arguments.Item(0)
	P_DiskLabel = WScript.Arguments.Item(1)
    Dim bDiskFound

                  Const BYTES_IN_MB = 1048576 '=2^20

                  Dim IsVolumeInfoSupported, SystemDrive, bIsSystemDrive
                  IsVolumeInfoSupported = Is_Win32_Volume_Supported(TargetComputer)

                  Dim oWmiDiskSet, oWmiDisk, bBagIsNotEmpty
                  bDiskFound = False
                  If IsVolumeInfoSupported Then
                  Set oWmiDiskSet = WMIGetInstance("winmgmts:\\" + TargetComputer & "\root\cimv2", "Win32_Volume")
                  Else
                  Set oWmiDiskSet = WMIExecQuery("winmgmts:\\" + TargetComputer & "\root\cimv2", "select * from Win32_LogicalDisk where (DriveType=3 or DriveType=6) and FileSystem != null")
                  End If

                  For Each oWmiDisk in oWmiDiskSet
                      If oWmiDisk.DriveType = 3 Then
                          Dim sDriveLetter, nFreeSpace, nMaxSize, nPctFree, nMBFree
                          nFreeSpace = oWmiDisk.FreeSpace
                          If IsNull(nFreeSpace) Then nFreeSpace = 0
                          If IsVolumeInfoSupported Then
                              sDriveLetter = oWmiDisk.DriveLetter
                              nMaxSize = oWmiDisk.Capacity
                              If IsNull(sDriveLetter) Then
                                  sDriveLetter  = oWmiDisk.Name
                                  sDriveLetter = Left(sDriveLetter, Len(sDriveLetter)-1)
                              End If
                          Else
                              sDriveLetter = oWmiDisk.DeviceId
                              nMaxSize = oWmiDisk.Size
                          End If
                          ' If nMaxSize is null or 0 then drive is not formatted - do not return property bag for it.
                          If Not IsNull(nMaxSize) And nMaxSize > 0 Then
                          nPctFree = Round(nFreeSpace / nMaxSize * 100, 0)
                          nMBFree = Round(nFreeSpace / BYTES_IN_MB, 0)
                              If UCASE(sDriveLetter) = UCASE(P_DiskLabel) Then
                              'Output data
                                WScript.Echo String(80, "-")
                                WScript.Echo "Server: " & TargetComputer & " Disk: " & P_DiskLabel
                                WScript.Echo String(80, "-")
                                WScript.Echo "Disk Size (MB): " & Round(nMaxSize / BYTES_IN_MB, 0)
                                Wscript.Echo "Disk Free Space (MB): " & nMBFree
                                WScript.Echo "Disk Free %: " & nPctFree & "%"
                                bDiskFound = true
                                exit for
                              End If
                          End If
                  End If
               Next

               If Not bDiskFound Then
                    WScript.Echo String(80, "-")
                    WScript.Echo "Server: " & TargetComputer & " Disk: " & P_DiskLabel & " *NOT FOUND*"
                    WScript.Echo String(80, "-")
               end if




'
                  '---------------------------------------------------------------------------
                  ' Returns WMI Instance requested. Tries to execute WMI query a N times.
                  '---------------------------------------------------------------------------
                  Function WMIGetInstanceExTryN(oWMI, ByVal sInstance, ByVal N)
                  Dim oInstance, nInstanceCount
                  Dim e, i
                  Set e = New Error

                  For i = 0 To i < N
                  On Error Resume Next
                  Set oInstance = oWMI.InstancesOf(sInstance)
                  e.Save
                  On Error Goto 0
                  If IsEmpty(oInstance) Or e.Number <> 0 Then
                  If i = N - 1 Then
                  ThrowScriptError "The class name '" & sInstance & "' returned no instances.  Please check to see if this is a valid WMI class name.", e
                  End If
                  Else
                  On Error Resume Next
                  nInstanceCount = oInstance.Count
                  e.Save
                  On Error Goto 0
                  If e.Number <> 0 Then
                  If i = N - 1 Then
                  ThrowScriptError "The class name '" & sInstance & "' did not return any valid instances.  Please check to see if this is a valid WMI class name.", e
                  End If
                  Else
                  Exit For
                  End If
                  End If
                  WScript.Sleep(1000)
                  Next

                  Set WMIGetInstanceExTryN = oInstance
                  End Function

                  '---------------------------------------------------------------------------
                  ' Returns WMI Instance requested.
                  '---------------------------------------------------------------------------
                  Function WMIGetInstanceEx(oWMI, ByVal sInstance)
                  Dim oInstance, nInstanceCount
                  Dim e
                  Set e = New Error

                  On Error Resume Next
                  Set oInstance = oWMI.InstancesOf(sInstance)
                  e.Save
                  On Error Goto 0
                  If IsEmpty(oInstance) Or e.Number <> 0 Then
                  ThrowScriptError "The class name '" & sInstance & "' returned no instances.  Please check to see if this is a valid WMI class name.", e
                  End If

                  'Determine if we queried a valid WMI class - Count will return 0 or empty
                  On Error Resume Next
                  nInstanceCount = oInstance.Count
                  e.Save
                  On Error Goto 0
                  If e.Number <> 0 Then
                  ThrowScriptError "The class name '" & sInstance & "' did not return any valid instances.  Please check to see if this is a valid WMI class name.", e
                  End If

                  Set WMIGetInstanceEx = oInstance
                  End Function

                  '---------------------------------------------------------------------------
                  ' Connect to WMI.
                  '---------------------------------------------------------------------------
                  Function WMIConnect(ByVal sNamespace)
                  Dim oWMI
                  Dim e
                  Set e = New Error
                  On Error Resume Next
                  Set oWMI = GetObject(sNamespace)
                  e.Save
                  On Error Goto 0
                  If IsEmpty(oWMI) Then
                  ThrowScriptError "Unable to open WMI Namespace '" & sNamespace & "'. Check to see if the WMI service is enabled and running, and ensure this WMI namespace exists.", e
                  End If
                  Set WMIConnect = oWMI
                  End Function

                  '---------------------------------------------------------------------------
                  ' Returns WMI Instance requested.
                  '---------------------------------------------------------------------------
                  Function WMIGetInstance(ByVal sNamespace, ByVal sInstance)
                  Dim oWMI, oInstance
                  Set oWMI = WMIConnect(sNamespace)
                  Set oInstance = WMIGetInstanceEx(oWMI, sInstance)
                  Set WMIGetInstance = oInstance
                  End Function

                  '---------------------------------------------------------------------------
                  ' Returns WMI Instance requested.
                  '---------------------------------------------------------------------------
                  Function WMIGetInstanceNoAbort(ByVal sNamespace, ByVal sInstance)
                  Dim oWMI, oInstance, nInstanceCount

                  On Error Resume Next
                  Set oWMI = GetObject(sNamespace)
                  If Not IsEmpty(oWMI) Then
                  Set oInstance = oWMI.InstancesOf(sInstance)
                  If Not IsEmpty(oInstance) And Err.Number = 0 Then
                  'Determine if we queried a valid WMI class - Count will return 0 or empty
                  nInstanceCount = oInstance.Count
                  If Err.Number = 0 Then
                  Set WMIGetInstanceNoAbort = oInstance
                  On Error Goto 0
                  Exit Function
                  End If
                  End If
                  End If

                  On Error Goto 0
                  Set WMIGetInstanceNoAbort = Nothing
                  End Function

                  '---------------------------------------------------------------------------
                  ' Executes the WMI query and returns the result set.
                  '---------------------------------------------------------------------------
                  Function WMIExecQuery(ByVal sNamespace, ByVal sQuery)
                  Dim oWMI, oQuery, nInstanceCount
                  Dim e
                  Set e = New Error
                  On Error Resume Next
                  Set oWMI = GetObject(sNamespace)
                  e.Save
                  On Error Goto 0
                  If IsEmpty(oWMI) Then
                  ThrowScriptError "Unable to open WMI Namespace '" & sNamespace & "'.  Check to see if the WMI service is enabled and running, and ensure this WMI namespace exists.", e
                  End If

                  On Error Resume Next
                  Set oQuery = oWMI.ExecQuery(sQuery)
                  e.Save
                  On Error Goto 0
                  If IsEmpty(oQuery) Or e.Number <> 0 Then
                  ThrowScriptError "The Query '" & sQuery & "' returned an invalid result set.  Please check to see if this is a valid WMI Query.", e
                  End If

                  'Determine if we queried a valid WMI class - Count will return 0 or empty
                  On Error Resume Next
                  nInstanceCount = oQuery.Count
                  e.Save
                  On Error Goto 0
                  If e.Number <> 0 Then
                  ThrowScriptError "The Query '" & sQuery & "' did not return any valid instances.  Please check to see if this is a valid WMI Query.", e
                  End If

                  Set WMIExecQuery = oQuery
                  End Function

                  '---------------------------------------------------------------------------
                  ' Executes the WMI query and returns the result set, no abort version.
                  '---------------------------------------------------------------------------
                  Function WMIExecQueryNoAbort(ByVal sNamespace, ByVal sQuery)
                  Dim oWMI, oQuery
                  Set oWMI = GetObject(sNamespace)
                  Set oQuery = oWMI.ExecQuery(sQuery)
                  Set WMIExecQueryNoAbort = oQuery
                  End Function

                  '---------------------------------------------------------------------------
                  ' Retrieves WMI property.
                  '---------------------------------------------------------------------------
                  Function GetWMIProperty(oWmi, sPropName, nCIMType, ErrAction)
                  Dim sValue, oWmiProp, oError
                  Set oError = New Error

                  ' Check that object is valid.
                  If Not IsValidObject(oWmi) Then
                  If (ErrAction And ErrAction_ThrowError) = ErrAction_ThrowError Then _
                  ThrowScriptErrorNoAbort "Accessing property on invalid WMI object.", oError
                  If (ErrAction And ErrAction_Abort) = ErrAction_Abort Then _
                  Quit()

                  GetWMIProperty = ""
                  Exit Function
                  End If

                  ' Get properties...
                  On Error Resume Next
                  Set oWmiProp = oWmi.Properties_.Item(sPropName)
                  oError.Save
                  If oError.Number <> 0 Then
                  If (ErrAction And ErrAction_ThrowError) = ErrAction_ThrowError Then _
                  ThrowScriptErrorNoAbort "An error occurred while accessing WMI property: '" & sPropName & "'.", oError
                  If (ErrAction And ErrAction_Abort) = ErrAction_Abort Then _
                  Quit()
                  End If
                  On Error Goto 0

                  If IsValidObject(oWmiProp) Then
                  sValue = oWmiProp.Value

                  If IsNull(sValue) Then ' If value is null, return blank to avoid any issues
                  GetWMIProperty = ""
                  Else
                  Select Case (oWmiProp.CIMType)
                  Case wbemCimtypeString, wbemCimtypeSint16, wbemCimtypeSint32, wbemCimtypeReal32, wbemCimtypeReal64, wbemCimtypeSint8, wbemCimtypeUint8, wbemCimtypeUint16, wbemCimtypeUint32, wbemCimtypeSint64, wbemCimtypeUint64:
                  If Not oWmiProp.IsArray Then
                  GetWMIProperty = Trim(CStr(sValue))
                  Else
                  GetWMIProperty = Join(sValue, ", ")
                  End If
                  Case wbemCimtypeBoolean:
                  If sValue = 1 Or UCase(sValue) = "TRUE" Then
                  GetWMIProperty = "True"
                  Else
                  GetWMIProperty = "False"
                  End If
                  Case wbemCimtypeDatetime:
                  Dim sTmpStrDate

                  ' First attempt to convert the whole wmi date string
                  sTmpStrDate = Mid(sValue, 5, 2) & "/" & _
                  Mid(sValue, 7, 2) & "/" & _
                  Left(sValue, 4) & " " & _
                  Mid (sValue, 9, 2) & ":" & _
                  Mid(sValue, 11, 2) & ":" & _
                  Mid(sValue, 13, 2)
                  If IsDate(sTmpStrDate) Then
                  GetWMIProperty = CDate(sTmpStrDate)
                  Else
                  ' Second, attempt just to convert the YYYYMMDD
                  sTmpStrDate = Mid(sValue, 5, 2) & "/" & _
                  Mid(sValue, 7, 2) & "/" & _
                  Left(sValue, 4)
                  If IsDate(sTmpStrDate) Then
                  GetWMIProperty = CDate(sTmpStrDate)
                  Else
                  ' Nothing works - return passed in string
                  GetWMIProperty = sValue
                  End If
                  End If
                  Case Else:
                  GetWMIProperty = ""
                  End Select
                  End If
                  Else
                  If (ErrAction And ErrAction_ThrowError) = ErrAction_ThrowError Then _
                  ThrowScriptErrorNoAbort "An error occurred while accessing WMI property: '" & sPropName & "'.", oError
                  If (ErrAction And ErrAction_Abort) = ErrAction_Abort Then _
                  Quit()

                  GetWMIProperty = ""
                  End If

                  If (ErrAction And ErrAction_Trace) = ErrAction_Trace Then _
                  WScript.Echo "  + " & sPropName & " :: '" & GetWMIProperty & "'"
                  End Function

                  '---------------------------------------------------------------------------
                  ' Class for error handling.
                  '---------------------------------------------------------------------------
                  Class Error
                  Private m_lNumber
                  Private m_sSource
                  Private m_sDescription
                  Private m_sHelpContext
                  Private m_sHelpFile
                  Public Sub Save()
                  m_lNumber = Err.number
                  m_sSource = Err.Source
                  m_sDescription = Err.Description
                  m_sHelpContext = Err.HelpContext
                  m_sHelpFile = Err.helpfile
                  End Sub
                  Public Sub Raise()
                  Err.Raise m_lNumber, m_sSource, m_sDescription, m_sHelpFile, m_sHelpContext
                  End Sub
                  Public Sub Clear()
                  m_lNumber = 0
                  m_sSource = ""
                  m_sDescription = ""
                  m_sHelpContext = ""
                  m_sHelpFile = ""
                  End Sub
                  Public Default Property Get Number()
                  Number = m_lNumber
                  End Property
                  Public Property Get Source()
                  Source = m_sSource
                  End Property
                  Public Property Get Description()
                  Description = m_sDescription
                  End Property
                  Public Property Get HelpContext()
                  HelpContext = m_sHelpContext
                  End Property
                  Public Property Get HelpFile()
                  HelpFile = m_sHelpFile
                  End Property
                  End Class

                  '---------------------------------------------------------------------------
                  ' Creates an event and sends it back to the mom server.
                  '---------------------------------------------------------------------------
                  Function ThrowScriptErrorNoAbort(ByVal sMessage, ByVal oErr)
                  ' Retrieve the name of this (running) script
                  Dim FSO, ScriptFileName
                  Set FSO = CreateObject("Scripting.FileSystemObject")
                  ScriptFileName = FSO.GetFile(WScript.ScriptFullName).Name
                  Set FSO = Nothing

                  If Not IsNull(oErr) Then _
                  sMessage = sMessage & ". " & oErr.Description

                  On Error Resume Next
                  Dim oAPITemp
                  Set oAPITemp = CreateObject("MOM.ScriptAPI")
                  oAPITemp.LogScriptEvent ScriptFileName, g_ErrorEventNumber, lsEventError, sMessage
                  On Error Goto 0

                  WScript.Echo sMessage
                  End Function

                  '---------------------------------------------------------------------------
                  ' Creates an event and sends it back to the mom server.
                  '---------------------------------------------------------------------------
                  Function ThrowScriptError(Byval sMessage, ByVal oErr)
                  On Error Resume Next
                  ThrowScriptErrorNoAbort sMessage, oErr
                  Quit()
                  End Function

                  '---------------------------------------------------------------------------
                  ' Creates automation objects and returns it.
                  '---------------------------------------------------------------------------
                  Function MomCreateObject(ByVal sProgramId)
                  Dim oError
                  Set oError = New Error

                  On Error Resume Next
                  Set MomCreateObject = CreateObject(sProgramId)
                  oError.Save
                  On Error Goto 0

                  If oError.Number <> 0 Then
                  ThrowScriptError "Unable to create automation object '" & sProgramId & "'", oError
                  End If
                  End Function


                  '---------------------------------------------------------------------------
                  ' Checks whether oObject is valid.
                  '---------------------------------------------------------------------------
                  Function IsValidObject(ByVal oObject)
                  IsValidObject = False
                  If IsObject(oObject) Then
                  If Not oObject Is Nothing Then
                  IsValidObject = True
                  End If
                  End If
                  End Function

                   '---------------------------------------------------------------------------
                  ' Verifies the expression. If equals to False then generates an error and quits the script
                  '   Usage:
                  '     Verify Not WMISet Is Nothing, "WMISet is invalid!"
                  '     Verify WMISet.Count = 1, "Invalid quantity of services with name 'Server' (qty = " & WMISet.Count & ")."
                  '---------------------------------------------------------------------------
                  Function Verify(ByVal bBool, ByVal sMessage)
                  If bBool = False Then
                  ThrowScriptError sMessage, Null
                  End If
                  End Function

  

                  Function GetDriveHealthState(ByVal bIsSystem, ByVal dSysWarnMB, ByVal dSysWarnPct, ByVal dSysErrorMB, ByVal dSysErrorPct, ByVal dNonSysWarnMB, ByVal dNonSysWarnPct, ByVal dNonSysErrorMB, byVal dNonSysErrorPct, ByVal dPctFree, ByVal dMBFree)
                  Dim fResult

                  fResult = DriveHealthyState

                  If (bIsSystem) Then
                  If (dMBFree <= dSysErrorMB) and (dPctFree <= dSysErrorPct) Then
                  fResult = DriveErrorState
                  ElseIf (dMBFree =< dSysWarnMB) and (dPctFree =< dSysWarnPct) Then
                  fResult = DriveWarningState
                  End If
                  Else
                  If (dMBFree <= dNonSysErrorMB) and (dPctFree <= dNonSysErrorPct) Then
                  fResult = DriveErrorState
                  ElseIf (dMBFree =< dNonSysWarnMB) and (dPctFree =< dNonSysWarnPct) Then
                  fResult = DriveWarningState
                  End If
                  End If

                  GetDriveHealthState = fResult

                  End Function

                  Function Is_Win32_Volume_Supported(ByRef TargetComputer)
                  Dim objWMISet, objWMIOS, blnRet
                  blnRet = False
                  Set objWMISet = WMIGetInstance("winmgmts:\\" & TargetComputer & "\root\cimv2", "Win32_OperatingSystem")
                  For Each objWMIOS in objWMISet
                  If CLng(objWMIOS.BuildNumber) >= 3624 Then blnRet = True
                  Next
                  Is_Win32_Volume_Supported = blnRet
                  End Function

                  Function Get_System_Drive(ByRef TargetComputer)
                  Dim objWMISet, objWMIOS
                  Get_System_Drive = ""
                  Set objWMISet = WMIGetInstance("winmgmts:\\" & TargetComputer & "\root\cimv2", "Win32_OperatingSystem")
                  For Each objWMIOS in objWMISet
                  Get_System_Drive = Left(objWMIOS.SystemDirectory, 2)
                  Next
                  End Function

]]>
                      </Contents>
                      <Unicode>true</Unicode>
                    </File>
                  </Files>
                  <DefaultEventPolicy>
                    <Severity>2</Severity>
                    <StdOutMatches />
                    <StdErrMatches>\a+</StdErrMatches>
                    <ExitCodeMatches>[^0]+</ExitCodeMatches>
                  </DefaultEventPolicy>
                  <EventPolicy>$Config/EventPolicy$</EventPolicy>
                </ProbeAction>
              </MemberModules>
              <Composition>
                <Node ID="WA1"/>
              </Composition>
            </Composite>
          </ModuleImplementation>
          <OutputType>System!System.CommandOutput</OutputType>
          <InputType>System!System.BaseData</InputType>
        </ProbeActionModuleType>
    </ModuleTypes>
  </TypeDefinitions>
  <Monitoring>
    <Tasks>
      <Task ID="Progel.Windows.Server.2008.LogicalDisk.Info.Task" Accessibility="Public" Enabled="true" Remotable="true" Target="Win2008!Microsoft.Windows.Server.2008.LogicalDisk">
        <Category>Operations</Category>
        <ProbeAction ID="PA" TypeID="QND.Library.DiskSpaceGet.PT">
          <ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
          <DiskLabel>$Target/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$</DiskLabel>
          <ScriptTimeout>120</ScriptTimeout>
        </ProbeAction>
      </Task>
    </Tasks>    
    <Diagnostics>
      <Diagnostic ID="Progel.Windows.Server.2008.LogicalDisk.FreeSpace.Error.Diagnostic" Comment="List current disk allocation." Accessibility="Public" Enabled="true"
                  Target="Win2008!Microsoft.Windows.Server.2008.LogicalDisk" Monitor="Win2008Mon!Microsoft.Windows.Server.2008.LogicalDisk.FreeSpace" ExecuteOnState="Error" Remotable="true" Timeout="300">
        <Category>Maintenance</Category>
        <ProbeAction ID="PA" TypeID="QND.Library.DiskSpaceGet.PT">
          <ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
          <DiskLabel>$Target/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$</DiskLabel>
          <ScriptTimeout>120</ScriptTimeout>
        </ProbeAction>
      </Diagnostic>
      <Diagnostic ID="Progel.Windows.Server.2008.LogicalDisk.FreeSpace.Warning.Diagnostic" Comment="List current disk allocation." Accessibility="Public" Enabled="true"
                  Target="Win2008!Microsoft.Windows.Server.2008.LogicalDisk" Monitor="Win2008Mon!Microsoft.Windows.Server.2008.LogicalDisk.FreeSpace" ExecuteOnState="Warning" Remotable="true" Timeout="300">
        <Category>Maintenance</Category>
        <ProbeAction ID="PA" TypeID="QND.Library.DiskSpaceGet.PT">
          <ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
          <DiskLabel>$Target/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$</DiskLabel>
          <ScriptTimeout>120</ScriptTimeout>
        </ProbeAction>
      </Diagnostic>
    </Diagnostics>    
  </Monitoring>
  <LanguagePacks>
    <LanguagePack ID="ENU" IsDefault="true">
      <DisplayStrings>
        <DisplayString ElementID="QND.Windows.Server.2008.LDisk">
          <Name>QND Windows Server 2008 Logical Disk Fre Space addendum</Name>
          <Description>Adds a dignostic and a task to the disk freespace monitor</Description>
        </DisplayString>

        <DisplayString ElementID="Progel.Windows.Server.2008.LogicalDisk.FreeSpace.Error.Diagnostic">
          <Name>Get Disk Info Diagnostic</Name>
          <Description>Get disk allocation info</Description>
        </DisplayString>
        <DisplayString ElementID="Progel.Windows.Server.2008.LogicalDisk.FreeSpace.Warning.Diagnostic">
          <Name>Get Disk Info Diagnostic</Name>
          <Description>Get disk allocation info</Description>
        </DisplayString>
        <DisplayString ElementID="Progel.Windows.Server.2008.LogicalDisk.Info.Task">
          <Name>Get disk space info</Name>
          <Description>Get disk allocation info</Description>
        </DisplayString>

      </DisplayStrings>
    </LanguagePack>
  </LanguagePacks>
</ManagementPack>

