I'm trying to get some useful information from some of the canned powershell VBScripts in APM. The script I'm using is below, but all I can get out is "Not Available". I've installed the Exchange management tools on the box, but this doesn't appear to have helped.
Here's the script I'm using:
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\Total_size_all.ps1", 2, True)
objTextFile.WriteLine("add-pssnapin Microsoft.Exchange.Management.PowerShell.Admin;")
objTextFile.WriteLine("add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010;")
objTextFile.WriteLine("$Error.Clear();")
objTextFile.Write("$target = """)
objTextFile.Write(objNamedArgs("ServerName"))
objTextFile.WriteLine(""";")
objTextFile.WriteLine("$stat = (")
objTextFile.WriteLine("Get-MailboxDatabase -Server $target | Select Name,")
objTextFile.WriteLine(" @{")
objTextFile.WriteLine(" Name=""Size (MB)"";")
objTextFile.WriteLine(" Expression=")
objTextFile.WriteLine(" {")
objTextFile.WriteLine(" $objitem = (Get-MailboxDatabase $_.Identity);")
objTextFile.WriteLine(" $path = ""`\`\"" + $objitem.server + ""`\"" + $objItem.EdbFilePath.DriveName.Remove(1).ToString() + ""$""+ $objItem.EdbFilePath.PathName.Remove(0,2);")
objTextFile.WriteLine(" $size = ((Get-ChildItem $path).length)/1024KB;")
objTextFile.WriteLine(" [math]::round($size, 2)")
objTextFile.WriteLine(" }")
objTextFile.WriteLine(" } | Measure-Object -sum ""Size (MB)"").Sum;")
objTextFile.WriteLine("if ($Error.Count -eq 0) {")
objTextFile.WriteLine(" Write-Host ""Message: Total size of all items in MB on $target server: $stat MB"";")
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\Total_size_all.ps1")
vPSscrIpt.StdIn.Close()
WScript.Echo(vPSscrIpt.StdOut.ReadAll)
WScript.Quit vPSscrIpt.ExitCode
Has anyone had any luck getting these to work? I've also updated the script arguments with the server's name, IP address and event the fully qualified domain name. Each of these had the same result.