Looks like we'll have to use this to monitor the up/down status of the db then. Within the script body there is a slight issue I am having with naming the DB. Below is the script:
Dim objNamedArgs
Set objNamedArgs = WScript.Arguments.Named
If objNamedArgs.Exists("ServerName") Then
Else
WScript.Echo ("Message: Please set correct argument into counter's argument box: Name of target server in double quotes according to the output of command: Get-ExchangeServer. Example: /ServerName:""mailserver"" or /ServerName:""mailserver.test.com"".")
exitCode = 1
Wscript.Quit
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ("C:\Windows\Temp\DatabaseSize_DatabaseID.ps1", 2, True)
objTextFile.WriteLine("add-pssnapin Microsoft.Exchange.Management.PowerShell.Admin;")
objTextFile.WriteLine("add-pssnapin Microsoft.Exchange.Management.PowerShell.E2007;")
objTextFile.WriteLine("$Error.Clear();")
objTextFile.Write("$target = """)
objTextFile.Write(objNamedArgs("ServerName"))
objTextFile.WriteLine(""";")
objTextFile.WriteLine("$stat = (Get-MailboxDatabase -Status -identity Mailbox Database | foreach {$_.databasesize.ToMb()})")
objTextFile.WriteLine("if ($Error.Count -eq 0) {")
objTextFile.WriteLine(" Write-Host ""Message: Database Size of DatabaseID(MB): $stat"";")
objTextFile.WriteLine(" Write-Host ""Statistic: $stat""; ")
objTextFile.WriteLine(" Exit 0;")
objTextFile.WriteLine(" }")
objTextFile.WriteLine("Write-Host ""Message: $($Error[0])""; ")
objTextFile.WriteLine("Exit 1; ")
objTextFile.Close
Set objShell = CreateObject("Wscript.Shell")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,authenticationLevel=Pkt}!\\" _
& strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery _
("SELECT Architecture FROM Win32_Processor")
For Each objProcessor In colSettings
If objProcessor.Architecture = 9 Then
powerpath = "%windir%\sysnative"
Exit For
ElseIf objProcessor.Architecture = 0 Then
powerpath = "c:\windows\system32"
Exit For
End If
Next
Set vPSscrIpt = objShell.Exec( powerpath & "\windowspowershell\v1.0\powershell.exe C:\Windows\Temp\DatabaseSize_DatabaseID.ps1")
vPSscrIpt.StdIn.Close()
WScript.Echo(vPSscrIpt.StdOut.ReadAll)
WScript.Quit vPSscrIpt.ExitCode
I have put in bold the database name but this seems to return the following error message when I run the script
"Can't identify dynamic column definitions from script output. Please, check if script output has properly formatted unique identifiers." Can you clarify where I am going wrong?
Thanks