FileCount DataSource

Windows.Monitoring.FileSystem.FileCount.DataSource (DataSourceModuleType)

Custom DataSource for the custom monitor type, Windows.Monitoring.FileSystem.FileCount.MonitorType.

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.PropertyBagData

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedScript.PropertyBagProvider Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
SourceFolderstring$Config/StrFolder$SourceFolderSourceFolder
NumberOfFilesint$Config/File$NumberofFilesNumberofFiles
Frequencyint$Config/IntervalSeconds$

Source Code:

<DataSourceModuleType ID="Windows.Monitoring.FileSystem.FileCount.DataSource" Accessibility="Internal" Batching="false">
<Configuration>
<xsd:element minOccurs="1" name="IntervalSeconds" type="xsd:integer"/>
<xsd:element minOccurs="1" name="StrFolder" type="xsd:string"/>
<xsd:element minOccurs="1" name="File" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="SourceFolder" Selector="$Config/StrFolder$" ParameterType="string"/>
<OverrideableParameter ID="NumberOfFiles" Selector="$Config/File$" ParameterType="int"/>
<OverrideableParameter ID="Frequency" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.PropertyBagProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime/>
<ScriptName>FileCount.vbs</ScriptName>
<Arguments>$Config/StrFolder$ $Config/File$</Arguments>
<ScriptBody><Script>'==========================================================================
'
' NAME: FileCount.vbs
'
' AUTHOR: Jaime Correia
'
' COMMENT: Custom DataSource Script for the FileCount Monitor (Opsmgr 2007)
'
'==========================================================================

Option Explicit

Dim objFSO
Dim StrFolder
Dim File
Dim oArgs
Dim ParentFolder
Dim InternalCount
Dim CountFiles
Dim filesplus
Dim oAPI
Dim oBag
Dim StateDataType

Set oArgs = WScript.Arguments

If oArgs.Count &gt; 3 Then
Wscript.Quit -1
End If

'Define Arguments to Run the Script
strFolder = oArgs(0)
File = cint(oArgs(1))

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreateTypedPropertyBag(StateDataType)
Set objFSO = CreateObject("scripting.filesystemobject")
Set ParentFolder = objFSO.GetFolder(StrFolder)
'WScript.Echo ParentFolder
InternalCount = ParentFolder.Files.Count

' Walk trough all subfolders and count files

ShowSubFolders(ParentFolder)
Sub ShowSubFolders(ParentFolder)
Dim GetFileCount
Dim oFolders
Dim oSubFolder

Set oFolders = ParentFolder.SubFolders

For Each oSubFolder In oFolders

GetFileCount = oSubFolder.Files.Count
InternalCount = InternalCount + GetFileCount
ShowSubFolders(oSubFolder)
Next
End Sub

CountFiles = Cint(InternalCount)

If countFiles &gt; File Then
filesplus = CountFiles - File
'Test String to see if the script is ok (is in Portuguese)
'*******
'WScript.Echo "erro"
'wscript.echo "existem " &amp; countFiles &amp; " ficheiros na directoria " &amp; strfolder &amp; " e deveriam de existir " &amp; File &amp; ": Existem " &amp; filesplus &amp; " a mais"
'*******
'Properties Bags for State Detection and Return of varaibles in the script
Call oBag.AddValue("State", "erro")
'Call oBag.AddValue("strFolder", strFolder)
Call oBag.AddValue("NumberFiles", file)
Else
Call oBag.AddValue("State", "ok")
End If

'Return of Propertie Bags into Opsmgr
Call oAPI.AddItem(Obag)
Call oAPI.Return(oBag)</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</MemberModules>
<Composition>
<Node ID="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.PropertyBagData</OutputType>
</DataSourceModuleType>