File Share Availability

Windows.Monitoring.FileSystem.FileShare.AvailabilityHealth (UnitMonitor)

Monitors the availability of this File Share.
The Operations Manager Action Account needs Read Permission on the Share.
Monitor is disabled by default.

Knowledge Base article:

Summary

Monitors the availability of a File Share.

Configuration

Use overrides to enable the monitor for a File Share or all File Shares.

Causes

The File Share is unavailable.

Resolutions

Check the Permissions of the Opsmgr Action Account. Check the Server to see any problems.

Additional

The Action Account needs READ Permission on the File Share.Monitor is disabled by default.

Element properties:

TargetWindows.Monitoring.FileSystem.FileShare
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.TimedScript.TwoStateMonitorType
RemotableTrue
AccessibilityInternal
Alert Message
FileShare Unavailable
The Share: {0} with the Path: {1} is unavailable
RunAsDefault

Source Code:

<UnitMonitor ID="Windows.Monitoring.FileSystem.FileShare.AvailabilityHealth" Accessibility="Internal" Enabled="false" Target="Windows.Monitoring.FileSystem.FileShare" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.TimedScript.TwoStateMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Windows.Monitoring.FileSystem.FileShare.AvailabilityHealth_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="Windows.Monitoring.FileSystem.FileShare"]/Name$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="Windows.Monitoring.FileSystem.FileShare"]/Path$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>3600</IntervalSeconds>
<SyncTime/>
<ScriptName>FileShareAvailability.vbs</ScriptName>
<Arguments>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$ "$Target/Property[Type="Windows.Monitoring.FileSystem.FileShare"]/Name$"</Arguments>
<ScriptBody><Script>'==========================================================================
'
' NAME: FileShareAvailability.vbs
'
' AUTHOR: Jaime Correia
'
' COMMENT: Custom DataSource Script for the FileShare Availability Monitor (Opsmgr 2007)
'
'==========================================================================

On Error Resume Next

Dim oArgs
Dim objFSO
Dim objFolder
Dim Erro
Dim TargetComputer, ShareName
Dim oAPI, oBag
Dim ScriptName, ENU_Message

Const EVENTLOG_INFORMATION_TYPE = 4

Set oArgs = WScript.Arguments

'Arguments for the script to run
TargetComputer = oArgs(0)
ShareName = oArgs(1)

'Test string to test the script
'****************
'Wscript.Echo
'Wscript.Echo "TargetComputer: " &amp; TargetComputer
'Wscript.Echo "ShareName: " &amp; ShareName
'Wscript.Echo
'****************

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("\\" &amp; Targetcomputer &amp; "\" &amp; ShareName)

If Err.Number = 0 Then
'WScript.Echo "share ok " &amp; "\\" &amp; TargetComputer &amp; "\" &amp; ShareName
Erro = 0
Else
'WScript.Echo "share bad " &amp; "\\" &amp; TargetComputer &amp; "\" &amp; ShareName
Erro = 1
End If

'Event Message for success
ScriptName = "ScriptName = FileShare.vbs"
ENU_MESSAGE = vbCr &amp; "ShareName: " &amp; ShareName &amp; " is being monitored" &amp; vbCr &amp; "TargetComputer: " &amp; TargetComputer

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreateTypedPropertyBag(StateDataType)

CAll oAPI.LogScriptEvent (ScriptName, 10600, EVENTLOG_INFORMATION_TYPE ,ENU_Message)

'property bag for state changes
Call oBag.AddValue("TargetComputer", TargetComputer)
Call oBag.AddValue("Share" , ShareName)
Call oBag.AddValue("Erro" , Erro)

'adding data to opsmgr
Call oAPI.Return(oBag)

'Wscript.Echo "TargetComputer " &amp; TargetComputer
'Wscript.Echo "Share: " &amp; ShareName
'Wscript.Echo "Erro: " &amp; Erro
</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
<ErrorExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Erro']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">1</Value>
</ValueExpression>
</SimpleExpression>
</ErrorExpression>
<SuccessExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Erro']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">0</Value>
</ValueExpression>
</SimpleExpression>
</SuccessExpression>
</Configuration>
</UnitMonitor>