Hi. We tried to add a performance monitor with wildcard, but it looks like it's not supported, so I wrote a script for Powershell and thought that if would be nice for others to also have it.
The code:
#CommandLine Example: #"ComputerName:%device" "Query:\BizTalk:Message Box:Host Counters(*)\Host Queue - Suspended Msgs - Length" "LimitMinWarning:1" # #For testing: #$MyArgs = @("ComputerName:SERVERNAME","Query:\BizTalk:Message Box:Host Counters(*)\Host Queue - Suspended Msgs - Length","LimitMinWarning:1","LineBreak:1") #if ($MyArgs) { # foreach ($MyArg in $MyArgs) { # $MyType = $MyArg.Split(':')[0] # $MyValue = $MyArg.Substring($MyType.Length+1) #Handle arguments: if ($args) { foreach ($arg in $args) { $MyType = $arg.Split(':')[0] $MyValue = $arg.Substring($MyType.Length+1) switch($MyType.ToLower()){ "computername"{$ComputerName = $MyValue} "query"{$Query = $MyValue} "limitmaxerror"{$LimitMaxError = $MyValue} "limitmaxwarning"{$LimitMaxWarning = $MyValue} "limitminerror"{$LimitMinError = $MyValue} "limitminwarning"{$LimitMinWarning = $MyValue} "valuelookup"{$ValueLookup = $MyValue} "unit"{$Unit = $MyValue} "customunit"{$CustomUnit = $MyValue} "linebreak"{$LineBreak = $MyValue} } } } #Get the data $PerfSamples = Get-Counter -ComputerName $ComputerName -Counter $Query #Function used for creating the results as XML format function createResult{ Param( [Parameter (Mandatory = $true)] [String]$Channel, [Parameter (Mandatory = $true)] [String]$Value, [Parameter (Mandatory = $false)] [Int]$LimitMaxError, [Parameter (Mandatory = $false)] [Int]$LimitMaxWarning, [Parameter (Mandatory = $false)] [Int]$LimitMinError, [Parameter (Mandatory = $false)] [Int]$LimitMinWarning, [Parameter (Mandatory = $false)] [String]$ValueLookup, [Parameter (Mandatory = $false)] [String]$Unit, [Parameter (Mandatory = $false)] [String]$CustomUnit, [Parameter (Mandatory = $false)] [Int]$LineBreak = 0 ) if ($LineBreak -eq 1) { $LB = "`n" } $prtgResult += "<result>$LB" $prtgResult += "<channel>$Channel</channel>$LB" $prtgResult += "<value>$Value</value>$LB" if ($LimitMaxError) { $prtgResult += "<LimitMaxError>$LimitMaxError</LimitMaxError>$LB" } if ($LimitMaxWarning) { $prtgResult += "<LimitMaxWarning>$LimitMaxWarning</LimitMaxWarning>$LB" } if ($LimitMinError) { $prtgResult += "<LimitMinError>$LimitMinError</LimitMinError>$LB" } if ($LimitMinWarning) { $prtgResult += "<LimitMinWarning>$LimitMinWarning</LimitMinWarning>$LB" } if ($ValueLookup) { $prtgResult += "<ValueLookup>$ValueLookup</ValueLookup>$LB" } if ($LimitMaxError -Or $LimitMaxWarning -Or $LimitMinError -Or $LimitMinWarning) { $prtgResult += "<LimitMode>1</LimitMode>$LB" } if ($Unit) { $prtgResult += "<Unit>$Unit</Unit>`n" if ($Unit -eq "Custom") { $prtgResult += "<CustomUnit>$CustomUnit</CustomUnit>$LB" } } $prtgResult += "</result>$LB" return $prtgResult } #Looping through the data and creating the XML data for Write-Host $prtgXML = '<Prtg>' foreach ($Instance in $PerfSamples.CounterSamples) { $prtgXML += createResult -Channel $Query'\'$($Instance.InstanceName) -Value $($Instance.CookedValue) -LimitMaxError $LimitMaxError -LimitMaxWarning $LimitMaxWarning -LimitMinError $LimitMinError -LimitMinWarning $LimitMinWarning -ValueLookup $ValueLookup -Unit $Unit -CustomUnit $CustomUnit -LineBreak $LineBreak } $prtgXML += '</Prtg>' #Printing out the data Write-Host $prtgXML