Configure-PerformanceMonitor PowerShell Cmdlet


After almost a month of scripting and being MIA from my blog, I am back again with something useful to share again. I have been plagued with a few performance issue on some of my servers for the last few weeks and decided to configure a special black box just like a black box in an airplane into those servers.

I started with a few performance counters configured on the performance monitor as a datacollector set and left it there for a week. I stopped the datacollector set and started analyzing the data for possible leaks or bad behaviour which is causing poor server performance.

Eventually, I decided to use PAL tool to do my job and it is great. It provides me a quick overview and basically I can narrow my search on the problem area quicker. Well, it took me awhile to figure out which counters to use and eventually this script just took off.

Download Link – http://gallery.technet.microsoft.com/Configure-PerformanceMonito-be5f7c02

It is a very long script due to the amount of performance counters incorporated into the script from multiple different technologies such as Active Directory, ASP, ASP.NET, BizTalk, Dynamic AX/2012, Exchange 2003/2007/2010, SharePoint 2007/2010, SQL Server, VMWare, XenApp and many more.

I have to say, PAL tool is awesome but you will need to know your performance counters setup and this Configure-PerformanceMonitor Cmdlet is there to help you.

If Configure-PerformanceMonitor Cmdlet is popular, I will update the performance counters accordingly with every new PAL version as it takes alot of effort from my usual daily working life.

If there are any experts from other technologies such as webmarshall and etc… I will definitely like to know what are those performance counters to look for and incorporate them into the Cmdlet and  PAL tool. Just drop me a message. ;op

function Configure-PerformanceMonitor {

<#   
.SYNOPSIS   
    Configure performance counters on performance monitor based on performance counters 
    in Technet articles or Performance Analysis of Logs (PAL) Tool in PAL v2.3.2
  
.DESCRIPTION   
    Allows the administrator to configure performance counters on performance monitor 
    locally on machine situated in DMZ or remotely using WinRM service on remote 
    machine. This cmdlet provides administrator the ability to select multiple 
    different technology performance counters and configure them on the machine with 
    ease. The cmdlet is able to start the performance monitor datacollector set after 
    configuration is made to setup the datacollector set on the machine. The cmdlet 
    also provide the capability to generate an auto performance monitor startup script 
    for the datacollector and setup the local machine group policy to execute the auto 
    startup script to start the datacollector during operating system start up process.

.PARAMETER AutoStartup

    ALIAS -NonStop, -Continuous
    
    This configure the machine to start the data collector name on perfmon when the 
    machine startup.
    
.PARAMETER DataCollectorName

    ALIAS -Name
    
    Specify perfmon data collector name. By default, it will be Performance_Overview 
    unless specified.
    
.PARAMETER ComputerName
    
    Specify a remote hostname. By default, it will be localhost hostname unless 
    specified.
    
.PARAMETER CounterFileName

    ALIAS -Counter
    
    Specify a text file name which contains all the performance counters. By default, 
    the text file name will be Counter.txt

.PARAMETER MaximumSize

    ALIAS -M
    
    Specify the maximum size of the perfmon file. By default, the maximum size of the 
    perfmon file will be 250MB.
    
.PARAMETER PerfLogDir

    Specify the location for the perfmon file. By default, the location of the perfmon 
    file will be located at C:\PerfLogs folder
    
.PARAMETER SampleInterval

    ALIAS -SI
    
    Specify the perfmon sample interval. By default, the sample interval will be 
    00:05:00 ( 5 mins )
    
.PARAMETER ShowCounter

    ALIAS -Show
    
    Display the all the selected performance counters

.PARAMETER Start

    Start the performance log immediately after configuring the performance log. By 
    default, performance log will not start after configuring the data collector.
    
.PARAMETER ActiveDirectory

    ALIAS -AD
    
   This switch applies the Windows Server 2003/2008 Active Directory role performance 
   counters.
   
.PARAMETER ActiveServerPages

    ALIAS -ASP
    
   This switch applies the ASP performance counters.
   
.PARAMETER ASPNET

   This switch applies the ASP.NET performance counters.
   
.PARAMETER BizTalk

    ALIAS -Biz

   This switch applies the BizTalk performance counters.
   
.PARAMETER DynamicAX2012

    ALIAS -DAX2012
    
   This switch applies the Dynamic AX 2012 performance counters.
   
.PARAMETER DynamicAX

    ALIAS -DAX
    
   This switch applies the Dynamic AX performance counters.
   
.PARAMETER Exchange2003

    ALIAS -EXC2003
    
   This switch applies the Exchange 2003 performance counters.
   
.PARAMETER Exchange2007

    ALIAS -EXC2007
    
   This switch applies the Exchange 2007 performance counters.
   
.PARAMETER Exchange2010

    ALIAS -EXC2010
    
   This switch applies the Exchange 2010 performance counters.
   
.PARAMETER Exchange2007CAS

    ALIAS -EXC2007CAS
    
   This switch applies the Exchange 2007 Client Access Server role performance counters 
   from PAL.
   
.PARAMETER Exchange2007CAS_Technet

    ALIAS -EXC2007CASTechnet
    
    This switch applies the Exchange 2007 Client Access Server role performance counters 
    from Technet.
    
.PARAMETER Exchange2007Edge_Technet

    ALIAS EXC2007EdgeTechnet
    
    This switch applies the Exchange 2007 Edge role performance counters from Technet.
    
.PARAMETER Exchange2007Hub

    ALIAS -EXC2007Hub
    
    This switch applies the Exchange 2007 Hub role performance counters from PAL.
        
.PARAMETER Exchange2007Hub_Technet

    ALIAS -EXC2007HubTechnet
    
    This switch applies the Exchange 2007 Hub role performance counters from Technet.

.PARAMETER Exchange2007Mailbox

    ALIAS -EXC2007MBX

    This switch applies the Exchange 2007 Mailbox role performance counters from PAL.
        
.PARAMETER Exchange2007Mailbox_Technet

    ALIAS -EXC2007MBXTechnet
    
    This switch applies the Exchange 2007 Mailbox role performance counters from 
    Technet.
    
.PARAMETER Exchange2007UM_Technet

    ALIAS -EXC2007UMTechnet
    
    This switch applies the Exchange 2007 Unified Messaging performance counters.
    
.PARAMETER FASTSearch

    ALIAS -FAST, -FAST2010
    
    This switch applies the FAST Search for SharePoint 2010 performance counters.
    
.PARAMETER Forefront_TMG

    ALIAS -TMG
    
    This switch applies the Forefront Threat Management Gateway performance counters.
        
.PARAMETER HyperV

    This switch applies the Windows Server 2008 Hyper-V host performance counters.
    
.PARAMETER HyperV2012

    This switch applies the Windows Server 2012 Hyper-V host performance counters.
    
.PARAMETER MOSS2007

    ALIAS -SHP, -SharePoint
    
    This switch applies the SharePoint 2007 performance counters.
    
.PARAMETER MOSS2007_MSSearch

    ALIAS -MSSearch
    
    This switch applies the SharePoint 2007 Search performance counters.
    
.PARAMETER MOSS2010
    
    ALIAS -SHP2010, -SharePoint2010
    
    This switch applies the SharePoint 2010 performance counters.
        
.PARAMETER InternetInformationServices

    ALIAS -IIS
    
    This switch applies the Internet Information Services (commonly known as IIS) 
    performance counters.
        
.PARAMETER OCS2007R2Archiving

    This switch applies the Office Communicator Server 2007 R2 Archiving role 
    performance counters.
    
.PARAMETER OCS2007R2CWA

    This switch applies the Office Communicator Server 2007 R2 Client Web Access role 
    performance counters.
    
.PARAMETER OCS2007R2Edge

    This switch applies the Office Communicator Server 2007 R2 Edge role performance 
    counters.
    
.PARAMETER OCS2007R2Enterprise

    ALIAS -OCS2007R2Ent
    
    This switch applies the Office Communicator Server 2007 R2 Enterprise performance 
    counters.
        
.PARAMETER OCS2007R2Mediation

    This switch applies the Office Communicator Server 2007 R2 Mediation role 
    performance counters.
    
.PARAMETER OCS2007R2Monitoring

    This switch applies the Office Communicator Server 2007 R2 Monitoring role 
    performance counters.

.PARAMETER OCS2007R2Standard

    ALIAS -OCS2007R2Std
    
    This switch applies the Office Communicator Server 2007 R2 Standard performance 
    counters.
    
.PARAMETER SystemOverview

    ALIAS -Generic
    
    This switch applies the generic or common system overview performance counters.
    
.PARAMETER SystemOverview_Quick

    ALIAS -Quick
    
    This switch applies the quick system overview performance counters.
    
.PARAMETER SystemOverview_Standard

    ALIAS -Standard
    
    This switch applies the standard system overview performance counters.
    
.PARAMETER SQLServer

    ALIAS -SQL
    
    This switch applies the SQL Server performance counters.
    
.PARAMETER VMWare

    ALIAS -VM
    
    This switch applies the VMWare guest performance counters.
    
.PARAMETER XenApp

   This switch applies the Citrix XenApp performance counters.
   
.EXAMPLE

    Configure-PerformanceMonitor -SystemOverview_Standard -ShowCounter
    
    This example show the counters

.EXAMPLE
    
    Configure-PerformanceMonitor -ComputerName RedmondExchangeServer -Exchange2007CAS_Technet -Exchange2007Hub_Technet -Exchange2007Mailbox_Technet
    
    This example configures Redmond Exchange Server remotely using WinRM service 
    capability to setup Exchange 2007 CAS Technet, Hub Technet and Mailbox Technet 
    recommended performance counters. 
    
.EXAMPLE

    Configure-PerformanceMonitor -ComputerName ContosoActiveDirectoryServer -ActiveDirectory -VERBOSE

    This example configures Contoso Active Directory Server remotely using WinRM service 
    capability to setup Active Directory recommended performance counters from PAL 
    counters template and display verbose output of the configuration process.
    
.EXAMPLE

    Configure-PerformanceMonitor -EXC2007CASTechnet -EXC2007EdgeTechnet -AutoStartup

    This example configures the local machine with Exchange 2007 CAS Technet and Edge 
    Technet recommended performance counters. This command syntax is executed locally on 
    local machine and it is most suitable for machine which does not have WinRM service 
    enabled or is unreachable through WinRM because the machine is situated in a DMZ 
    zone.    
    
.EXAMPLE

    Configure-PerformanceMonitor -Standard -SHP -MSSearch -VM
    
    This example configures the local machine with multiple technology performance 
    counters such as Standard Windows System Overview, SharePoint 2007, SharePoint 2007 
    Search and VMWare performance counters on the local Windows Server VMWare Virtual 
    Machine with SharePoint Technology functionality.

.EXAMPLE

    Configure-PerformanceMonitor -ComputerName RedmondAppServer -DataCollectorName System_Overview -PerfLogDir C:\Temp -SampleInterval 00:00:05 -MaximumSize 500 -Standard -VM -Start -AutoStart

    This example configures the Redmond Application Server with a custom performance 
    datacollector name call System_Overview with the performance captured data store in 
    C:\Temp. The syntax also includes specific custom sample interval of 5 seconds with 
    a specific maximum size for the perofrmance captured data of 500MB before rotating 
    to the data file. The syntax also specifically defines the type of performance 
    counters for the datacollector set including switches to start the datacollector set 
    once it is configured and generates a startup script to automatically start the 
    datacollector during Windows startup.
    
.LINK
    Performance Analysis of Logs (PAL) Tool
    http://pal.codeplex.com/
    
    Logman - TechNet - Microsoft
    http://technet.microsoft.com/en-us/library/cc753820%28v=ws.10%29.aspx
    
    Mike Lagase's XML Updates for PAL Tool
    http://blogs.technet.com/b/mikelag/archive/2008/08/20/xml-updates-for-the-pal-tool.aspx
    
    Aaron Saikovski's PAL tool threshold file for SharePoint 2010
    http://blogs.msdn.com/b/aaronsaikovski/archive/2011/09/16/pal-tool-threshold-file-for-sharepoint-2010.aspx
    
    Technet - Monitoring Client Access Servers
    http://technet.microsoft.com/en-us/library/bb201674(v=exchg.80)
    
    Technet - Monitoring Edge Transport Servers
    http://technet.microsoft.com/en-us/library/ee532088(v=exchg.80)
    
    Technet - Monitoring Hub Transport Servers
    http://technet.microsoft.com/en-us/library/bb201704(v=exchg.80)
    
    Technet - Monitoring Mailbox Servers
    http://technet.microsoft.com/en-us/library/bb201689(v=exchg.80)
    
    Technet - Monitoring Unified Messaging Servers Without System Center Operations Manager
    http://technet.microsoft.com/en-us/library/bb201671(v=exchg.80)

.NOTES   
    Author  : Ryen Kia Zhi Tang
    Date    : 07/08/2012
    Blog    : ryentang.wordpress.com
    Version : 1.0

#>

[CmdletBinding(
    SupportsShouldProcess=$True,
    ConfirmImpact='High')]

param (

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    $ComputerName = $env:computername,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    $PerfLogDir = "C:\PerfLogs",

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('Counter')]
    $CounterFileName = "Counter.txt",

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('Name')]        
    $DataCollectorName = "Performance_Overview",
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('SI')]
    $SampleInterval = "00:05:00",

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('M')]
    $MaximumSize = "250",
        
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('NonStop','Continuous')]
    [Switch] $AutoStartup,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('Show')]
    [Switch] $ShowCounter,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]

    [Switch] $Start,
    
<#
This section below contains all the different performance counter switch parameters.
#>    

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('AD')]
    [Switch] $ActiveDirectory,
            
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('ASP')]
    [Switch] $ActiveServerPages,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    [Switch] $ASPNET,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('Biz')]
    [Switch] $BizTalk,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('DAX2012')]
    [Switch] $DynamicAX2012,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('DAX')]
    [Switch] $DynamicAX,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2003')]
    [Switch] $Exchange2003,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2007')]
    [Switch] $Exchange2007,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2010')]
    [Switch] $Exchange2010,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2007CAS')]
    [Switch] $Exchange2007CAS,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2007CASTechnet')]
    [Switch] $Exchange2007CAS_Technet,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2007EdgeTechnet')]
    [Switch] $Exchange2007Edge_Technet,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2007Hub')]
    [Switch] $Exchange2007Hub,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2007HubTechnet')]
    [Switch] $Exchange2007Hub_Technet,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2007MBX')]
    [Switch] $Exchange2007Mailbox,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2007MBXTechnet')]
    [Switch] $Exchange2007Mailbox_Technet,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('EXC2007UMTechnet')]
    [Switch] $Exchange2007UM_Technet,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('FAST', 'FAST2010')]
    [Switch] $FASTSearch,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('TMG')]
    [Switch] $Forefront_TMG,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    [Switch] $HyperV,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    [Switch] $HyperV2012,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('IIS')]
    [Switch] $InternetInformationServices,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('SHP', 'SharePoint')]
    [Switch] $MOSS2007,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('MSSearch')]
    [Switch] $MOSS2007_MSSearch,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('SHP2010', 'SharePoint2010')]
    [Switch] $MOSS2010,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    [Switch] $OCS2007R2Archiving,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    [Switch] $OCS2007R2CWA,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    [Switch] $OCS2007R2Edge,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('OCS2007R2Ent')]
    [Switch] $OCS2007R2Enterprise,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    [Switch] $OCS2007R2Mediation,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    [Switch] $OCS2007R2Monitoring,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('OCS2007R2Std')]
    [Switch] $OCS2007R2Standard,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('SQL')]
    [Switch] $SQLServer,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('Generic')]
    [Switch] $SystemOverview,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('Quick')]
    [Switch] $SystemOverview_Quick,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('Standard')]
    [Switch] $SystemOverview_Standard,
    
[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    [Alias('VM')]
    [Switch] $VMWare,

[Parameter(
    Mandatory=$False,
    ValueFromPipeline=$True,
    ValueFromPipelineByPropertyName=$True)]
    
    [Switch] $XenApp
       
)

BEGIN {}

PROCESS {

    <#
    [Configure-PerformanceMonitor Cmdlet Performance Counters]
    The section below contains recommended performance counters from various 
    contributors.
    #>
    
    #create an object to store data
    $Object = New-Object PSObject

    #verify Active Directory switch parameter is applied
    if($ActiveDirectory) {
        #Kip Gumenberg, Matthew Reynolds, and Clint Huffman (kipg@microsoft.com;mreyn@microsoft.com;clinth@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\NTDS\AB Client Sessions" -value "\NTDS\AB Client Sessions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\NTDS\DRA Pending Replication Operations" -value "\NTDS\DRA Pending Replication Operations" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\NTDS\DRA Pending Replication Synchronizations" -value "\NTDS\DRA Pending Replication Synchronizations" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\NTDS\Kerberos Authentications" -value "\NTDS\Kerberos Authentications" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\NTDS\LDAP Active Threads" -value "\NTDS\LDAP Active Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\NTDS\LDAP Bind Time" -value "\NTDS\LDAP Bind Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\NTDS\LDAP Client Sessions" -value "\NTDS\LDAP Client Sessions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\NTDS\LDAP Searches/sec" -value "\NTDS\LDAP Searches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(lsass)\% Processor Time" -value "\Process(lsass)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(lsass)\Working Set" -value "\Process(lsass)\Working Set" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Server Sessions" -value "\Server\Server Sessions" -Force
    }
    
    
    #verify Active Server Pages switch parameter is applied
    if($ActiveServerPages) {
        ##Clint Huffman (clinth@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Active Server Pages\Errors/Sec" -value "\Active Server Pages\Errors/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Active Server Pages\Request Execution Time" -value "\Active Server Pages\Request Execution Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Active Server Pages\Request Wait Time" -value "\Active Server Pages\Request Wait Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Active Server Pages\Requests Queued" -value "\Active Server Pages\Requests Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Active Server Pages\Requests/Sec" -value "\Active Server Pages\Requests/Sec" -Force
    }
    
    
    #verify ASP.NET switch parameter is applied
    if($ASPNET) {
        #Clint Huffman (clinth@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Application Restarts" -value "\ASP.NET\Application Restarts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Request Wait Time" -value "\ASP.NET\Request Wait Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Requests Current" -value "\ASP.NET\Requests Current" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET Applications(*)\Requests In Application Queue" -value "\ASP.NET Applications(*)\Requests In Application Queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Requests Rejected" -value "\ASP.NET\Requests Rejected" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Worker Process Restarts" -value "\ASP.NET\Worker Process Restarts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET Applications(*)\Request Execution Time" -value "\ASP.NET Applications(*)\Request Execution Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET Apps v2.0.50727(*)\Request Execution Time" -value "\ASP.NET Apps v2.0.50727(*)\Request Execution Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET Apps v2.0.50727(*)\Requests In Application Queue" -value "\ASP.NET Apps v2.0.50727(*)\Requests In Application Queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET Apps v2.0.50727(*)\Requests/Sec" -value "\ASP.NET Apps v2.0.50727(*)\Requests/Sec" -Force
    }
    
    
    #verify BizTalk Server 2006/2009/2010 switch parameter is applied
    if($BizTalk) {
        #Clint Huffman (clinth@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\High database session" -value "\BizTalk:Message Agent(*)\High database session" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\High database size" -value "\BizTalk:Message Agent(*)\High database size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\High in-process message count" -value "\BizTalk:Message Agent(*)\High in-process message count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\High message delivery rate" -value "\BizTalk:Message Agent(*)\High message delivery rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\High message publishing rate" -value "\BizTalk:Message Agent(*)\High message publishing rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\High process memory" -value "\BizTalk:Message Agent(*)\High process memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\High system memory" -value "\BizTalk:Message Agent(*)\High system memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\High thread count" -value "\BizTalk:Message Agent(*)\High thread count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\Message delivery delay (ms)" -value "\BizTalk:Message Agent(*)\Message delivery delay (ms)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\Message delivery throttling state" -value "\BizTalk:Message Agent(*)\Message delivery throttling state" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\Message publishing delay (ms)" -value "\BizTalk:Message Agent(*)\Message publishing delay (ms)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Agent(*)\Message publishing throttling state" -value "\BizTalk:Message Agent(*)\Message publishing throttling state" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Box:General Counters(*)\Spool Size" -value "\BizTalk:Message Box:General Counters(*)\Spool Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Box:General Counters(*)\Tracking Data Size" -value "\BizTalk:Message Box:General Counters(*)\Tracking Data Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Box:Host Counters(*)\Host Queue - Length" -value "\BizTalk:Message Box:Host Counters(*)\Host Queue - Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Message Box:Host Counters(*)\Host Queue - Suspended Msgs - Length" -value "\BizTalk:Message Box:Host Counters(*)\Host Queue - Suspended Msgs - Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Messaging(*)\ID Process" -value "\BizTalk:Messaging(*)\ID Process" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Messaging Latency(*)\Inbound Latency (sec)" -value "\BizTalk:Messaging Latency(*)\Inbound Latency (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Messaging Latency(*)\Request-Response Latency (sec)" -value "\BizTalk:Messaging Latency(*)\Request-Response Latency (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\BizTalk:Messaging Latency(*)\Outbound Adapter Latency (sec)" -value "\BizTalk:Messaging Latency(*)\Outbound Adapter Latency (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Dehydrating orchestrations" -value "\XLANG/s Orchestrations(*)\Dehydrating orchestrations" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Idle orchestrations" -value "\XLANG/s Orchestrations(*)\Idle orchestrations" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\MessageBox databases connection failures" -value "\XLANG/s Orchestrations(*)\MessageBox databases connection failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Orchestrations suspended/sec" -value "\XLANG/s Orchestrations(*)\Orchestrations suspended/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Orchestrations completed/sec" -value "\XLANG/s Orchestrations(*)\Orchestrations completed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Orchestrations discarded/sec" -value "\XLANG/s Orchestrations(*)\Orchestrations discarded/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Orchestrations resident in-memory" -value "\XLANG/s Orchestrations(*)\Orchestrations resident in-memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Pending messages" -value "\XLANG/s Orchestrations(*)\Pending messages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Persistence points/sec" -value "\XLANG/s Orchestrations(*)\Persistence points/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Megabytes allocated private memory" -value "\XLANG/s Orchestrations(*)\Megabytes allocated private memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Transactional scopes aborted/sec" -value "\XLANG/s Orchestrations(*)\Transactional scopes aborted/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Transactional scopes compensated/sec" -value "\XLANG/s Orchestrations(*)\Transactional scopes compensated/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\XLANG/s Orchestrations(*)\Megabytes allocated virtual memory" -value "\XLANG/s Orchestrations(*)\Megabytes allocated virtual memory" -Force
    }
    
    
    #verify Dynamics AX 2012 AOS and WCF switch parameter is applied
    if($DynamicAX2012) {
        #Dick Wenning (dwenning@promentum.nl)
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF CLEARS" -value "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF CLEARS" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF CLEARS TRIGGERED BY AOS DATA SYNCHRONIZATION" -value "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF CLEARS TRIGGERED BY AOS DATA SYNCHRONIZATION" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF DELETES FROM DATA CACHE" -value "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF DELETES FROM DATA CACHE" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF HITS" -value "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF HITS" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF MISSES" -value "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF MISSES" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF SELECTS ON CACHED TABLES" -value "\Microsoft Dynamics AX Object Server(*)\TOTAL NUMBER OF SELECTS ON CACHED TABLES" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ServiceModelService 4.0.0.0(*)\Calls" -value "\ServiceModelService 4.0.0.0(*)\Calls" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ServiceModelService 4.0.0.0(*)\Calls Duration" -value "\ServiceModelService 4.0.0.0(*)\Calls Duration" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ServiceModelService 4.0.0.0(*)\Calls Failed" -value "\ServiceModelService 4.0.0.0(*)\Calls Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ServiceModelService 4.0.0.0(*)\Calls Faulted" -value "\ServiceModelService 4.0.0.0(*)\Calls Faulted" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ServiceModelService 4.0.0.0(*)\Percent Of Max Concurrent Calls" -value "\ServiceModelService 4.0.0.0(*)\Percent Of Max Concurrent Calls" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ServiceModelService 4.0.0.0(*)\Percent Of Max Concurrent Instances" -value "\ServiceModelService 4.0.0.0(*)\Percent Of Max Concurrent Instances" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ServiceModelService 4.0.0.0(*)\Percent Of Max Concurrent Sessions" -value "\ServiceModelService 4.0.0.0(*)\Percent Of Max Concurrent Sessions" -Force
    }
    
    
    #verify Dynamics AX 40/2009 switch parameter is applied
    if($DynamicAX) {
        #Dick Wenning (dwenning@promentum.nl)
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\Active Sessions" -value "\Microsoft Dynamics AX Object Server(*)\Active Sessions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\Number of Bytes Received by Server" -value "\Microsoft Dynamics AX Object Server(*)\Number of Bytes Received by Server" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\Number of Bytes Sent by Server" -value "\Microsoft Dynamics AX Object Server(*)\Number of Bytes Sent by Server" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\Number of Client Requests" -value "\Microsoft Dynamics AX Object Server(*)\Number of Client Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\Number of Client Requests per Second" -value "\Microsoft Dynamics AX Object Server(*)\Number of Client Requests per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\Number of Server Requests" -value "\Microsoft Dynamics AX Object Server(*)\Number of Server Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Microsoft Dynamics AX Object Server(*)\Total Sessions" -value "\Microsoft Dynamics AX Object Server(*)\Total Sessions" -Force
    }
    

    #verify Exchange 2003 switch parameter is applied
    if($Exchange2003) {
        #http://blogs.technet.com/mikelag/archive/2008/08/20/xml-updates-for-the-pal-tool.aspx
        $Object | Add-Member -MemberType noteproperty -Name "\Database(*)\Database Cache Size" -value "\Database(*)\Database Cache Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Database(*)\Database Pages Written/sec" -value "\Database(*)\Database Pages Written/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Database(*)\Log Record Stalls/sec" -value "\Database(*)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Database(*)\Log Threads Waiting" -value "\Database(*)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Database(*)\Log Writes/sec" -value "\Database(*)\Log Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Epoxy(*)\Client Out Queue Length" -value "\Epoxy(*)\Client Out Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Epoxy(*)\Store Out Queue Length" -value "\Epoxy(*)\Store Out Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeDSAccess Caches(*)\Cache Hits/Sec" -value "\MSExchangeDSAccess Caches(*)\Cache Hits/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeDSaccess Caches(*)\LDAP Searches/Sec" -value "\MSExchangeDSaccess Caches(*)\LDAP Searches/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeDSAccess Domain Controllers(*)\LDAP Read calls/Sec" -value "\MSExchangeDSAccess Domain Controllers(*)\LDAP Read calls/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeDSAccess Domain Controllers(*)\LDAP Read Time" -value "\MSExchangeDSAccess Domain Controllers(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeDSAccess Domain Controllers(*)\LDAP Search calls/Sec" -value "\MSExchangeDSAccess Domain Controllers(*)\LDAP Search calls/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeDSAccess Domain Controllers(*)\LDAP Search Time" -value "\MSExchangeDSAccess Domain Controllers(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeDSAccess Processes(*)\LDAP Read Time" -value "\MSExchangeDSAccess Processes(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeDSAccess Processes(*)\LDAP Search Time" -value "\MSExchangeDSAccess Processes(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Exchmem: Number of Additional Heaps" -value "\MSExchangeIS\Exchmem: Number of Additional Heaps" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Exchmem: Number of heaps with memory errors" -value "\MSExchangeIS\Exchmem: Number of heaps with memory errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Exchmem: Number of memory errors" -value "\MSExchangeIS\Exchmem: Number of memory errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Averaged Latency" -value "\MSExchangeIS\RPC Averaged Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Operations/sec" -value "\MSExchangeIS\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Requests" -value "\MSExchangeIS\RPC Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow QP Threads" -value "\MSExchangeIS\Slow QP Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow Search Threads" -value "\MSExchangeIS\Slow Search Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\User Count" -value "\MSExchangeIS\User Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Files Scanned/Sec" -value "\MSExchangeIS\Virus Scan Files Scanned/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Messages Processed/Sec" -value "\MSExchangeIS\Virus Scan Messages Processed/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Queue Length" -value "\MSExchangeIS\Virus Scan Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Largest Block Size" -value "\MSExchangeIS\VM Largest Block Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total 16MB Free Blocks" -value "\MSExchangeIS\VM Total 16MB Free Blocks" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total Free Blocks" -value "\MSExchangeIS\VM Total Free Blocks" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total Large Free Block Bytes" -value "\MSExchangeIS\VM Total Large Free Block Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Folder Opens/sec" -value "\MSExchangeIS Mailbox(*)\Folder Opens/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Local Delivery Rate" -value "\MSExchangeIS Mailbox(*)\Local Delivery Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Receive Queue Size" -value "\MSExchangeIS Mailbox(*)\Receive Queue Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Send Queue Size" -value "\MSExchangeIS Mailbox(*)\Send Queue Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Message Opens/sec" -value "\MSExchangeIS Mailbox(*)\Message Opens/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Restricted View Cache Miss Rate" -value "\MSExchangeIS Mailbox(*)\Restricted View Cache Miss Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Search Task Rate" -value "\MSExchangeIS Mailbox(*)\Search Task Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Slow Findrow Rate" -value "\MSExchangeIS Mailbox(*)\Slow Findrow Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Public(*)\Receive Queue Size" -value "\MSExchangeIS Public(*)\Receive Queue Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Public(*)\Replication Receive Queue Size" -value "\MSExchangeIS Public(*)\Replication Receive Queue Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Public(*)\Send Queue Size" -value "\MSExchangeIS Public(*)\Send Queue Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(emsmta)\% Processor Time" -value "\Process(emsmta)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(inetinfo)\% Processor Time" -value "\Process(inetinfo)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(store)\% Processor Time" -value "\Process(store)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(System)\% Processor Time" -value "\Process(System)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SMTP Server(*)\Categorizer Queue Length" -value "\SMTP Server(*)\Categorizer Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SMTP Server(*)\Local Queue Length" -value "\SMTP Server(*)\Local Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SMTP Server(*)\Messages Delivered/sec" -value "\SMTP Server(*)\Messages Delivered/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SMTP Server(*)\Remote Queue Length" -value "\SMTP Server(*)\Remote Queue Length" -Force
    }


    #verify Exchange 2007 switch parameter is applied
    if($Exchange2007) {
        #http://blogs.technet.com/mikelag/archive/2008/08/20/xml-updates-for-the-pal-tool.aspx
        $Object | Add-Member -MemberType noteproperty -Name "\Database(*)\Database Cache Size" -value "\Database(*)\Database Cache Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Database(*)\Database Page Fault Stalls/sec" -value "\Database(*)\Database Page Fault Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Database(*)\Log Record Stalls/sec" -value "\Database(*)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Database(*)\Log Threads Waiting" -value "\Database(*)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Database(Information Store)\Version buckets allocated" -value "\Database(Information Store)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Database ==> Instances(*)\Log Generation Checkpoint Depth" -value "\Database ==> Instances(*)\Log Generation Checkpoint Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Faults/sec" -value "\Memory\Transition Faults/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Requests/sec" -value "\MSExchange ActiveSync\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -value "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -value "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Read Time" -value "\MSExchange ADAccess Processes(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Search Time" -value "\MSExchange ADAccess Processes(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Average Event Processing Time In seconds" -value "\MSExchange Assistants(*)\Average Event Processing Time In seconds" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Events in queue" -value "\MSExchange Assistants(*)\Events in queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Events Polled/sec" -value "\MSExchange Assistants(*)\Events Polled/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Mailboxes processed/sec" -value "\MSExchange Assistants(*)\Mailboxes processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Number of events processed per second." -value "\MSExchange Assistants(*)\Number of events processed per second." -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Number of Mailboxes Processed per Request" -value "\MSExchange Availability Service\Average Number of Mailboxes Processed per Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Cross-Forest Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Cross-Forest Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Cross-Site Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Cross-Site Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Meeting Suggestions Request" -value "\MSExchange Availability Service\Average Time to Process a Meeting Suggestions Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Availability Requests (sec)" -value "\MSExchange Availability Service\Availability Requests (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Calendar Attendant\Average Calendar Attendant Processing Time" -value "\MSExchange Calendar Attendant\Average Calendar Attendant Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Calendar Attendant\Requests Failed" -value "\MSExchange Calendar Attendant\Requests Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Cache % Hit" -value "\MSExchange Database(Information Store)\Database Cache % Hit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Cache Size" -value "\MSExchange Database(Information Store)\Database Cache Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(*)\Database Page Fault Stalls/sec" -value "\MSExchange Database(*)\Database Page Fault Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Bytes Write/sec" -value "\MSExchange Database(Information Store)\Log Bytes Write/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Record Stalls/sec" -value "\MSExchange Database(Information Store)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(*)\Log Threads Waiting" -value "\MSExchange Database(*)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Version buckets allocated" -value "\MSExchange Database(Information Store)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Reads/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Writes/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Reads/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Writes/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Generation Checkpoint Depth" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Generation Checkpoint Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Record Stalls/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Threads Waiting" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Version buckets allocated" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -value "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Extensibility Agents(*)\Total Agent Invocations" -value "\MSExchange Extensibility Agents(*)\Total Agent Invocations" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Active Conversions" -value "\MSExchange OWA\Active Conversions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Conversion Time" -value "\MSExchange OWA\Average Conversion Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Response Time" -value "\MSExchange OWA\Average Response Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Search Time" -value "\MSExchange OWA\Average Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Current Unique Users" -value "\MSExchange OWA\Current Unique Users" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Queued Conversion Requests" -value "\MSExchange OWA\Queued Conversion Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Requests/sec" -value "\MSExchange OWA\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replica Seeder(*)\Seeding Finished %" -value "\MSExchange Replica Seeder(*)\Seeding Finished %" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication(*)\CopyQueueLength" -value "\MSExchange Replication(*)\CopyQueueLength" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication(*)\ReplayQueueLength" -value "\MSExchange Replication(*)\ReplayQueueLength" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Resource Booking\Average Resource Booking Processing Time" -value "\MSExchange Resource Booking\Average Resource Booking Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Resource Booking\Requests Failed" -value "\MSExchange Resource Booking\Requests Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Average document indexing time" -value "\MSExchange Search Indices(*)\Average document indexing time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Full Crawl Mode Status" -value "\MSExchange Search Indices(*)\Full Crawl Mode Status" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Recent Average Latency of RPCs Used to Obtain Content" -value "\MSExchange Search Indices(*)\Recent Average Latency of RPCs Used to Obtain Content" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Throttling Delay Value" -value "\MSExchange Search Indices(*)\Throttling Delay Value" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: LocalDeliveryCallsPerSecond" -value "\MSExchange Store Driver(_total)\Inbound: LocalDeliveryCallsPerSecond" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttempts" -value "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttempts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttemptsPerSecond" -value "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttemptsPerSecond" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: Recipients Delivered Per Second" -value "\MSExchange Store Driver(_total)\Inbound: Recipients Delivered Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Outbound: Submitted Mail Items Per Second" -value "\MSExchange Store Driver(_total)\Outbound: Submitted Mail Items Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(_Total)\ROP Requests outstanding" -value "\MSExchange Store Interface(_Total)\ROP Requests outstanding" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(_Total)\RPC Latency average (msec)" -value "\MSExchange Store Interface(_Total)\RPC Latency average (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests failed (%)" -value "\MSExchange Store Interface(*)\RPC Requests failed (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests outstanding" -value "\MSExchange Store Interface(*)\RPC Requests outstanding" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests sent/sec" -value "\MSExchange Store Interface(*)\RPC Requests sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Slow requests (%)" -value "\MSExchange Store Interface(*)\RPC Slow requests (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Slow requests latency average (msec)" -value "\MSExchange Store Interface(*)\RPC Slow requests latency average (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAutodiscover\Requests/sec" -value "\MSExchangeAutodiscover\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeFDS:OAB(*)\Download Task Queued" -value "\MSExchangeFDS:OAB(*)\Download Task Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeFDS:UM\Download Task Queued" -value "\MSExchangeFDS:UM\Download Task Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeImap4\Average Command Processing Time (milliseconds)" -value "\MSExchangeImap4\Average Command Processing Time (milliseconds)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeImap4\Current Connections" -value "\MSExchangeImap4\Current Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Client: RPCs Failed: Server Too Busy" -value "\MSExchangeIS\Client: RPCs Failed: Server Too Busy" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Client: RPCs Failed: Server Too Busy / sec" -value "\MSExchangeIS\Client: RPCs Failed: Server Too Busy / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Averaged Latency" -value "\MSExchangeIS\RPC Averaged Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Client Backoff/sec" -value "\MSExchangeIS\RPC Client Backoff/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Num. of Slow Packets" -value "\MSExchangeIS\RPC Num. of Slow Packets" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Operations/sec" -value "\MSExchangeIS\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Requests" -value "\MSExchangeIS\RPC Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow QP Threads" -value "\MSExchangeIS\Slow QP Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow Search Threads" -value "\MSExchangeIS\Slow Search Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\User Count" -value "\MSExchangeIS\User Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Files Scanned/sec" -value "\MSExchangeIS\Virus Scan Files Scanned/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Messages Processed/sec" -value "\MSExchangeIS\Virus Scan Messages Processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Queue Length" -value "\MSExchangeIS\Virus Scan Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Largest Block Size" -value "\MSExchangeIS\VM Largest Block Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total 16MB Free Blocks" -value "\MSExchangeIS\VM Total 16MB Free Blocks" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total Free Blocks" -value "\MSExchangeIS\VM Total Free Blocks" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total Large Free Block Bytes" -value "\MSExchangeIS\VM Total Large Free Block Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\Directory Access: LDAP Reads/sec" -value "\MSExchangeIS Client(*)\Directory Access: LDAP Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\Directory Access: LDAP Searches/sec" -value "\MSExchangeIS Client(*)\Directory Access: LDAP Searches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\JET Log Records/sec" -value "\MSExchangeIS Client(*)\JET Log Records/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\JET Pages Read/sec" -value "\MSExchangeIS Client(*)\JET Pages Read/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\RPC Average Latency" -value "\MSExchangeIS Client(*)\RPC Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\RPC Operations/sec" -value "\MSExchangeIS Client(*)\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Categorization Count" -value "\MSExchangeIS Mailbox(*)\Categorization Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Delivered/sec" -value "\MSExchangeIS Mailbox(*)\Messages Delivered/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Queued For Submission" -value "\MSExchangeIS Mailbox(*)\Messages Queued For Submission" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Sent/sec" -value "\MSExchangeIS Mailbox(*)\Messages Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Submitted/sec" -value "\MSExchangeIS Mailbox(*)\Messages Submitted/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Restricted View Cache Miss Rate" -value "\MSExchangeIS Mailbox(*)\Restricted View Cache Miss Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Search Task Rate" -value "\MSExchangeIS Mailbox(*)\Search Task Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Slow FindRow Rate" -value "\MSExchangeIS Mailbox(*)\Slow FindRow Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Public(*)\Receive Queue Size" -value "\MSExchangeIS Public(*)\Receive Queue Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -value "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -value "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\Average Command Processing Time (milliseconds)" -value "\MSExchangePop3\Average Command Processing Time (milliseconds)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\Connections Current" -value "\MSExchangePop3\Connections Current" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Batch Point(*)\Transactions committed/sec" -value "\MSExchangeTransport Batch Point(*)\Transactions committed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Database(*)\MailItem begin commit/sec" -value "\MSExchangeTransport Database(*)\MailItem begin commit/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Database(*)\Stream read/sec" -value "\MSExchangeTransport Database(*)\Stream read/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Database(*)\Stream writes/sec" -value "\MSExchangeTransport Database(*)\Stream writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Deletes/sec" -value "\MSExchangeTransport Dumpster\Dumpster Deletes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Inserts/sec" -value "\MSExchangeTransport Dumpster\Dumpster Inserts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Item Count" -value "\MSExchangeTransport Dumpster\Dumpster Item Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Size" -value "\MSExchangeTransport Dumpster\Dumpster Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Mailbox Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Mailbox Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Non-Smtp Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Non-Smtp Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -value "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Poison Queue Length" -value "\MSExchangeTransport Queues(_total)\Poison Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Mailbox Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Mailbox Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Non-Smtp Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Non-Smtp Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Submission Queue Length" -value "\MSExchangeTransport Queues(_total)\Submission Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -value "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -value "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -value "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -value "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeWS\Requests/sec" -value "\MSExchangeWS\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Data Bytes/sec" -value "\Process(EdgeTransport)\IO Data Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Read Bytes/sec" -value "\Process(EdgeTransport)\IO Read Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Write Bytes/sec" -value "\Process(EdgeTransport)\IO Write Bytes/sec" -Force
    }


    #verify Exchange 2010 UM Technet switch parameter is applied
    if($Exchange2010) {
        #Mike Lagase (mikelag@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Requests/sec" -value "\MSExchange ActiveSync\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Availability Requests (sec)" -value "\MSExchange Availability Service\Availability Requests (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Cross-Forest Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Cross-Forest Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Cross-Site Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Cross-Site Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Meeting Suggestions Request" -value "\MSExchange Availability Service\Average Time to Process a Meeting Suggestions Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Number of Mailboxes Processed per Request" -value "\MSExchange Availability Service\Average Number of Mailboxes Processed per Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Current Unique Users" -value "\MSExchange OWA\Current Unique Users" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeFDS:OAB(*)\Download Task Queued" -value "\MSExchangeFDS:OAB(*)\Download Task Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeFDS:UM\Download Task Queued" -value "\MSExchangeFDS:UM\Download Task Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Search Time" -value "\MSExchange OWA\Average Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Requests/sec" -value "\MSExchange OWA\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeWS\Requests/sec" -value "\MSExchangeWS\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Response Time" -value "\MSExchange OWA\Average Response Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\Connections Current" -value "\MSExchangePop3\Connections Current" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\Average Command Processing Time (milliseconds)" -value "\MSExchangePop3\Average Command Processing Time (milliseconds)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeImap4\Average Command Processing Time (milliseconds)" -value "\MSExchangeImap4\Average Command Processing Time (milliseconds)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeImap4\Current Connections" -value "\MSExchangeImap4\Current Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAutodiscover\Requests/sec" -value "\MSExchangeAutodiscover\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -value "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Read Time" -value "\MSExchange ADAccess Processes(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Search Time" -value "\MSExchange ADAccess Processes(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -value "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\RPC Operations/sec" -value "\MSExchangeIS Client(*)\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Slow FindRow Rate" -value "\MSExchangeIS Mailbox(*)\Slow FindRow Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Delivered/sec" -value "\MSExchangeIS Mailbox(*)\Messages Delivered/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Queued For Submission" -value "\MSExchangeIS Mailbox(*)\Messages Queued For Submission" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Sent/sec" -value "\MSExchangeIS Mailbox(*)\Messages Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Submitted/sec" -value "\MSExchangeIS Mailbox(*)\Messages Submitted/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Averaged Latency" -value "\MSExchangeIS\RPC Averaged Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Operations/sec" -value "\MSExchangeIS\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Requests" -value "\MSExchangeIS\RPC Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\User Count" -value "\MSExchangeIS\User Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Queue Length" -value "\MSExchangeIS\Virus Scan Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Files Scanned/sec" -value "\MSExchangeIS\Virus Scan Files Scanned/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Messages Processed/sec" -value "\MSExchangeIS\Virus Scan Messages Processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Largest Block Size" -value "\MSExchangeIS\VM Largest Block Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total 16MB Free Blocks" -value "\MSExchangeIS\VM Total 16MB Free Blocks" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total Free Blocks" -value "\MSExchangeIS\VM Total Free Blocks" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total Large Free Block Bytes" -value "\MSExchangeIS\VM Total Large Free Block Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Restricted View Cache Miss Rate" -value "\MSExchangeIS Mailbox(*)\Restricted View Cache Miss Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Faults/sec" -value "\Memory\Transition Faults/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Num. of Slow Packets" -value "\MSExchangeIS\RPC Num. of Slow Packets" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Client Backoff/sec" -value "\MSExchangeIS\RPC Client Backoff/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\RPC Average Latency" -value "\MSExchangeIS Client(*)\RPC Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(_Total)\RPC Latency average (msec)" -value "\MSExchange Store Interface(_Total)\RPC Latency average (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests outstanding" -value "\MSExchange Store Interface(*)\RPC Requests outstanding" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -value "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Cache Size" -value "\MSExchange Database(Information Store)\Database Cache Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(*)\Database Page Fault Stalls/sec" -value "\MSExchange Database(*)\Database Page Fault Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Record Stalls/sec" -value "\MSExchange Database(Information Store)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(*)\Log Threads Waiting" -value "\MSExchange Database(*)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Version buckets allocated" -value "\MSExchange Database(Information Store)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Cache % Hit" -value "\MSExchange Database(Information Store)\Database Cache % Hit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\JET Log Records/sec" -value "\MSExchangeIS Client(*)\JET Log Records/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\JET Pages Read/sec" -value "\MSExchangeIS Client(*)\JET Pages Read/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\Directory Access: LDAP Reads/sec" -value "\MSExchangeIS Client(*)\Directory Access: LDAP Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\Directory Access: LDAP Searches/sec" -value "\MSExchangeIS Client(*)\Directory Access: LDAP Searches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Client: RPCs Failed: Server Too Busy / sec" -value "\MSExchangeIS\Client: RPCs Failed: Server Too Busy / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Client: RPCs Failed: Server Too Busy" -value "\MSExchangeIS\Client: RPCs Failed: Server Too Busy" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Bytes Write/sec" -value "\MSExchange Database(Information Store)\Log Bytes Write/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Public(*)\Receive Queue Size" -value "\MSExchangeIS Public(*)\Receive Queue Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow QP Threads" -value "\MSExchangeIS\Slow QP Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow Search Threads" -value "\MSExchangeIS\Slow Search Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Categorization Count" -value "\MSExchangeIS Mailbox(*)\Categorization Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Throttling Delay Value" -value "\MSExchange Search Indices(*)\Throttling Delay Value" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Average document indexing time" -value "\MSExchange Search Indices(*)\Average document indexing time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Full Crawl Mode Status" -value "\MSExchange Search Indices(*)\Full Crawl Mode Status" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Resource Booking\Average Resource Booking Processing Time" -value "\MSExchange Resource Booking\Average Resource Booking Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Resource Booking\Requests Failed" -value "\MSExchange Resource Booking\Requests Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Calendar Attendant\Average Calendar Attendant Processing Time" -value "\MSExchange Calendar Attendant\Average Calendar Attendant Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Calendar Attendant\Requests Failed" -value "\MSExchange Calendar Attendant\Requests Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests failed (%)" -value "\MSExchange Store Interface(*)\RPC Requests failed (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests sent/sec" -value "\MSExchange Store Interface(*)\RPC Requests sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Slow requests (%)" -value "\MSExchange Store Interface(*)\RPC Slow requests (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -value "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication(*)\CopyQueueLength" -value "\MSExchange Replication(*)\CopyQueueLength" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication(*)\ReplayQueueLength" -value "\MSExchange Replication(*)\ReplayQueueLength" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Write Bytes/sec" -value "\Process(EdgeTransport)\IO Write Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Data Bytes/sec" -value "\Process(EdgeTransport)\IO Data Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Read Bytes/sec" -value "\Process(EdgeTransport)\IO Read Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Mailbox Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Mailbox Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Non-Smtp Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Non-Smtp Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Mailbox Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Mailbox Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Non-Smtp Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Non-Smtp Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Submission Queue Length" -value "\MSExchangeTransport Queues(_total)\Submission Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -value "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Size" -value "\MSExchangeTransport Dumpster\Dumpster Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Inserts/sec" -value "\MSExchangeTransport Dumpster\Dumpster Inserts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Item Count" -value "\MSExchangeTransport Dumpster\Dumpster Item Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Deletes/sec" -value "\MSExchangeTransport Dumpster\Dumpster Deletes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Database(*)\Stream writes/sec" -value "\MSExchangeTransport Database(*)\Stream writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Database(*)\Stream read/sec" -value "\MSExchangeTransport Database(*)\Stream read/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Database(*)\MailItem begin commit/sec" -value "\MSExchangeTransport Database(*)\MailItem begin commit/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -value "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Extensibility Agents(*)\Total Agent Invocations" -value "\MSExchange Extensibility Agents(*)\Total Agent Invocations" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttempts" -value "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttempts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttemptsPerSecond" -value "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttemptsPerSecond" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -value "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Poison Queue Length" -value "\MSExchangeTransport Queues(_total)\Poison Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: LocalDeliveryCallsPerSecond" -value "\MSExchange Store Driver(_total)\Inbound: LocalDeliveryCallsPerSecond" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Outbound: Submitted Mail Items Per Second" -value "\MSExchange Store Driver(_total)\Outbound: Submitted Mail Items Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -value "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -value "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -value "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: Recipients Delivered Per Second" -value "\MSExchange Store Driver(_total)\Inbound: Recipients Delivered Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Writes/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Reads/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Version buckets allocated" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Reads/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Writes/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Record Stalls/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Threads Waiting" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Generation Checkpoint Depth" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Generation Checkpoint Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Slow requests latency average (msec)" -value "\MSExchange Store Interface(*)\RPC Slow requests latency average (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(_Total)\ROP Requests outstanding" -value "\MSExchange Store Interface(_Total)\ROP Requests outstanding" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Search Task Rate" -value "\MSExchangeIS Mailbox(*)\Search Task Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Recent Average Latency of RPCs Used to Obtain Content" -value "\MSExchange Search Indices(*)\Recent Average Latency of RPCs Used to Obtain Content" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Approval Assistant\Average Approval Assistant Processing Time" -value "\MSExchange Approval Assistant\Average Approval Assistant Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Approval Assistant\Last Approval Assistant Processing Time" -value "\MSExchange Approval Assistant\Last Approval Assistant Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Assistant(*)\Average Event Queue Time In Seconds" -value "\MSExchange Assistants - Per Assistant(*)\Average Event Queue Time In Seconds" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Assistant(*)\Average Event Processing Time In Seconds" -value "\MSExchange Assistants - Per Assistant(*)\Average Event Processing Time In Seconds" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Average Request Time" -value "\MSExchange ActiveSync\Average Request Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Heartbeat Interval" -value "\MSExchange ActiveSync\Heartbeat Interval" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Assistant(*)\Elapsed Time Since Last Event Queued" -value "\MSExchange Assistants - Per Assistant(*)\Elapsed Time Since Last Event Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Assistant(*)\Events in Queue" -value "\MSExchange Assistants - Per Assistant(*)\Events in Queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Assistant(*)\Events Processed/sec" -value "\MSExchange Assistants - Per Assistant(*)\Events Processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Assistant(*)\Handled Exceptions" -value "\MSExchange Assistants - Per Assistant(*)\Handled Exceptions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Database(*)\Average Event Processing Time In seconds" -value "\MSExchange Assistants - Per Database(*)\Average Event Processing Time In seconds" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Database(*)\Average Mailbox Processing Time In seconds" -value "\MSExchange Assistants - Per Database(*)\Average Mailbox Processing Time In seconds" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Database(*)\Events in queue" -value "\MSExchange Assistants - Per Database(*)\Events in queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Database(*)\Events Polled/sec" -value "\MSExchange Assistants - Per Database(*)\Events Polled/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants - Per Database(*)\Mailboxes processed/sec" -value "\MSExchange Assistants - Per Database(*)\Mailboxes processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Federated Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Federated Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Client-Reported Failures - Total" -value "\MSExchange Availability Service\Client-Reported Failures - Total" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Cross-Site Calendar Failures (sec)" -value "\MSExchange Availability Service\Cross-Site Calendar Failures (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Cross-Site Calendar Queries (sec)" -value "\MSExchange Availability Service\Cross-Site Calendar Queries (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Successful Client-Reported Requests - Over 20 seconds" -value "\MSExchange Availability Service\Successful Client-Reported Requests - Over 20 seconds" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\AS Queries Failure %" -value "\MSExchange OWA\AS Queries Failure %" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Current Proxy Users" -value "\MSExchange OWA\Current Proxy Users" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Failed Requests/sec" -value "\MSExchange OWA\Failed Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Store Logon Failure %" -value "\MSExchange OWA\Store Logon Failure %" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Logons/sec" -value "\MSExchange OWA\Logons/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Proxy Response Time Average" -value "\MSExchange OWA\Proxy Response Time Average" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Proxy User Requests/sec" -value "\MSExchange OWA\Proxy User Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess Per Server\RPC Active Backend Connections (% of Limit)" -value "\MSExchange RpcClientAccess Per Server\RPC Active Backend Connections (% of Limit)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess Per Server\RPC Average Latency (Backend)" -value "\MSExchange RpcClientAccess Per Server\RPC Average Latency (Backend)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess Per Server\RPC Average Latency (End To End)" -value "\MSExchange RpcClientAccess Per Server\RPC Average Latency (End To End)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess Per Server\RPC Average Latency (End To End) - Cached Mode" -value "\MSExchange RpcClientAccess Per Server\RPC Average Latency (End To End) - Cached Mode" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess Per Server\RPC Average Latency (End To End) - Online Mode" -value "\MSExchange RpcClientAccess Per Server\RPC Average Latency (End To End) - Online Mode" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess Per Server\RPC Failed Backend Connections" -value "\MSExchange RpcClientAccess Per Server\RPC Failed Backend Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\Active User Count" -value "\MSExchange RpcClientAccess\Active User Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\Client: RPCs Failed" -value "\MSExchange RpcClientAccess\Client: RPCs Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\Client: Latency > 10 sec RPCs" -value "\MSExchange RpcClientAccess\Client: Latency > 10 sec RPCs" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\Client: Latency > 2 sec RPCs" -value "\MSExchange RpcClientAccess\Client: Latency > 2 sec RPCs" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\Client: Latency > 5 sec RPCs" -value "\MSExchange RpcClientAccess\Client: Latency > 5 sec RPCs" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\Connection Count" -value "\MSExchange RpcClientAccess\Connection Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\RPC Averaged Latency" -value "\MSExchange RpcClientAccess\RPC Averaged Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\RPC Operations/sec" -value "\MSExchange RpcClientAccess\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\RPC Packets/sec" -value "\MSExchange RpcClientAccess\RPC Packets/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\RPC Requests" -value "\MSExchange RpcClientAccess\RPC Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange RpcClientAccess\User Count" -value "\MSExchange RpcClientAccess\User Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Throttling Service Client\Average request processing time." -value "\MSExchange Throttling Service Client\Average request processing time." -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Throttling(*)\OverBudgetThreshold" -value "\MSExchange Throttling(*)\OverBudgetThreshold" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Throttling(*)\Unique Budgets OverBudget" -value "\MSExchange Throttling(*)\Unique Budgets OverBudget" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Throttling(*)\Users X Times OverBudget" -value "\MSExchange Throttling(*)\Users X Times OverBudget" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAB\NSPI Connections Current" -value "\MSExchangeAB\NSPI Connections Current" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAB\NSPI Connections/sec" -value "\MSExchangeAB\NSPI Connections/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAB\NSPI RPC Browse Requests Average Latency" -value "\MSExchangeAB\NSPI RPC Browse Requests Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAB\NSPI RPC Requests" -value "\MSExchangeAB\NSPI RPC Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAB\NSPI RPC Requests Average Latency" -value "\MSExchangeAB\NSPI RPC Requests Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAB\NSPI RPC Requests/sec" -value "\MSExchangeAB\NSPI RPC Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAB\Referral RPC Requests Average Latency" -value "\MSExchangeAB\Referral RPC Requests Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAB\Referral RPC Requests/sec" -value "\MSExchangeAB\Referral RPC Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeImap4\Connections Rate" -value "\MSExchangeImap4\Connections Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeImap4\Proxy Current Connections" -value "\MSExchangeImap4\Proxy Current Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeImap4\SearchFolder Creation Rate" -value "\MSExchangeImap4\SearchFolder Creation Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\Connections Rate" -value "\MSExchangePop3\Connections Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\DELE Rate" -value "\MSExchangePop3\DELE Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\Proxy Current Connections" -value "\MSExchangePop3\Proxy Current Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\RETR Rate" -value "\MSExchangePop3\RETR Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\UIDL Rate" -value "\MSExchangePop3\UIDL Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeWS\Average Response Time" -value "\MSExchangeWS\Average Response Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeWS\Items Read/sec" -value "\MSExchangeWS\Items Read/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeWS\Proxy Average Response Time" -value "\MSExchangeWS\Proxy Average Response Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Moves in Completion State" -value "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Moves in Completion State" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Moves in Initial Seeding State" -value "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Moves in Initial Seeding State" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Stalled Moves (Content Indexing)" -value "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Stalled Moves (Content Indexing)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Stalled Moves (Database Replication)" -value "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Stalled Moves (Database Replication)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Stalled Moves Total" -value "\MSExchange Mailbox Replication Service Per Mdb\Active Moves: Stalled Moves Total" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mailbox Replication Service Per Mdb\MDB Health: Content Indexing Lagging" -value "\MSExchange Mailbox Replication Service Per Mdb\MDB Health: Content Indexing Lagging" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mailbox Replication Service Per Mdb\MDB Health: Database Replication Lagging" -value "\MSExchange Mailbox Replication Service Per Mdb\MDB Health: Database Replication Lagging" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mailbox Replication Service Per Mdb\MDB Health: Scan Failure" -value "\MSExchange Mailbox Replication Service Per Mdb\MDB Health: Scan Failure" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Journaling Agent\Journal Reports Created/sec" -value "\MSExchange Journaling Agent\Journal Reports Created/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Journaling Agent\Journaling Processing Time per Message" -value "\MSExchange Journaling Agent\Journaling Processing Time per Message" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Journaling Agent\Journaling Processing Time" -value "\MSExchange Journaling Agent\Journaling Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Journaling Agent\Users Journaled/sec" -value "\MSExchange Journaling Agent\Users Journaled/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpSend(_total)\Average message bytes/message" -value "\MSExchangeTransport SmtpSend(_total)\Average message bytes/message" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpSend(_total)\Average recipients/message" -value "\MSExchangeTransport SmtpSend(_total)\Average recipients/message" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SMTPReceive(_total)\Disconnections by Agents/second" -value "\MSExchangeTransport SMTPReceive(_total)\Disconnections by Agents/second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SMTPReceive(_total)\Message Bytes Received/sec" -value "\MSExchangeTransport SMTPReceive(_total)\Message Bytes Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SMTPAvailability(*)\% Activity" -value "\MSExchangeTransport SMTPAvailability(*)\% Activity" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SMTPAvailability(*)\% Availability" -value "\MSExchangeTransport SMTPAvailability(*)\% Availability" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SMTPAvailability(*)\% Failures Due To Active Directory Down" -value "\MSExchangeTransport SMTPAvailability(*)\% Failures Due To Active Directory Down" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SMTPAvailability(*)\% Failures Due To Back Pressure" -value "\MSExchangeTransport SMTPAvailability(*)\% Failures Due To Back Pressure" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SMTPAvailability(*)\% Failures Due To IO Exceptions" -value "\MSExchangeTransport SMTPAvailability(*)\% Failures Due To IO Exceptions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SMTPAvailability(*)\% Failures Due To MaxInboundConnectionLimit" -value "\MSExchangeTransport SMTPAvailability(*)\% Failures Due To MaxInboundConnectionLimit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Queued for Delivery Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Queued for Delivery Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Resubmit Jobs: Average Execution Time (sec)" -value "\MSExchangeTransport Dumpster\Dumpster Resubmit Jobs: Average Execution Time (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Resubmit Jobs: Average Request Latency (sec)" -value "\MSExchangeTransport Dumpster\Dumpster Resubmit Jobs: Average Request Latency (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Transport Rules(_total)\Messages Evaluated/sec" -value "\MSExchange Transport Rules(_total)\Messages Evaluated/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Transport Rules(_total)\Messages Processed/sec" -value "\MSExchange Transport Rules(_total)\Messages Processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Component Latency(*)\Percentile99" -value "\MSExchangeTransport Component Latency(*)\Percentile99" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Connection Filtering Agent\Connections on IP Block List Providers /sec" -value "\MSExchange Connection Filtering Agent\Connections on IP Block List Providers /sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages Scanned Per Second" -value "\MSExchange Content Filter Agent\Messages Scanned Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Throttling Service Client\Percentage of Denied Submission Request." -value "\MSExchange Throttling Service Client\Percentage of Denied Submission Request." -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\% Connections" -value "\MSExchangeIS\% Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\% RPC Threads" -value "\MSExchangeIS\% RPC Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Request Timeout Detected on Database" -value "\MSExchangeIS\RPC Request Timeout Detected on Database" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Request Timeout Detected on Mailbox" -value "\MSExchangeIS\RPC Request Timeout Detected on Mailbox" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Request Timeout Detected on Server" -value "\MSExchangeIS\RPC Request Timeout Detected on Server" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\CI QP Threads" -value "\MSExchangeIS\CI QP Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\ExchangeSearch Ten More" -value "\MSExchangeIS Mailbox(_Total)\ExchangeSearch Ten More" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Exchange Search Slow First Batch" -value "\MSExchangeIS Mailbox(_Total)\Exchange Search Slow First Batch" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\ExchangeSearch Queries" -value "\MSExchangeIS Mailbox(_Total)\ExchangeSearch Queries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\ExchangeSearch Zero Results Queries" -value "\MSExchangeIS Mailbox(_Total)\ExchangeSearch Zero Results Queries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Folder opens/sec" -value "\MSExchangeIS Mailbox(_Total)\Folder opens/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Last Query Time" -value "\MSExchangeIS Mailbox(_Total)\Last Query Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Local delivery rate" -value "\MSExchangeIS Mailbox(_Total)\Local delivery rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Logon Operations/sec" -value "\MSExchangeIS Mailbox(_Total)\Logon Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Message Opens/sec" -value "\MSExchangeIS Mailbox(_Total)\Message Opens/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Store Only Queries" -value "\MSExchangeIS Mailbox(_Total)\Store Only Queries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Store Only Query Ten More" -value "\MSExchangeIS Mailbox(_Total)\Store Only Query Ten More" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication(_total)\Log Copy KB/Sec" -value "\MSExchange Replication(_total)\Log Copy KB/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication(_total)\Avg Log Copy Latency (msec)" -value "\MSExchange Replication(_total)\Avg Log Copy Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication(_total)\Log Copying is Not Keeping Up" -value "\MSExchange Replication(_total)\Log Copying is Not Keeping Up" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(_total)\Number of Outstanding Batches" -value "\MSExchange Search Indices(_total)\Number of Outstanding Batches" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(_total)\Number of Outstanding Documents" -value "\MSExchange Search Indices(_total)\Number of Outstanding Documents" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(_total)\Number of Mailboxes Left to Crawl" -value "\MSExchange Search Indices(_total)\Number of Mailboxes Left to Crawl" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indexer\Number of Databases Being Indexed" -value "\MSExchange Search Indexer\Number of Databases Being Indexed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indexer\Number of Indexed Databases Being Kept Up-to-Date by Notifications" -value "\MSExchange Search Indexer\Number of Indexed Databases Being Kept Up-to-Date by Notifications" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mail Submission(*)\Hub Servers In Retry" -value "\MSExchange Mail Submission(*)\Hub Servers In Retry" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mail Submission(*)\Failed Submissions Per Second" -value "\MSExchange Mail Submission(*)\Failed Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Mail Submission(*)\Shadow Re-submission Queue Length" -value "\MSExchange Mail Submission(*)\Shadow Re-submission Queue Length" -Force
    }
    
    
    #verify Exchange 2007 CAS switch parameter is applied
    if($Exchange2007CAS) {
        #http://blogs.technet.com/mikelag/archive/2008/08/20/xml-updates-for-the-pal-tool.aspx
        $Object | Add-Member -MemberType noteproperty -Name "\.NET CLR Exceptions(*)\# of Exceps Thrown / sec" -value "\.NET CLR Exceptions(*)\# of Exceps Thrown / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\.NET CLR Memory(_Global_)\% Time in GC" -value "\.NET CLR Memory(_Global_)\% Time in GC" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\.NET CLR Memory(*)\# Bytes in all Heaps" -value "\.NET CLR Memory(*)\# Bytes in all Heaps" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Application Restarts" -value "\ASP.NET\Application Restarts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Request Wait Time" -value "\ASP.NET\Request Wait Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Requests Current" -value "\ASP.NET\Requests Current" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Requests Queued" -value "\ASP.NET\Requests Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Requests Rejected" -value "\ASP.NET\Requests Rejected" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Worker Process Restarts" -value "\ASP.NET\Worker Process Restarts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET Applications(__Total__)\Requests In Application Queue" -value "\ASP.NET Applications(__Total__)\Requests In Application Queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET Applications\Request Execution Time" -value "\ASP.NET Applications\Request Execution Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(C:)\Free Megabytes" -value "\LogicalDisk(C:)\Free Megabytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Transfers/sec" -value "\LogicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Available MBytes" -value "\Memory\Available MBytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Free System Page Table Entries" -value "\Memory\Free System Page Table Entries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Cache Bytes" -value "\Memory\Cache Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Commit Limit" -value "\Memory\Commit Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Committed Bytes" -value "\Memory\Committed Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Page Reads/sec" -value "\Memory\Page Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Input/sec" -value "\Memory\Pages Input/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Output/sec" -value "\Memory\Pages Output/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages/sec" -value "\Memory\Pages/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\% Committed Bytes In Use" -value "\Memory\% Committed Bytes In Use" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\System Cache Resident Bytes" -value "\Memory\System Cache Resident Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Faults/sec" -value "\Memory\Transition Faults/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Pages RePurposed/sec" -value "\Memory\Transition Pages RePurposed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Nonpaged Bytes" -value "\Memory\Pool Nonpaged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Paged Bytes" -value "\Memory\Pool Paged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Average Request Time" -value "\MSExchange ActiveSync\Average Request Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Ping Commands Pending" -value "\MSExchange ActiveSync\Ping Commands Pending" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Requests/sec" -value "\MSExchange ActiveSync\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Sync Commands/sec" -value "\MSExchange ActiveSync\Sync Commands/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -value "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -value "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Read Time" -value "\MSExchange ADAccess Processes(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Search Time" -value "\MSExchange ADAccess Processes(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Number of Mailboxes Processed per Request" -value "\MSExchange Availability Service\Average Number of Mailboxes Processed per Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Cross-Forest Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Cross-Forest Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Cross-Site Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Cross-Site Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Meeting Suggestions Request" -value "\MSExchange Availability Service\Average Time to Process a Meeting Suggestions Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Availability Requests (sec)" -value "\MSExchange Availability Service\Availability Requests (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Active Conversions" -value "\MSExchange OWA\Active Conversions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Conversion Time" -value "\MSExchange OWA\Average Conversion Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Response Time" -value "\MSExchange OWA\Average Response Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Search Time" -value "\MSExchange OWA\Average Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Current Unique Users" -value "\MSExchange OWA\Current Unique Users" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Queued Conversion Requests" -value "\MSExchange OWA\Queued Conversion Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Requests/sec" -value "\MSExchange OWA\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAutodiscover\Requests/sec" -value "\MSExchangeAutodiscover\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeFDS:OAB(*)\Download Task Queued" -value "\MSExchangeFDS:OAB(*)\Download Task Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeFDS:OAB(*)\Download Tasks Completed" -value "\MSExchangeFDS:OAB(*)\Download Tasks Completed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeFDS:UM\Download Task Queued" -value "\MSExchangeFDS:UM\Download Task Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeImap4\Current Connections" -value "\MSExchangeImap4\Current Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeImap4\Average Command Processing Time (milliseconds)" -value "\MSExchangeImap4\Average Command Processing Time (milliseconds)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\Connections Current" -value "\MSExchangePop3\Connections Current" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangePop3\Average Command Processing Time (milliseconds)" -value "\MSExchangePop3\Average Command Processing Time (milliseconds)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeWS\Requests/sec" -value "\MSExchangeWS\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets Outbound Errors" -value "\Network Interface(*)\Packets Outbound Errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Output Queue Length" -value "\Network Interface(*)\Output Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Bytes Total/sec" -value "\Network Interface(*)\Bytes Total/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Paging File(*)\% Usage" -value "\Paging File(*)\% Usage" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Paging File(*)\% Usage Peak" -value "\Paging File(*)\% Usage Peak" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Read" -value "\PhysicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Write" -value "\PhysicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\% Processor Time" -value "\Process(*)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Handle Count" -value "\Process(*)\Handle Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Virtual Bytes" -value "\Process(*)\Virtual Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Private Bytes" -value "\Process(*)\Private Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Data Bytes/sec" -value "\Process(EdgeTransport)\IO Data Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Data Operations/sec" -value "\Process(*)\IO Data Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Other Operations/sec" -value "\Process(*)\IO Other Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Read Bytes/sec" -value "\Process(EdgeTransport)\IO Read Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Write Bytes/sec" -value "\Process(EdgeTransport)\IO Write Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Thread Count" -value "\Process(*)\Thread Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Working Set" -value "\Process(*)\Working Set" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Interrupt Time" -value "\Processor(*)\% Interrupt Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Privileged Time" -value "\Processor(*)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Processor Time" -value "\Processor(*)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Nonpaged Failures" -value "\Server\Pool Nonpaged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Paged Failures" -value "\Server\Pool Paged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Privileged Time" -value "\Processor(_Total)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Processor Time" -value "\Processor(_Total)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Context Switches/sec" -value "\System\Context Switches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Processor Queue Length" -value "\System\Processor Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Connection Attempts/sec" -value "\Web Service(_Total)\Connection Attempts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Current Connections" -value "\Web Service(_Total)\Current Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\ISAPI Extension Requests" -value "\Web Service(_Total)\ISAPI Extension Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Other Request Methods/sec" -value "\Web Service(_Total)\Other Request Methods/sec" -Force
    }


    #verify Exchange 2007 CAS Technet switch parameter is applied
    if($Exchange2007CAS_Technet) {
        #http://technet.microsoft.com/en-us/library/bb201674(v=exchg.80)
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Application Restarts" -value "\ASP.NET\Application Restarts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Request Wait Time" -value "\ASP.NET\Request Wait Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Requests Current" -value "\ASP.NET\Requests Current" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET\Worker Process Restarts" -value "\ASP.NET\Worker Process Restarts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\ASP.NET Applications(*)\Requests In Application Queue" -value "\ASP.NET Applications(*)\Requests In Application Queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(_Total)\Disk Reads/sec" -value "\LogicalDisk(_Total)\Disk Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(_Total)\Disk Writes/sec" -value "\LogicalDisk(_Total)\Disk Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Average Request Time" -value "\MSExchange ActiveSync\Average Request Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Ping Commands Pending" -value "\MSExchange ActiveSync\Ping Commands Pending" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Requests/sec" -value "\MSExchange ActiveSync\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ActiveSync\Sync Commands/sec" -value "\MSExchange ActiveSync\Sync Commands/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Average Time to Process a Free Busy Request" -value "\MSExchange Availability Service\Average Time to Process a Free Busy Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Availability Service\Availability Requests (sec)" -value "\MSExchange Availability Service\Availability Requests (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Response Time" -value "\MSExchange OWA\Average Response Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Average Search Time" -value "\MSExchange OWA\Average Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Current Unique Users" -value "\MSExchange OWA\Current Unique Users" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange OWA\Requests/sec" -value "\MSExchange OWA\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeAutodiscover\Requests/sec" -value "\MSExchangeAutodiscover\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeFDS:OAB(*)\Download Task Queued" -value "\MSExchangeFDS:OAB(*)\Download Task Queued" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeFDS:OAB(*)\Download Tasks Completed" -value "\MSExchangeFDS:OAB(*)\Download Tasks Completed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeWS\Requests/sec" -value "\MSExchangeWS\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\RPC/HTTP Proxy\Current Number of Incoming RPC over HTTP Connections" -value "\RPC/HTTP Proxy\Current Number of Incoming RPC over HTTP Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\RPC/HTTP Proxy\Current Number of Unique Users" -value "\RPC/HTTP Proxy\Current Number of Unique Users" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\RPC/HTTP Proxy\Number of Failed Back-End Connection attempts per Second" -value "\RPC/HTTP Proxy\Number of Failed Back-End Connection attempts per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\RPC/HTTP Proxy\RPC/HTTP Requests per Second" -value "\RPC/HTTP Proxy\RPC/HTTP Requests per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Current Connections" -value "\Web Service(_Total)\Current Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\WebService(_Total)\Connection Attempts/sec" -value "\WebService(_Total)\Connection Attempts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\ISAPI Extension Requests/sec" -value "\Web Service(_Total)\ISAPI Extension Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Other Request Methods/sec" -value "\Web Service(_Total)\Other Request Methods/sec" -Force
    }


    #verify Exchange 2007 Edge Technet switch parameter is applied
    if($Exchange2007Edge_Technet) {
        #http://technet.microsoft.com/en-us/library/ee532088(v=exchg.80)
        $Object | Add-Member -MemberType noteproperty -Name "\AD/AM(ADAM_MSExchange)\LDAP Searches/sec" -value "\AD/AM(ADAM_MSExchange)\LDAP Searches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\AD/AM(ADAM_MSExchange)\LDAP Writes/sec" -value "\AD/AM(ADAM_MSExchange)\LDAP Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\DirectoryServices(ADAM_MSExchange)\LDAP Searches/sec" -value "\DirectoryServices(ADAM_MSExchange)\LDAP Searches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\DirectoryServices(ADAM_MSExchange)\LDAP Writes/sec" -value "\DirectoryServices(ADAM_MSExchange)\LDAP Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk Queue Length" -value "\LogicalDisk(*)\Avg. Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Transfer" -value "\LogicalDisk(*)\Avg. Disk sec/Transfer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Attachment Filtering\Messages Attachment Filtered" -value "\MSExchange Attachment Filtering\Messages Attachment Filtered" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Attachment Filtering\Messages Filtered/sec" -value "\MSExchange Attachment Filtering\Messages Filtered/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages Deleted" -value "\MSExchange Content Filter Agent\Messages Deleted" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages Quarantined" -value "\MSExchange Content Filter Agent\Messages Quarantined" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages Rejected" -value "\MSExchange Content Filter Agent\Messages Rejected" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages Scanned Per Second" -value "\MSExchange Content Filter Agent\Messages Scanned Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages that Bypassed Scanning" -value "\MSExchange Content Filter Agent\Messages that Bypassed Scanning" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 0" -value "\MSExchange Content Filter Agent\Messages with SCL 0" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 1" -value "\MSExchange Content Filter Agent\Messages with SCL 1" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 2" -value "\MSExchange Content Filter Agent\Messages with SCL 2" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 3" -value "\MSExchange Content Filter Agent\Messages with SCL 3" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 4" -value "\MSExchange Content Filter Agent\Messages with SCL 4" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 5" -value "\MSExchange Content Filter Agent\Messages with SCL 5" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 6" -value "\MSExchange Content Filter Agent\Messages with SCL 6" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 7" -value "\MSExchange Content Filter Agent\Messages with SCL 7" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 8" -value "\MSExchange Content Filter Agent\Messages with SCL 8" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Content Filter Agent\Messages with SCL 9" -value "\MSExchange Content Filter Agent\Messages with SCL 9" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(edgetransport)\Database Cache Size (MB)" -value "\MSExchange Database(edgetransport)\Database Cache Size (MB)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Reads/sec" -value "\MSExchange Database ==> Instances(*)\I/O Database Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Writes/sec" -value "\MSExchange Database ==> Instances(*)\I/O Database Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Log Reads/sec" -value "\MSExchange Database ==> Instances(*)\I/O Log Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Log Writes/sec" -value "\MSExchange Database ==> Instances(*)\I/O Log Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\Log Generation Checkpoint Depth" -value "\MSExchange Database ==> Instances(*)\Log Generation Checkpoint Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\Log Record Stalls/sec" -value "\MSExchange Database ==> Instances(*)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\Log Threads Waiting" -value "\MSExchange Database ==> Instances(*)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\Version buckets allocated" -value "\MSExchange Database ==> Instances(*)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -value "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Protocol Analysis Background Agent\Block Senders" -value "\MSExchange Protocol Analysis Background Agent\Block Senders" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Recipient Filter Agent\Recipients Rejected by Block List/sec" -value "\MSExchange Recipient Filter Agent\Recipients Rejected by Block List/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Recipient Filter Agent\Recipients Rejected by Recipient Validation/sec" -value "\MSExchange Recipient Filter Agent\Recipients Rejected by Recipient Validation/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Sender Filter Agent\Messages Filtered by Sender Filter/sec" -value "\MSExchange Sender Filter Agent\Messages Filtered by Sender Filter/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Sender Id Agent\DNS Queries/sec" -value "\MSExchange Sender Id Agent\DNS Queries/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Transport Rules\Messages Evaluated/sec" -value "\MSExchange Transport Rules\Messages Evaluated/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Transport Rules\Messages Processed/sec" -value "\MSExchange Transport Rules\Messages Processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeEdgeSync Job\Edge objects added/sec" -value "\MSExchangeEdgeSync Job\Edge objects added/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeEdgeSync Job\Edge objects deleted/sec" -value "\MSExchangeEdgeSync Job\Edge objects deleted/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeEdgeSync Job\Edge objects updated/sec" -value "\MSExchangeEdgeSync Job\Edge objects updated/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeEdgeSync Job\Scan jobs completed successfully total" -value "\MSExchangeEdgeSync Job\Scan jobs completed successfully total" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeEdgeSync Job\Scan jobs failed because could not extend lock total" -value "\MSExchangeEdgeSync Job\Scan jobs failed because could not extend lock total" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeEdgeSync Job\Scan jobs failed because of directory error total" -value "\MSExchangeEdgeSync Job\Scan jobs failed because of directory error total" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeEdgeSync Job\Source objects scanned/sec" -value "\MSExchangeEdgeSync Job\Source objects scanned/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeEdgeSync Job\Target objects scanned/sec" -value "\MSExchangeEdgeSync Job\Target objects scanned/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -value "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Items Completed Delivery Per Second" -value "\MSExchangeTransport Queues(_total)\Items Completed Delivery Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Message" -value "\MSExchangeTransport Queues(_total)\Message" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Poison Queue Length" -value "\MSExchangeTransport Queues(_total)\Poison Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Submission Queue Length" -value "\MSExchangeTransport Queues(_total)\Submission Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -value "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -value "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -value "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -value "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk Queue Length" -value "\PhysicalDisk(*)\Avg. Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Read" -value "\PhysicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Transfer" -value "\PhysicalDisk(*)\Avg. Disk sec/Transfer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Write" -value "\PhysicalDisk(*)\Avg. Disk sec/Write" -Force
    }
    
    
    if($Exchange2007Hub) {
        #http://blogs.technet.com/mikelag/archive/2008/08/20/xml-updates-for-the-pal-tool.aspx
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Processor Time" -value "\Processor(*)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Bytes Total/sec" -value "\Network Interface(*)\Bytes Total/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Current Bandwidth" -value "\Network Interface(*)\Current Bandwidth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Processor Queue Length" -value "\System\Processor Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Privileged Time" -value "\Processor(*)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Read" -value "\PhysicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Write" -value "\PhysicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Free System Page Table Entries" -value "\Memory\Free System Page Table Entries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Nonpaged Bytes" -value "\Memory\Pool Nonpaged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Paged Bytes" -value "\Memory\Pool Paged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Available MBytes" -value "\Memory\Available MBytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages/sec" -value "\Memory\Pages/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Output Queue Length" -value "\Network Interface(*)\Output Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Processor Time" -value "\Processor(_Total)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Privileged Time" -value "\Processor(_Total)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Context Switches/sec" -value "\System\Context Switches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Private Bytes" -value "\Process(*)\Private Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Handle Count" -value "\Process(*)\Handle Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Thread Count" -value "\Process(*)\Thread Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\% Processor Time" -value "\Process(*)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Virtual Bytes" -value "\Process(*)\Virtual Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(C:)\Free Megabytes" -value "\LogicalDisk(C:)\Free Megabytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Interrupt Time" -value "\Processor(*)\% Interrupt Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Working Set" -value "\Process(*)\Working Set" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\System Cache Resident Bytes" -value "\Memory\System Cache Resident Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Data Operations/sec" -value "\Process(*)\IO Data Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Other Operations/sec" -value "\Process(*)\IO Other Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Transfers/sec" -value "\LogicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Input/sec" -value "\Memory\Pages Input/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Paging File(*)\% Usage" -value "\Paging File(*)\% Usage" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Paging File(*)\% Usage Peak" -value "\Paging File(*)\% Usage Peak" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\.NET CLR Exceptions(*)\# of Exceps Thrown / sec" -value "\.NET CLR Exceptions(*)\# of Exceps Thrown / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Connection Attempts/sec" -value "\Web Service(_Total)\Connection Attempts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\.NET CLR Memory(*)\# Bytes in all Heaps" -value "\.NET CLR Memory(*)\# Bytes in all Heaps" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Page Reads/sec" -value "\Memory\Page Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\.NET CLR Memory(_Global_)\% Time in GC" -value "\.NET CLR Memory(_Global_)\% Time in GC" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -value "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Read Time" -value "\MSExchange ADAccess Processes(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Search Time" -value "\MSExchange ADAccess Processes(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -value "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Faults/sec" -value "\Memory\Transition Faults/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Cache Bytes" -value "\Memory\Cache Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -value "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(*)\Database Page Fault Stalls/sec" -value "\MSExchange Database(*)\Database Page Fault Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Nonpaged Failures" -value "\Server\Pool Nonpaged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Paged Failures" -value "\Server\Pool Paged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -value "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Output/sec" -value "\Memory\Pages Output/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Write Bytes/sec" -value "\Process(EdgeTransport)\IO Write Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Data Bytes/sec" -value "\Process(EdgeTransport)\IO Data Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(EdgeTransport)\IO Read Bytes/sec" -value "\Process(EdgeTransport)\IO Read Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Mailbox Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Mailbox Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Non-Smtp Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Non-Smtp Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Mailbox Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Mailbox Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Non-Smtp Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Non-Smtp Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Submission Queue Length" -value "\MSExchangeTransport Queues(_total)\Submission Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -value "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Size" -value "\MSExchangeTransport Dumpster\Dumpster Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Inserts/sec" -value "\MSExchangeTransport Dumpster\Dumpster Inserts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Item Count" -value "\MSExchangeTransport Dumpster\Dumpster Item Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Deletes/sec" -value "\MSExchangeTransport Dumpster\Dumpster Deletes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Database(*)\Stream writes/sec" -value "\MSExchangeTransport Database(*)\Stream writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Database(*)\Stream read/sec" -value "\MSExchangeTransport Database(*)\Stream read/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Database(*)\MailItem begin commit/sec" -value "\MSExchangeTransport Database(*)\MailItem begin commit/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Batch Point(*)\Transactions committed/sec" -value "\MSExchangeTransport Batch Point(*)\Transactions committed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -value "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Extensibility Agents(*)\Total Agent Invocations" -value "\MSExchange Extensibility Agents(*)\Total Agent Invocations" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttempts" -value "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttempts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttemptsPerSecond" -value "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttemptsPerSecond" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -value "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Poison Queue Length" -value "\MSExchangeTransport Queues(_total)\Poison Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: LocalDeliveryCallsPerSecond" -value "\MSExchange Store Driver(_total)\Inbound: LocalDeliveryCallsPerSecond" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Outbound: Submitted Mail Items Per Second" -value "\MSExchange Store Driver(_total)\Outbound: Submitted Mail Items Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -value "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -value "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -value "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: Recipients Delivered Per Second" -value "\MSExchange Store Driver(_total)\Inbound: Recipients Delivered Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Writes/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Reads/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Version buckets allocated" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Reads/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Writes/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Record Stalls/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Threads Waiting" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Generation Checkpoint Depth" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Generation Checkpoint Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Pages RePurposed/sec" -value "\Memory\Transition Pages RePurposed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets Outbound Errors" -value "\Network Interface(*)\Packets Outbound Errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\Log Generation Checkpoint Depth" -value "\MSExchange Database ==> Instances(*)\Log Generation Checkpoint Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Committed Bytes" -value "\Memory\Committed Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Commit Limit" -value "\Memory\Commit Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\% Committed Bytes In Use" -value "\Memory\% Committed Bytes In Use" -Force
    }
    
    
    #verify Exchange 2007 Hub Technet switch parameter is applied
    if($Exchange2007Hub_Technet) {
        #http://technet.microsoft.com/en-us/library/bb201704(v=exchg.80)
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Reads/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Writes/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Reads/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Writes/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Generation Checkpoint Depth" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Generation Checkpoint Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Record Stalls/sec" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Threads Waiting" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Version buckets allocated" -value "\MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -value "\MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Extensibility Agents(*)\Total Agent Invocations" -value "\MSExchange Extensibility Agents(*)\Total Agent Invocations" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: LocalDeliveryCallsPerSecond" -value "\MSExchange Store Driver(_total)\Inbound: LocalDeliveryCallsPerSecond" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttemptsPerSecond" -value "\MSExchange Store Driver(_total)\Inbound: MessageDeliveryAttemptsPerSecond" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Inbound: Recipients Delivered Per Second" -value "\MSExchange Store Driver(_total)\Inbound: Recipients Delivered Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Driver(_total)\Outbound: Submitted Mail Items Per Second" -value "\MSExchange Store Driver(_total)\Outbound: Submitted Mail Items Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Deletes/sec" -value "\MSExchangeTransport Dumpster\Dumpster Deletes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Inserts/sec" -value "\MSExchangeTransport Dumpster\Dumpster Inserts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Item Count" -value "\MSExchangeTransport Dumpster\Dumpster Item Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Dumpster\Dumpster Size" -value "\MSExchangeTransport Dumpster\Dumpster Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Mailbox Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Mailbox Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Non-Smtp Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Non-Smtp Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -value "\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Queued for Delivery Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Queued for Delivery Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -value "\MSExchangeTransport Queues(_total)\Messages Submitted Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Poison Queue Length" -value "\MSExchangeTransport Queues(_total)\Poison Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Mailbox Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Mailbox Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Non-Smtp Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Non-Smtp Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -value "\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Submission Queue Length" -value "\MSExchangeTransport Queues(_total)\Submission Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -value "\MSExchangeTransport Queues(_total)\Unreachable Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -value "\MSExchangeTransport SmtpReceive(_total)\Average bytes/message" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -value "\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -value "\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Read" -value "\PhysicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Write " -value "\PhysicalDisk(*)\Avg. Disk sec/Write" -Force
    }
    
    
    #verify Exchange 2007 Mailbox switch parameter is applied
    if($Exchange2007Mailbox) {
        #http://blogs.technet.com/b/mikelag/archive/2008/08/20/xml-updates-for-the-pal-tool.aspx
        $Object | Add-Member -MemberType noteproperty -Name "\.NET CLR Exceptions(*)\# of Exceps Thrown / sec" -value "\.NET CLR Exceptions(*)\# of Exceps Thrown / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\.NET CLR Memory(*)\% Time in GC" -value "\.NET CLR Memory(*)\% Time in GC" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\.NET CLR Memory(*)\# Bytes in all Heaps" -value "\.NET CLR Memory(*)\# Bytes in all Heaps" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\IPv4\Datagrams/sec" -value "\IPv4\Datagrams/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\IPv6\Datagrams/sec" -value "\IPv6\Datagrams/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(C:)\Free Megabytes" -value "\LogicalDisk(C:)\Free Megabytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Transfer" -value "\LogicalDisk(*)\Avg. Disk sec/Transfer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Transfers/sec" -value "\LogicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Available MBytes" -value "\Memory\Available MBytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Free System Page Table Entries" -value "\Memory\Free System Page Table Entries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\% Committed Bytes In Use" -value "\Memory\% Committed Bytes In Use" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Cache Bytes" -value "\Memory\Cache Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Committed Bytes" -value "\Memory\Committed Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Page Reads/sec" -value "\Memory\Page Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Input/sec" -value "\Memory\Pages Input/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Output/sec" -value "\Memory\Pages Output/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages/sec" -value "\Memory\Pages/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\System Cache Resident Bytes" -value "\Memory\System Cache Resident Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Faults/sec" -value "\Memory\Transition Faults/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Pages RePurposed/sec" -value "\Memory\Transition Pages RePurposed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Nonpaged Bytes" -value "\Memory\Pool Nonpaged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Paged Bytes" -value "\Memory\Pool Paged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -value "\MSExchange ADAccess Caches(*)\LDAP Searches/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search calls/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -value "\MSExchange ADAccess Domain Controllers(*)\LDAP Searches timed out per minute" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -value "\MSExchange ADAccess Domain Controllers(*)\Long running LDAP operations/Min" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Read Time" -value "\MSExchange ADAccess Processes(*)\LDAP Read Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange ADAccess Processes(*)\LDAP Search Time" -value "\MSExchange ADAccess Processes(*)\LDAP Search Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Average Event Processing Time In seconds" -value "\MSExchange Assistants(*)\Average Event Processing Time In seconds" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Events in queue" -value "\MSExchange Assistants(*)\Events in queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Events Polled/sec" -value "\MSExchange Assistants(*)\Events Polled/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Mailboxes processed/sec" -value "\MSExchange Assistants(*)\Mailboxes processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Number of events processed per second." -value "\MSExchange Assistants(*)\Number of events processed per second." -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Calendar Attendant\Average Calendar Attendant Processing Time" -value "\MSExchange Calendar Attendant\Average Calendar Attendant Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Calendar Attendant\Requests Failed" -value "\MSExchange Calendar Attendant\Requests Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Cache % Hit" -value "\MSExchange Database(Information Store)\Database Cache % Hit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Cache Size" -value "\MSExchange Database(Information Store)\Database Cache Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Page Fault Stalls/sec" -value "\MSExchange Database(Information Store)\Database Page Fault Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Bytes Write/sec" -value "\MSExchange Database(Information Store)\Log Bytes Write/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Record Stalls/sec" -value "\MSExchange Database(Information Store)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Threads Waiting" -value "\MSExchange Database(Information Store)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\Log Generation Checkpoint Depth" -value "\MSExchange Database ==> Instances(*)\Log Generation Checkpoint Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\Version buckets allocated" -value "\MSExchange Database ==> Instances(*)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replica Seeder(*)\Seeding Finished %" -value "\MSExchange Replica Seeder(*)\Seeding Finished %" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication(*)\CopyQueueLength" -value "\MSExchange Replication(*)\CopyQueueLength" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication(*)\ReplayQueueLength" -value "\MSExchange Replication(*)\ReplayQueueLength" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Resource Booking\Average Resource Booking Processing Time" -value "\MSExchange Resource Booking\Average Resource Booking Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Resource Booking\Requests Failed" -value "\MSExchange Resource Booking\Requests Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Average document indexing time" -value "\MSExchange Search Indices(*)\Average document indexing time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Full Crawl Mode Status" -value "\MSExchange Search Indices(*)\Full Crawl Mode Status" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Recent Average Latency of RPCs Used to Obtain Content" -value "\MSExchange Search Indices(*)\Recent Average Latency of RPCs Used to Obtain Content" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Throttling Delay Value" -value "\MSExchange Search Indices(*)\Throttling Delay Value" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\ConnectionCache active connections" -value "\MSExchange Store Interface(*)\ConnectionCache active connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\ConnectionCache out of limit creations" -value "\MSExchange Store Interface(*)\ConnectionCache out of limit creations" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\ROP Requests outstanding" -value "\MSExchange Store Interface(*)\ROP Requests outstanding" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(_Total)\RPC Latency average (msec)" -value "\MSExchange Store Interface(_Total)\RPC Latency average (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests failed (%)" -value "\MSExchange Store Interface(*)\RPC Requests failed (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests outstanding" -value "\MSExchange Store Interface(*)\RPC Requests outstanding" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests sent/sec" -value "\MSExchange Store Interface(*)\RPC Requests sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Slow requests (%)" -value "\MSExchange Store Interface(*)\RPC Slow requests (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Slow requests latency average (msec)" -value "\MSExchange Store Interface(*)\RPC Slow requests latency average (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Client: RPCs Failed: Server Too Busy" -value "\MSExchangeIS\Client: RPCs Failed: Server Too Busy" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Client: RPCs Failed: Server Too Busy / sec" -value "\MSExchangeIS\Client: RPCs Failed: Server Too Busy / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Averaged Latency" -value "\MSExchangeIS\RPC Averaged Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Client Backoff/sec" -value "\MSExchangeIS\RPC Client Backoff/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Num. of Slow Packets" -value "\MSExchangeIS\RPC Num. of Slow Packets" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Operations/sec" -value "\MSExchangeIS\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Requests" -value "\MSExchangeIS\RPC Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow QP Threads" -value "\MSExchangeIS\Slow QP Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow Search Threads" -value "\MSExchangeIS\Slow Search Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\User Count" -value "\MSExchangeIS\User Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Files Scanned/sec" -value "\MSExchangeIS\Virus Scan Files Scanned/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Messages Processed/sec" -value "\MSExchangeIS\Virus Scan Messages Processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Virus Scan Queue Length" -value "\MSExchangeIS\Virus Scan Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Largest Block Size" -value "\MSExchangeIS\VM Largest Block Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total 16MB Free Blocks" -value "\MSExchangeIS\VM Total 16MB Free Blocks" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total Free Blocks" -value "\MSExchangeIS\VM Total Free Blocks" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\VM Total Large Free Block Bytes" -value "\MSExchangeIS\VM Total Large Free Block Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\Directory Access: LDAP Reads/sec" -value "\MSExchangeIS Client(*)\Directory Access: LDAP Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\Directory Access: LDAP Searches/sec" -value "\MSExchangeIS Client(*)\Directory Access: LDAP Searches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\JET Log Records/sec" -value "\MSExchangeIS Client(*)\JET Log Records/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\JET Pages Read/sec" -value "\MSExchangeIS Client(*)\JET Pages Read/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\RPC Average Latency" -value "\MSExchangeIS Client(*)\RPC Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\RPC Operations/sec" -value "\MSExchangeIS Client(*)\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Categorization Count" -value "\MSExchangeIS Mailbox(*)\Categorization Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Delivered/sec" -value "\MSExchangeIS Mailbox(*)\Messages Delivered/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Queued For Submission" -value "\MSExchangeIS Mailbox(*)\Messages Queued For Submission" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Sent/sec" -value "\MSExchangeIS Mailbox(*)\Messages Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Messages Submitted/sec" -value "\MSExchangeIS Mailbox(*)\Messages Submitted/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Restricted View Cache Miss Rate" -value "\MSExchangeIS Mailbox(*)\Restricted View Cache Miss Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Search Task Rate" -value "\MSExchangeIS Mailbox(*)\Search Task Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Slow FindRow Rate" -value "\MSExchangeIS Mailbox(*)\Slow FindRow Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Public(*)\Messages Queued For Submission" -value "\MSExchangeIS Public(*)\Messages Queued For Submission" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Public(_Total)\Replication Receive Queue Size" -value "\MSExchangeIS Public(_Total)\Replication Receive Queue Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -value "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -value "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets Outbound Errors" -value "\Network Interface(*)\Packets Outbound Errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Output Queue Length" -value "\Network Interface(*)\Output Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Bytes Total/sec" -value "\Network Interface(*)\Bytes Total/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Current Bandwidth" -value "\Network Interface(*)\Current Bandwidth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Paging File(*)\% Usage" -value "\Paging File(*)\% Usage" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Paging File(*)\% Usage Peak" -value "\Paging File(*)\% Usage Peak" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\% Processor Time" -value "\Process(*)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(Microsoft.Exchange.Search.ExSearch)\% Processor Time" -value "\Process(Microsoft.Exchange.Search.ExSearch)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Handle Count" -value "\Process(*)\Handle Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Virtual Bytes" -value "\Process(*)\Virtual Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Private Bytes" -value "\Process(*)\Private Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Data Operations/sec" -value "\Process(*)\IO Data Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Other Operations/sec" -value "\Process(*)\IO Other Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Thread Count" -value "\Process(*)\Thread Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Working Set" -value "\Process(*)\Working Set" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Interrupt Time" -value "\Processor(*)\% Interrupt Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Privileged Time" -value "\Processor(_Total)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Processor Time" -value "\Processor(_Total)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Processor Time" -value "\Processor(*)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% User Time" -value "\Processor(_Total)\% User Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Nonpaged Failures" -value "\Server\Pool Nonpaged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Paged Failures" -value "\Server\Pool Paged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Context Switches/sec" -value "\System\Context Switches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Processor Queue Length" -value "\System\Processor Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv4\Connection Failures" -value "\TCPv4\Connection Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv4\Connections Established" -value "\TCPv4\Connections Established" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv4\Connections Reset" -value "\TCPv4\Connections Reset" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv4\Segments Received/sec" -value "\TCPv4\Segments Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv6\Connection Failures" -value "\TCPv6\Connection Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv6\Connections Established" -value "\TCPv6\Connections Established" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv6\Connections Reset" -value "\TCPv6\Connections Reset" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv6\Segments Received/sec" -value "\TCPv6\Segments Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Connection Attempts/sec" -value "\Web Service(_Total)\Connection Attempts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Current Connections" -value "\Web Service(_Total)\Current Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Other Request Methods/sec" -value "\Web Service(_Total)\Other Request Methods/sec" -Force
    }
    
    
    #verify Exchange 2007 Mailbox Technet switch parameter is applied
    if($Exchange2007Mailbox_Technet) {
        #http://technet.microsoft.com/en-us/library/bb201689(v=exchg.80)
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Transfer" -value "\LogicalDisk(*)\Avg. Disk sec/Transfer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Average Event Processing Time In seconds" -value "\MSExchange Assistants(*)\Average Event Processing Time In seconds" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Events in queue" -value "\MSExchange Assistants(*)\Events in queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Events Polled/sec" -value "\MSExchange Assistants(*)\Events Polled/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Assistants(*)\Mailboxes processed/sec" -value "\MSExchange Assistants(*)\Mailboxes processed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Calendar Attendant\Average Calendar Attendant Processing Time" -value "\MSExchange Calendar Attendant\Average Calendar Attendant Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Calendar Attendant\Requests Failed" -value "\MSExchange Calendar Attendant\Requests Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Page Fault Stalls/sec" -value "\MSExchange Database(Information Store)\Database Page Fault Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Record Stalls/sec" -value "\MSExchange Database(Information Store)\Log Record Stalls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Threads Waiting" -value "\MSExchange Database(Information Store)\Log Threads Waiting" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Version buckets allocated" -value "\MSExchange Database(Information Store)\Version buckets allocated" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Cache % Hit" -value "\MSExchange Database(Information Store)\Database Cache % Hit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Database Cache Size (MB)" -value "\MSExchange Database(Information Store)\Database Cache Size (MB)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database(Information Store)\Log Bytes Write/sec" -value "\MSExchange Database(Information Store)\Log Bytes Write/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Reads Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -value "\MSExchange Database ==> Instances(*)\I/O Database Writes Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Database ==> Instances(*)\Log Generation Checkpoint Depth" -value "\MSExchange Database ==> Instances(*)\Log Generation Checkpoint Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replica Seeder\Seeding Finished %" -value "\MSExchange Replica Seeder\Seeding Finished %" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication\CopyQueueLength" -value "\MSExchange Replication\CopyQueueLength" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Replication\ReplayQueueLength" -value "\MSExchange Replication\ReplayQueueLength" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Resource Booking\Average Resource Booking Processing Time" -value "\MSExchange Resource Booking\Average Resource Booking Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Resource Booking\Requests Failed" -value "\MSExchange Resource Booking\Requests Failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Average document indexing time" -value "\MSExchange Search Indices(*)\Average document indexing time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Full Crawl Mode Status" -value "\MSExchange Search Indices(*)\Full Crawl Mode Status" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Recent Average Latency of RPCs Used to Obtain Content" -value "\MSExchange Search Indices(*)\Recent Average Latency of RPCs Used to Obtain Content" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Search Indices(*)\Throttling Delay Value" -value "\MSExchange Search Indices(*)\Throttling Delay Value" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\ROP Requests outstanding" -value "\MSExchange Store Interface(*)\ROP Requests outstanding" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(_Total)\RPC Latency average (msec)" -value "\MSExchange Store Interface(_Total)\RPC Latency average (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests failed (%)" -value "\MSExchange Store Interface(*)\RPC Requests failed (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests outstanding" -value "\MSExchange Store Interface(*)\RPC Requests outstanding" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Requests sent/sec" -value "\MSExchange Store Interface(*)\RPC Requests sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Slow requests (%)" -value "\MSExchange Store Interface(*)\RPC Slow requests (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(*)\RPC Slow requests latency average (msec)" -value "\MSExchange Store Interface(*)\RPC Slow requests latency average (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchange Store Interface(_Total)\RPC Requests outstanding" -value "\MSExchange Store Interface(_Total)\RPC Requests outstanding" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Client: RPCs Failed: Server Too Busy" -value "\MSExchangeIS\Client: RPCs Failed: Server Too Busy" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Client: RPCs Failed: Server Too Busy / sec" -value "\MSExchangeIS\Client: RPCs Failed: Server Too Busy / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Averaged Latency" -value "\MSExchangeIS\RPC Averaged Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Client Backoff/sec" -value "\MSExchangeIS\RPC Client Backoff/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Num. of Slow Packets" -value "\MSExchangeIS\RPC Num. of Slow Packets" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Operations/sec" -value "\MSExchangeIS\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\RPC Requests" -value "\MSExchangeIS\RPC Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow QP Threads" -value "\MSExchangeIS\Slow QP Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\Slow Search Threads" -value "\MSExchangeIS\Slow Search Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS\User Count" -value "\MSExchangeIS\User Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\Directory Access: LDAP Reads/sec" -value "\MSExchangeIS Client(*)\Directory Access: LDAP Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\Directory Access: LDAP Searches/sec" -value "\MSExchangeIS Client(*)\Directory Access: LDAP Searches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\JET Log Records/sec" -value "\MSExchangeIS Client(*)\JET Log Records/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\JET Pages Read/sec" -value "\MSExchangeIS Client(*)\JET Pages Read/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\RPC Average Latency" -value "\MSExchangeIS Client(*)\RPC Average Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Client(*)\RPC Operations/sec" -value "\MSExchangeIS Client(*)\RPC Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Categorization Count" -value "\MSExchangeIS Mailbox(*)\Categorization Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Messages Delivered/sec" -value "\MSExchangeIS Mailbox(_Total)\Messages Delivered/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Messages Queued For Submission" -value "\MSExchangeIS Mailbox(_Total)\Messages Queued For Submission" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Messages Sent/sec" -value "\MSExchangeIS Mailbox(_Total)\Messages Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(_Total)\Messages Submitted/sec" -value "\MSExchangeIS Mailbox(_Total)\Messages Submitted/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Search Task Rate" -value "\MSExchangeIS Mailbox(*)\Search Task Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Mailbox(*)\Slow FindRow Rate" -value "\MSExchangeIS Mailbox(*)\Slow FindRow Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Public(_Total)\Messages Queued For Submission" -value "\MSExchangeIS Public(_Total)\Messages Queued For Submission" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeIS Public(_Total)\Replication Receive Queue Size" -value "\MSExchangeIS Public(_Total)\Replication Receive Queue Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Failed Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -value "\MSExchangeMailSubmission(*)\Hub Servers In Retry" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -value "\MSExchangeMailSubmission(*)\Successful Submissions Per Second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -value "\MSExchangeMailSubmission(*)\Temporary Submission Failures/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Read" -value "\PhysicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Write" -value "\PhysicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(msftefd)\% Processor Time" -value "\Process(msftefd)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(store)\% Processor Time" -value "\Process(store)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(Microsoft.Exchange.Search.ExSearch)\% Processor Time" -value "\Process(Microsoft.Exchange.Search.ExSearch)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(MSExchangeMailboxAssistants)\% Processor Time" -value "\Process(MSExchangeMailboxAssistants)\% Processor Time" -Force
    }

    
    #verify Exchange 2007 UM Technet switch parameter is applied
    if($Exchange2007UM_Technet) {
        #http://technet.microsoft.com/en-us/library/bb201671(v=exchg.80)
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeUMAvailability\Call Answer Queued Messages" -value "\MSExchangeUMAvailability\Call Answer Queued Messages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeUMAvailability\Directory Access Failures" -value "\MSExchangeUMAvailability\Directory Access Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeUMAvailability\Hub Transport Access Failures" -value "\MSExchangeUMAvailability\Hub Transport Access Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeUMAvailability\Mailbox Server Access Failures" -value "\MSExchangeUMAvailability\Mailbox Server Access Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeUMAvailability\Queued OCS User Event Notifications" -value "\MSExchangeUMAvailability\Queued OCS User Event Notifications" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeUMAvailability\Unhandled Exceptions/sec" -value "\MSExchangeUMAvailability\Unhandled Exceptions/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeUMCallAnswer\Calls Disconnected by Callers During UM Audio Hourglass" -value "\MSExchangeUMCallAnswer\Calls Disconnected by Callers During UM Audio Hourglass" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSExchangeUMPerformance\Operations over Six Seconds" -value "\MSExchangeUMPerformance\Operations over Six Seconds" -Force
    }
    
    
    #verify FAST Search Server 2010 for SharePoint switch paramter is applied
    if($FASTSearch) {
        #Alex Windel (awindel@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\FAST Search Indexer(*)\API queue load" -value "\FAST Search Indexer(*)\API queue load" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\FAST Search Indexer Status(*)\Time since last index" -value "\FAST Search Indexer Status(*)\Time since last index" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\FAST Search Indexer(*)\Documents in indexer" -value "\FAST Search Indexer(*)\Documents in indexer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\FAST Search Indexer(*)\Disk low state" -value "\FAST Search Indexer(*)\Disk low state" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\FAST Search QRServer(*)\# of Fail user queries" -value "\FAST Search QRServer(*)\# of Fail user queries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\FAST Search Content Distributor(*)\Document processors" -value "\FAST Search Content Distributor(*)\Document processors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\FAST Search Indexer(*)\Fixml fill rate" -value "\FAST Search Indexer(*)\Fixml fill rate" -Force
    }
    
    
    #verify Forefront TMG switch parameter is applied
    if($Forefront_TMG) {
        #Zbigniew Kukowski (Zbigniew.Kukowski@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Cache\Disk Failure Rate (failures/sec)" -value "\Forefront TMG Cache\Disk Failure Rate (failures/sec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Packet Engine\Active Connections" -value "\Forefront TMG Firewall Packet Engine\Active Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Packet Engine\Backlogged Packets" -value "\Forefront TMG Firewall Packet Engine\Backlogged Packets" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Packet Engine\Dropped Packets/sec" -value "\Forefront TMG Firewall Packet Engine\Dropped Packets/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Packet Engine\ReInject Available IRPs" -value "\Forefront TMG Firewall Packet Engine\ReInject Available IRPs" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Service\Accepting TCP Connections" -value "\Forefront TMG Firewall Service\Accepting TCP Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Service\Available Worker Threads" -value "\Forefront TMG Firewall Service\Available Worker Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Service\DNS Cache Hits %" -value "\Forefront TMG Firewall Service\DNS Cache Hits %" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Service\Pending DNS Resolutions" -value "\Forefront TMG Firewall Service\Pending DNS Resolutions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Service\Pending TCP Connections" -value "\Forefront TMG Firewall Service\Pending TCP Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Firewall Service\Worker Threads" -value "\Forefront TMG Firewall Service\Worker Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\% Failing Requests/sec" -value "\Forefront TMG Web Proxy\% Failing Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Failing Requests/sec" -value "\Forefront TMG Web Proxy\Failing Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Requests/sec" -value "\Forefront TMG Web Proxy\Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Active Web Sessions" -value "\Forefront TMG Web Proxy\Active Web Sessions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Average Milliseconds/request" -value "\Forefront TMG Web Proxy\Average Milliseconds/request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Current Cache Fetches Average Milliseconds/request" -value "\Forefront TMG Web Proxy\Current Cache Fetches Average Milliseconds/request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Current Direct Fetches Average Milliseconds/request" -value "\Forefront TMG Web Proxy\Current Direct Fetches Average Milliseconds/request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\% HTTPS inspection failures/sec" -value "\Forefront TMG Web Proxy\% HTTPS inspection failures/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\HTTPS connection inspection/sec" -value "\Forefront TMG Web Proxy\HTTPS connection inspection/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\HTTPS inspection failures/sec" -value "\Forefront TMG Web Proxy\HTTPS inspection failures/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Total Failing Requests" -value "\Forefront TMG Web Proxy\Total Failing Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Cache Hit Ratio for Last 10K Requests (%)" -value "\Forefront TMG Web Proxy\Cache Hit Ratio for Last 10K Requests (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Memory Pool for HTTP Requests (%)" -value "\Forefront TMG Web Proxy\Memory Pool for HTTP Requests (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Forefront TMG Web Proxy\Memory Pool for SSL Requests (%)" -value "\Forefront TMG Web Proxy\Memory Pool for SSL Requests (%)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSSQL`$MSFW:Buffer Manager\Lazy writes/sec" -value "\MSSQL`$MSFW:Buffer Manager\Lazy writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MSSQL`$ISARS:Buffer Manager\Lazy writes/sec" -value "\MSSQL`$ISARS:Buffer Manager\Lazy writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Netlogon(_Total)\Semaphore Holders" -value "\Netlogon(_Total)\Semaphore Holders" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Netlogon(_Total)\Semaphore Waiters" -value "\Netlogon(_Total)\Semaphore Waiters" -Force
    }
    
    
    #verify Hyper-V switch parameter is applied
    if($HyperV) {
        #Thomas Roettinger (thoroet@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Cluster Shared Volumes(*)\IO Read Bytes" -value "\Cluster Shared Volumes(*)\IO Read Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Cluster Shared Volumes(*)\IO Write Bytes" -value "\Cluster Shared Volumes(*)\IO Write Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory Balancer(*)\Average" -value "\Hyper-V Dynamic Memory Balancer(*)\Average" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory VM(*)\Added Memory" -value "\Hyper-V Dynamic Memory VM(*)\Added Memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory VM(*)\Average Pressure" -value "\Hyper-V Dynamic Memory VM(*)\Average Pressure" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory VM(*)\Removed Memory" -value "\Hyper-V Dynamic Memory VM(*)\Removed Memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor\Logical Processors" -value "\Hyper-V Hypervisor\Logical Processors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor\Virtual Processors" -value "\Hyper-V Hypervisor\Virtual Processors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Logical Processor(*)\Context Switches/sec" -value "\Hyper-V Hypervisor Logical Processor(*)\Context Switches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Logical Processor(*)\% Total Run Time" -value "\Hyper-V Hypervisor Logical Processor(*)\% Total Run Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Partition(*)\Virtual TLB Flush Entires/sec" -value "\Hyper-V Hypervisor Partition(*)\Virtual TLB Flush Entires/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Root Partition(*)\Address Spaces" -value "\Hyper-V Hypervisor Root Partition(*)\Address Spaces" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Root Partition(*)\Deposited Pages" -value "\Hyper-V Hypervisor Root Partition(*)\Deposited Pages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Root Virtual Processor(*)\Hypercalls Cost" -value "\Hyper-V Hypervisor Root Virtual Processor(*)\Hypercalls Cost" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Root Virtual Processor(_Total)\IO Instructions Cost" -value "\Hyper-V Hypervisor Root Virtual Processor(_Total)\IO Instructions Cost" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Virtual Processor(*)\% Guest Run Time" -value "\Hyper-V Hypervisor Virtual Processor(*)\% Guest Run Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Machine Health Summary\Health Critical" -value "\Hyper-V Virtual Machine Health Summary\Health Critical" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Network Adapter(*)\Bytes/sec" -value "\Hyper-V Virtual Network Adapter(*)\Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Storage Device(*)\Error Count" -value "\Hyper-V Virtual Storage Device(*)\Error Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Storage Device(*)\Read Bytes/sec" -value "\Hyper-V Virtual Storage Device(*)\Read Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Storage Device(*)\Write Bytes/sec" -value "\Hyper-V Virtual Storage Device(*)\Write Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Switch(*)\Bytes/sec" -value "\Hyper-V Virtual Switch(*)\Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V VM Vid Numa Node(*)\ProcessorCount" -value "\Hyper-V VM Vid Numa Node(*)\ProcessorCount" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V VM Vid Partition(*)\Preferred NUMA Node Index" -value "\Hyper-V VM Vid Partition(*)\Preferred NUMA Node Index" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V VM Vid Partition(*)\Remote Physical Pages" -value "\Hyper-V VM Vid Partition(*)\Remote Physical Pages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Transfers/sec" -value "\LogicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Disk Transfers/sec" -value "\PhysicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\RemoteFX Root GPU Management(*)\Resources: VMs running RemoteFX" -value "\RemoteFX Root GPU Management(*)\Resources: VMs running RemoteFX" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\RemoteFX Root GPU Management(*)\VRAM: Available MB per GPU" -value "\RemoteFX Root GPU Management(*)\VRAM: Available MB per GPU" -Force
    }


    #verify Hyper-V switch parameter is applied
    if($HyperV2012) {
        #Thomas Roettinger (thoroet@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Virtual Processor(*)\% Guest Run Time" -value "\Hyper-V Hypervisor Virtual Processor(*)\% Guest Run Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Logical Processor(*)\% Total Run Time" -value "\Hyper-V Hypervisor Logical Processor(*)\% Total Run Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Network Adapter(*)\Bytes/sec" -value "\Hyper-V Virtual Network Adapter(*)\Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Switch(*)\Bytes/sec" -value "\Hyper-V Virtual Switch(*)\Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Storage Device(*)\Read Bytes/sec" -value "\Hyper-V Virtual Storage Device(*)\Read Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Storage Device(*)\Write Bytes/sec" -value "\Hyper-V Virtual Storage Device(*)\Write Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Storage Device(*)\Error Count" -value "\Hyper-V Virtual Storage Device(*)\Error Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Machine Health Summary\Health Critical" -value "\Hyper-V Virtual Machine Health Summary\Health Critical" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor\Logical Processors" -value "\Hyper-V Hypervisor\Logical Processors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor\Virtual Processors" -value "\Hyper-V Hypervisor\Virtual Processors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Root Partition(*)\Deposited Pages" -value "\Hyper-V Hypervisor Root Partition(*)\Deposited Pages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V VM Vid Partition(*)\Remote Physical Pages" -value "\Hyper-V VM Vid Partition(*)\Remote Physical Pages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V VM Vid Numa Node(*)\ProcessorCount" -value "\Hyper-V VM Vid Numa Node(*)\ProcessorCount" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V VM Vid Partition(*)\Preferred NUMA Node Index" -value "\Hyper-V VM Vid Partition(*)\Preferred NUMA Node Index" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Root Virtual Processor(*)\Hypercalls Cost" -value "\Hyper-V Hypervisor Root Virtual Processor(*)\Hypercalls Cost" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Root Virtual Processor(_Total)\IO Instructions Cost" -value "\Hyper-V Hypervisor Root Virtual Processor(_Total)\IO Instructions Cost" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Partition(*)\Virtual TLB Flush Entires/sec" -value "\Hyper-V Hypervisor Partition(*)\Virtual TLB Flush Entires/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory VM(*)\Added Memory" -value "\Hyper-V Dynamic Memory VM(*)\Added Memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory VM(*)\Average Pressure" -value "\Hyper-V Dynamic Memory VM(*)\Average Pressure" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory VM(*)\Removed Memory" -value "\Hyper-V Dynamic Memory VM(*)\Removed Memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory Balancer(*)\Average Pressure" -value "\Hyper-V Dynamic Memory Balancer(*)\Average Pressure" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\RemoteFX Root GPU Management(*)\Resources: VMs running RemoteFX" -value "\RemoteFX Root GPU Management(*)\Resources: VMs running RemoteFX" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\RemoteFX Root GPU Management(*)\VRAM: Available MB per GPU" -value "\RemoteFX Root GPU Management(*)\VRAM: Available MB per GPU" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Root Partition(*)\Address Spaces" -value "\Hyper-V Hypervisor Root Partition(*)\Address Spaces" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Hypervisor Logical Processor(*)\Context Switches/sec" -value "\Hyper-V Hypervisor Logical Processor(*)\Context Switches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Transfers/sec" -value "\LogicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Disk Transfers/sec" -value "\PhysicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory VM(*)\Guest Visible Physical Memory" -value "\Hyper-V Dynamic Memory VM(*)\Guest Visible Physical Memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Dynamic Memory VM(*)\Smart Paging Working Set Size" -value "\Hyper-V Dynamic Memory VM(*)\Smart Paging Working Set Size" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\NUMA Node Memory(*)\Available MBytes" -value "\NUMA Node Memory(*)\Available MBytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Virtual Switch Processor(*)\Number of VMQs" -value "\Hyper-V Virtual Switch Processor(*)\Number of VMQs" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Cluster CSV Volume Cache(*)\Cache Size - Configured" -value "\Cluster CSV Volume Cache(*)\Cache Size - Configured" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Cluster CSV Volume Cache(*)\Cache Size - Current" -value "\Cluster CSV Volume Cache(*)\Cache Size - Current" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Cluster CSV Volume Cache(*)\Cache IO Read - Bytes/sec" -value "\Cluster CSV Volume Cache(*)\Cache IO Read - Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Cluster CSV Volume Cache(*)\Disk IO Read - Bytes/Sec" -value "\Cluster CSV Volume Cache(*)\Disk IO Read - Bytes/Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Replica VM(*)\Network Bytes Recv" -value "\Hyper-V Replica VM(*)\Network Bytes Recv" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Hyper-V Replica VM(Hoster-Replica-Test)\Network Bytes Sent" -value "\Hyper-V Replica VM(Hoster-Replica-Test)\Network Bytes Sent" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Cluster CSV File System(*)\Redirected Read Bytes/sec" -value "\Cluster CSV File System(*)\Redirected Read Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Cluster CSV File System(*)\Redirected Write Bytes/sec" -value "\Cluster CSV File System(*)\Redirected Write Bytes/sec" -Force
    }
    
    
    #verify IIS switch parameter is applied
    if($InternetInformationServices) {
        #Clint Huffman (clinth@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\APP_POOL_WAS(*)\Current Application Pool State" -value "\APP_POOL_WAS(*)\Current Application Pool State" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\APP_POOL_WAS(*)\Current Application Pool Uptime" -value "\APP_POOL_WAS(*)\Current Application Pool Uptime" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\APP_POOL_WAS(*)\Current Worker Processes" -value "\APP_POOL_WAS(*)\Current Worker Processes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\APP_POOL_WAS(*)\Recent Worker Process Failures" -value "\APP_POOL_WAS(*)\Recent Worker Process Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\APP_POOL_WAS(*)\Total Worker Process Failures" -value "\APP_POOL_WAS(*)\Total Worker Process Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\APP_POOL_WAS(*)\Total Worker Process Ping Failures" -value "\APP_POOL_WAS(*)\Total Worker Process Ping Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\APP_POOL_WAS(*)\Total Worker Process Shutdown Failures" -value "\APP_POOL_WAS(*)\Total Worker Process Shutdown Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\APP_POOL_WAS(*)\Total Worker Process Startup Failures" -value "\APP_POOL_WAS(*)\Total Worker Process Startup Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Request Queues(*)\ArrivalRate" -value "\HTTP Service Request Queues(*)\ArrivalRate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Request Queues(*)\CacheHitRate" -value "\HTTP Service Request Queues(*)\CacheHitRate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Request Queues(*)\CurrentQueueSize" -value "\HTTP Service Request Queues(*)\CurrentQueueSize" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Request Queues(*)\MaxQueueItemAge" -value "\HTTP Service Request Queues(*)\MaxQueueItemAge" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Request Queues(*)\RejectedRequests" -value "\HTTP Service Request Queues(*)\RejectedRequests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Request Queues(*)\RejectionRate" -value "\HTTP Service Request Queues(*)\RejectionRate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Url Groups(*)\AllRequests" -value "\HTTP Service Url Groups(*)\AllRequests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Url Groups(*)\BytesReceivedRate" -value "\HTTP Service Url Groups(*)\BytesReceivedRate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Url Groups(*)\BytesSentRate" -value "\HTTP Service Url Groups(*)\BytesSentRate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Url Groups(*)\BytesTransferredRate" -value "\HTTP Service Url Groups(*)\BytesTransferredRate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Url Groups(*)\ConnectionAttempts" -value "\HTTP Service Url Groups(*)\ConnectionAttempts" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Url Groups(*)\CurrentConnections" -value "\HTTP Service Url Groups(*)\CurrentConnections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Url Groups(*)\GetRequests" -value "\HTTP Service Url Groups(*)\GetRequests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Url Groups(*)\HeadRequests" -value "\HTTP Service Url Groups(*)\HeadRequests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\HTTP Service Url Groups(*)\MaxConnections" -value "\HTTP Service Url Groups(*)\MaxConnections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Active Requests" -value "\W3SVC_W3WP(*)\Active Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Active Threads Count" -value "\W3SVC_W3WP(*)\Active Threads Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Current File Cache Memory " -value "\W3SVC_W3WP(*)\Current File Cache Memory" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Current Files Cached" -value "\W3SVC_W3WP(*)\Current Files Cached" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Current Metadata Cached" -value "\W3SVC_W3WP(*)\Current Metadata Cached" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Current URIs Cached" -value "\W3SVC_W3WP(*)\Current URIs Cached" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\File Cache Misses / sec" -value "\W3SVC_W3WP(*)\File Cache Misses / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Maximum Threads Count" -value "\W3SVC_W3WP(*)\Maximum Threads Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Metadata Cache Misses / sec" -value "\W3SVC_W3WP(*)\Metadata Cache Misses / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Output Cache Current Memory Usage" -value "\W3SVC_W3WP(*)\Output Cache Current Memory Usage" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Output Cache Misses / sec" -value "\W3SVC_W3WP(*)\Output Cache Misses / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Requests / Sec" -value "\W3SVC_W3WP(*)\Requests / Sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\W3SVC_W3WP(*)\Total Threads" -value "\W3SVC_W3WP(*)\Total Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\WAS_W3WP(*)\Active Listener Channels" -value "\WAS_W3WP(*)\Active Listener Channels" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\WAS_W3WP(*)\Active Protocol Handlers" -value "\WAS_W3WP(*)\Active Protocol Handlers" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\WAS_W3WP(*)\Health Ping Reply Latency" -value "\WAS_W3WP(*)\Health Ping Reply Latency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(*)\Bytes Total/sec" -value "\Web Service(*)\Bytes Total/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Connection Attempts/sec" -value "\Web Service(_Total)\Connection Attempts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(*)\Current Anonymous Users" -value "\Web Service(*)\Current Anonymous Users" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Current Connections" -value "\Web Service(_Total)\Current Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(*)\Current NonAnonymous Users" -value "\Web Service(*)\Current NonAnonymous Users" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\ISAPI Extension Requests/sec" -value "\Web Service(_Total)\ISAPI Extension Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service(_Total)\Other Request Methods/sec" -value "\Web Service(_Total)\Other Request Methods/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service Cache\File Cache Hits %" -value "\Web Service Cache\File Cache Hits %" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service Cache\Kernel: URI Cache Hits %" -value "\Web Service Cache\Kernel: URI Cache Hits %" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Web Service Cache\Output Cache Current Hits" -value "\Web Service Cache\Output Cache Current Hits" -Force
    }

    
    #verify MOSS2007 switch parameter is applied
    if($MOSS2007) {
        #Clint Huffman (clinth@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Publishing Cache(*)\Publishing cache flushes / second" -value "\SharePoint Publishing Cache(*)\Publishing cache flushes / second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Publishing Cache(*)\Publishing cache hit ratio" -value "\SharePoint Publishing Cache(*)\Publishing cache hit ratio" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Publishing Cache(*)\Publishing cache misses / sec" -value "\SharePoint Publishing Cache(*)\Publishing cache misses / sec" -Force
    }
    
    
    #verify MOSS2007_MSSearch switch parameter is applied
    if($MOSS2007_MSSearch) {
        #Ron Grzywacz (ronalg@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Office Server Search Archival Plugin(Portal_Content)\Total docs in first queue" -value "\Office Server Search Archival Plugin(Portal_Content)\Total docs in first queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Office Server Search Archival Plugin(Portal_Content)\Total docs in Second queue" -value "\Office Server Search Archival Plugin(Portal_Content)\Total docs in Second queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Office Server Search Archival Plugin(ProfileImport)\Total docs in first queue" -value "\Office Server Search Archival Plugin(ProfileImport)\Total docs in first queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Office Server Search Archival Plugin(ProfileImport)\Total docs in Second queue" -value "\Office Server Search Archival Plugin(ProfileImport)\Total docs in Second queue" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Office Server Search Gatherer\Idle Threads" -value "\Office Server Search Gatherer\Idle Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Office Server Search Gatherer\Threads Accessing Network" -value "\Office Server Search Gatherer\Threads Accessing Network" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Office Server Search Gatherer\Filtering Threads" -value "\Office Server Search Gatherer\Filtering Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Office Server Search Gatherer\Threads In Plug-ins" -value "\Office Server Search Gatherer\Threads In Plug-ins" -Force
    }
    
    
    #verify SharePoint 2010 switch parameter is applied
    if($MOSS2010) {
        #http://blogs.msdn.com/b/aaronsaikovski/archive/2011/09/16/pal-tool-threshold-file-for-sharepoint-2010.aspx
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(*)\Current Page Requests" -value "\SharePoint Foundation(*)\Current Page Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(*)\Executing Sql Queries" -value "\SharePoint Foundation(*)\Executing Sql Queries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(*)\Executing Time/Page Request" -value "\SharePoint Foundation(*)\Executing Time/Page Request" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(*)\Incoming Page Requests Rate" -value "\SharePoint Foundation(*)\Incoming Page Requests Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(*)\Reject Page Requests Rate" -value "\SharePoint Foundation(*)\Reject Page Requests Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(*)\Responded Page Requests Rate" -value "\SharePoint Foundation(*)\Responded Page Requests Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(*)\Sql Query Executing  time" -value "\SharePoint Foundation(*)\Sql Query Executing  time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(*)\Throttled Page Requests" -value "\SharePoint Foundation(*)\Throttled Page Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(_Total)\Active Heap Count" -value "\SharePoint Foundation(_Total)\Active Heap Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Foundation(_Total)\Active Threads" -value "\SharePoint Foundation(_Total)\Active Threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Publishing Cache(*)\Publishing cache flushes / second" -value "\SharePoint Publishing Cache(*)\Publishing cache flushes / second" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Publishing Cache(*)\Publishing cache hits / sec" -value "\SharePoint Publishing Cache(*)\Publishing cache hits / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Publishing Cache(*)\Publishing cache hit count" -value "\SharePoint Publishing Cache(*)\Publishing cache hit count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Publishing Cache(_Total)\Total number of cache flushes" -value "\SharePoint Publishing Cache(_Total)\Total number of cache flushes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Publishing Cache(_Total)\Publishing cache hit ratio" -value "\SharePoint Publishing Cache(_Total)\Publishing cache hit ratio" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SharePoint Publishing Cache(_Total)\Publishing cache misses / sec" -value "\SharePoint Publishing Cache(_Total)\Publishing cache misses / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\OSS Search Archival Plugin(_Total)\Total documents" -value "\OSS Search Archival Plugin(_Total)\Total documents" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\OSS Search Gatherer\Documents Filtered" -value "\OSS Search Gatherer\Documents Filtered" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\OSS Search Gatherer\Documents Filtered Rate" -value "\OSS Search Gatherer\Documents Filtered Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\OSS Search Gatherer\Performance Level" -value "\OSS Search Gatherer\Performance Level" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\OSS Search Gatherer\Threads Accessing Network" -value "\OSS Search Gatherer\Threads Accessing Network" -Force
    }
    
    
    #verify OCS 2007 R2 Archiving switch is applied
    if($OCS2007R2Archiving) {
        #Doug Deitterick (dodeitte@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\LC:Arch Service - 01 - READ\Arch Service - 002 - Messages that failed validation" -value "\LC:Arch Service - 01 - READ\Arch Service - 002 - Messages that failed validation" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:Arch Service - 01 - READ\Arch Service - 006 - Dropped messages from MQ" -value "\LC:Arch Service - 01 - READ\Arch Service - 006 - Dropped messages from MQ" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:Arch Service - 02 - WRITE\Arch Service - 002 - Messages failed to be written to DB" -value "\LC:Arch Service - 02 - WRITE\Arch Service - 002 - Messages failed to be written to DB" -Force
    }
    
    
    #verify OCS 2007 R2 CWA switch is applied
    if($OCS2007R2CWA) {
        #Doug Deitterick (dodeitte@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 00 - Directory Search(_Total)\CWA - 003 - LDAP errors" -value "\CWA - 00 - Directory Search(_Total)\CWA - 003 - LDAP errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 01 - Authentication Module(_Total)\CWA - 003 - Forms auth logon failures" -value "\CWA - 01 - Authentication Module(_Total)\CWA - 003 - Forms auth logon failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 01 - Authentication Module(_Total)\CWA - 007 - IWA auth logon failures" -value "\CWA - 01 - Authentication Module(_Total)\CWA - 007 - IWA auth logon failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 01 - Authentication Module(_Total)\CWA - 012 - LDAP error total" -value "\CWA - 01 - Authentication Module(_Total)\CWA - 012 - LDAP error total" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 01 - Authentication Module(_Total)\CWA - 014 - Logons denied due to server throttling" -value "\CWA - 01 - Authentication Module(_Total)\CWA - 014 - Logons denied due to server throttling" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 02 - Security(_Total)\CWA - 001 - Requests rejected due to invalid ticket / sec" -value "\CWA - 02 - Security(_Total)\CWA - 001 - Requests rejected due to invalid ticket / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 03 - User session Service(_Total)\CWA - 004 - Sessions failed to sign in" -value "\CWA - 03 - User session Service(_Total)\CWA - 004 - Sessions failed to sign in" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 03 - User session Service(_Total)\CWA - 007 - Total sessions timed out" -value "\CWA - 03 - User session Service(_Total)\CWA - 007 - Total sessions timed out" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 03 - User session Service(_Total)\CWA - 016 - Requests to nonexistent sessions" -value "\CWA - 03 - User session Service(_Total)\CWA - 016 - Requests to nonexistent sessions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CWA - 03 - User session Service(_Total)\CWA - 018 - Total requests failed" -value "\CWA - 03 - User session Service(_Total)\CWA - 018 - Total requests failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MCX - 01 - User session Service(_Total)\MCX - 005 - Sessions failed to sign in" -value "\MCX - 01 - User session Service(_Total)\MCX - 005 - Sessions failed to sign in" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\MCX - 01 - User session Service(_Total)\MCX - 011 - Total sessions timed out" -value "\MCX - 01 - User session Service(_Total)\MCX - 011 - Total sessions timed out" -Force

    }
    
    
    #verify OCS 2007 R2 Edge switch is applied
    if($OCS2007R2Edge) {
        #Doug Deitterick (dodeitte@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Auth - 00 - Requests\- 003 - Bad Requests Received/sec" -value "\A/V Auth - 00 - Requests\- 003 - Bad Requests Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 00 - UDP Counters(_Total)\- 004 - Authentication Failures/sec" -value "\A/V Edge - 00 - UDP Counters(_Total)\- 004 - Authentication Failures/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 00 - UDP Counters(_Total)\- 006 - Allocate Requests Exceeding Port Limit/sec" -value "\A/V Edge - 00 - UDP Counters(_Total)\- 006 - Allocate Requests Exceeding Port Limit/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 00 - UDP Counters(_Total)\- 021 - Packets Dropped/sec" -value "\A/V Edge - 00 - UDP Counters(_Total)\- 021 - Packets Dropped/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 00 - UDP Counters(_Total)\- 026 - Active Sessions Exceeding Avg Bandwidth Limit" -value "\A/V Edge - 00 - UDP Counters(_Total)\- 026 - Active Sessions Exceeding Avg Bandwidth Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 00 - UDP Counters(_Total)\- 027 - Active Sessions Exceeding Peak Bandwidth Limit" -value "\A/V Edge - 00 - UDP Counters(_Total)\- 027 - Active Sessions Exceeding Peak Bandwidth Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 01 - TCP Counters(_Total)\- 004 - Authentication Failures/sec" -value "\A/V Edge - 01 - TCP Counters(_Total)\- 004 - Authentication Failures/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 01 - TCP Counters(_Total)\- 006 - Allocate Requests Exceeding Port Limit/sec" -value "\A/V Edge - 01 - TCP Counters(_Total)\- 006 - Allocate Requests Exceeding Port Limit/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 01 - TCP Counters(_Total)\- 022 - Packets Dropped/sec" -value "\A/V Edge - 01 - TCP Counters(_Total)\- 022 - Packets Dropped/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 01 - TCP Counters(_Total)\- 025 - Active Sessions Exceeding Avg Bandwidth Limit" -value "\A/V Edge - 01 - TCP Counters(_Total)\- 025 - Active Sessions Exceeding Avg Bandwidth Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 01 - TCP Counters(_Total)\- 026 - Active Sessions Exceeding Peak Bandwidth Limit" -value "\A/V Edge - 01 - TCP Counters(_Total)\- 026 - Active Sessions Exceeding Peak Bandwidth Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 02 - Total Counters(_Total)\- 027 - Active Sessions Exceeding Avg Bandwidth Limit" -value "\A/V Edge - 02 - Total Counters(_Total)\- 027 - Active Sessions Exceeding Avg Bandwidth Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\A/V Edge - 02 - Total Counters(_Total)\- 028 - Active Sessions Exceeding Peak Bandwidth Limit" -value "\A/V Edge - 02 - Total Counters(_Total)\- 028 - Active Sessions Exceeding Peak Bandwidth Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:API - 00 - API Application Instance Counters(_Total)\API - 026 - Transactions Pending Dispatch Completion" -value "\LC:API - 00 - API Application Instance Counters(_Total)\API - 026 - Transactions Pending Dispatch Completion" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 001 - TLS Connections Active" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 001 - TLS Connections Active" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 004 - Above Limit Connections Dropped (Access Proxies only)" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 004 - Above Limit Connections Dropped (Access Proxies only)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 018 - Sends Timed-Out" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 018 - Sends Timed-Out" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 023 - Flow-controlled Connections" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 023 - Flow-controlled Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 024 - Flow-controlled Connections Dropped" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 024 - Flow-controlled Connections Dropped" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 005 - Incoming Requests Dropped/sec" -value "\LC:SIP - 02 - Protocol\SIP - 005 - Incoming Requests Dropped/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 009 - Incoming Responses Dropped/sec" -value "\LC:SIP - 02 - Protocol\SIP - 009 - Incoming Responses Dropped/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 011 - Messages/sec Dropped Due To Certificate Mismatch" -value "\LC:SIP - 02 - Protocol\SIP - 011 - Messages/sec Dropped Due To Certificate Mismatch" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 012 - Messages In Server" -value "\LC:SIP - 02 - Protocol\SIP - 012 - Messages In Server" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 021 - Average Incoming Message Processing Time" -value "\LC:SIP - 02 - Protocol\SIP - 021 - Average Incoming Message Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 07 - Load Management\SIP - 009 - Address space usage" -value "\LC:SIP - 07 - Load Management\SIP - 009 - Address space usage" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 08 - Access Edge Server Connections\SIP - 013 - Rejected External Edge Server Connections/sec" -value "\LC:SIP - 08 - Access Edge Server Connections\SIP - 013 - Rejected External Edge Server Connections/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 08 - Access Edge Server Connections\SIP - 015 - Rejected External Edge Client Connections/sec" -value "\LC:SIP - 08 - Access Edge Server Connections\SIP - 015 - Rejected External Edge Client Connections/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 021 - Messages/sec Dropped Due To Unknown Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 021 - Messages/sec Dropped Due To Unknown Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 027 - External Messages/sec Dropped Due To Blocked Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 027 - External Messages/sec Dropped Due To Blocked Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 029 - Client Messages/sec Dropped Due To Unsupported Internal Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 029 - Client Messages/sec Dropped Due To Unsupported Internal Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 031 - Remote User Client Messages/sec Dropped Due To Access Disabled" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 031 - Remote User Client Messages/sec Dropped Due To Access Disabled" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 033 - Anonymous User Client Messages/sec Dropped Due To Access Disabled" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 033 - Anonymous User Client Messages/sec Dropped Due To Access Disabled" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 053 - Messages/sec From Users Not Enabled For Federation" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 053 - Messages/sec From Users Not Enabled For Federation" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 055 - Messages/sec From Users Not Enabled For Public IM Providers" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 055 - Messages/sec From Users Not Enabled For Public IM Providers" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 057 - External Messages/sec Dropped Due To Unresolved Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 057 - External Messages/sec Dropped Due To Unresolved Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 059 - External Messages/sec Dropped Due To Blocked IM Service Provider Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 059 - External Messages/sec Dropped Due To Blocked IM Service Provider Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 061 - External Messages/sec Dropped Due To Unauthorized IM Service Provider Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 061 - External Messages/sec Dropped Due To Unauthorized IM Service Provider Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 063 - External Messages/sec Dropped Due To Unauthorized Allowed or Discovered Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 063 - External Messages/sec Dropped Due To Unauthorized Allowed or Discovered Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 065 - External Messages/sec Dropped Due To Incompatible DNS SRV Result for Allowed Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 065 - External Messages/sec Dropped Due To Incompatible DNS SRV Result for Allowed Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 067 - External Messages/sec Dropped Due To Multiple Incompatible DNS SRV Results" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 067 - External Messages/sec Dropped Due To Multiple Incompatible DNS SRV Results" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 069 - External Messages/sec Dropped Due To Incompatible Message Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 069 - External Messages/sec Dropped Due To Incompatible Message Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 071 - Messages/sec Dropped Due To Incompatible Asserted Identity" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 071 - Messages/sec Dropped Due To Incompatible Asserted Identity" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 09 - Access Edge Server Messages\SIP - 073 - Messages/sec Dropped Due To Incompatible Boss Domain" -value "\LC:SIP - 09 - Access Edge Server Messages\SIP - 073 - Messages/sec Dropped Due To Incompatible Boss Domain" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAPROXY - 00 - Server Connections(_Total)\DATAPROXY - 034 - Current count of server connections that are throttled" -value "\LC:DATAPROXY - 00 - Server Connections(_Total)\DATAPROXY - 034 - Current count of server connections that are throttled" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAPROXY - 00 - Server Connections(_Total)\DATAPROXY - 041 - System is throttling" -value "\LC:DATAPROXY - 00 - Server Connections(_Total)\DATAPROXY - 041 - System is throttling" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAPROXY - 01 - Client Connections\DATAPROXY - 008 - Clients disconnected per second due to invalid cookie timestamp" -value "\LC:DATAPROXY - 01 - Client Connections\DATAPROXY - 008 - Clients disconnected per second due to invalid cookie timestamp" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAPROXY - 01 - Client Connections\DATAPROXY - 012 - Clients disconnected per second due to invalid cookie data" -value "\LC:DATAPROXY - 01 - Client Connections\DATAPROXY - 012 - Clients disconnected per second due to invalid cookie data" -Force
    }
    
    
    #verify OCS 2007 R2 Enterprise switch parameter is applied
    if($OCS2007R2Enterprise) {
        #Doug Deitterick (dodeitte@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\LC:RGS - 01 - Response Group Service Match Making\RGS - 001 - Current number of calls" -value "\LC:RGS - 01 - Response Group Service Match Making\RGS - 001 - Current number of calls" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:AcpMcu - 00 - AcpMcu Conferences\ACPMCU - 007 - Throttled Sip Connections" -value "\LC:AcpMcu - 00 - AcpMcu Conferences\ACPMCU - 007 - Throttled Sip Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:AcpMcu - 02 - MCU Health And Performance\ACPMCU - 005 - MCU Health State" -value "\LC:AcpMcu - 02 - MCU Health And Performance\ACPMCU - 005 - MCU Health State" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:API - 00 - API Application Instance Counters(_Total)\API - 026 - Transactions Pending Dispatch Completion" -value "\LC:API - 00 - API Application Instance Counters(_Total)\API - 026 - Transactions Pending Dispatch Completion" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 004 - Number of rejected metrics reports" -value "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 004 - Number of rejected metrics reports" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 014 - Total number of metrics reports rejected by the external report consumer" -value "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 014 - Total number of metrics reports rejected by the external report consumer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 015 - Total number of failures occurred while sending reports to the external report consumer" -value "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 015 - Total number of failures occurred while sending reports to the external report consumer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 016 - Total number of reports that could not be sent to the external report consumer" -value "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 016 - Total number of reports that could not be sent to the external report consumer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:ImMcu - 00 - IMMcu Conferences\IMMCU - 020 - Throttled Sip Connections" -value "\LC:ImMcu - 00 - IMMcu Conferences\IMMCU - 020 - Throttled Sip Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:ImMcu - 02 - MCU Health And Performance\IMMCU - 005 - MCU Health State" -value "\LC:ImMcu - 02 - MCU Health And Performance\IMMCU - 005 - MCU Health State" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 006 - Failed Exchange UM calls" -value "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 006 - Failed Exchange UM calls" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 022 - Received 5XX from VOIP gateway" -value "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 022 - Received 5XX from VOIP gateway" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 025 - Calls failed due to gateway unavailability" -value "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 025 - Calls failed due to gateway unavailability" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 001 - TLS Connections Active" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 001 - TLS Connections Active" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 018 - Sends Timed-Out" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 018 - Sends Timed-Out" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 023 - Flow-controlled Connections" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 023 - Flow-controlled Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 024 - Flow-controlled Connections Dropped" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 024 - Flow-controlled Connections Dropped" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 005 - Incoming Requests Dropped/sec" -value "\LC:SIP - 02 - Protocol\SIP - 005 - Incoming Requests Dropped/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 009 - Incoming Responses Dropped/sec" -value "\LC:SIP - 02 - Protocol\SIP - 009 - Incoming Responses Dropped/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 011 - Messages/sec Dropped Due To Certificate Mismatch" -value "\LC:SIP - 02 - Protocol\SIP - 011 - Messages/sec Dropped Due To Certificate Mismatch" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 012 - Messages In Server" -value "\LC:SIP - 02 - Protocol\SIP - 012 - Messages In Server" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 021 - Average Incoming Message Processing Time" -value "\LC:SIP - 02 - Protocol\SIP - 021 - Average Incoming Message Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 04 - Responses\SIP - 052 - Local 500 Responses" -value "\LC:SIP - 04 - Responses\SIP - 052 - Local 500 Responses" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 04 - Responses\SIP - 054 - Local 503 Responses" -value "\LC:SIP - 04 - Responses\SIP - 054 - Local 503 Responses" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 06 - Authentication\SIP - 002 - Security Association (SAs) Stored" -value "\LC:SIP - 06 - Authentication\SIP - 002 - Security Association (SAs) Stored" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 06 - Authentication\SIP - 013 - Incoming Messages Not Authenticated/sec" -value "\LC:SIP - 06 - Authentication\SIP - 013 - Incoming Messages Not Authenticated/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 06 - Authentication\SIP - 015 - Incoming Messages Not Authorized/sec" -value "\LC:SIP - 06 - Authentication\SIP - 015 - Incoming Messages Not Authorized/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 06 - Authentication\SIP - 027 - Authentication System Errors/sec" -value "\LC:SIP - 06 - Authentication\SIP - 027 - Authentication System Errors/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 07 - Load Management\SIP - 000 - Average Holding Time For Incoming Messages" -value "\LC:SIP - 07 - Load Management\SIP - 000 - Average Holding Time For Incoming Messages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 07 - Load Management\SIP - 006 - Incoming Messages Timed out" -value "\LC:SIP - 07 - Load Management\SIP - 006 - Incoming Messages Timed out" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 07 - Load Management\SIP - 009 - Address space usage" -value "\LC:SIP - 07 - Load Management\SIP - 009 - Address space usage" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 00 - DBStore\USrv - 000 - Queue Depth" -value "\LC:USrv - 00 - DBStore\USrv - 000 - Queue Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 00 - DBStore\USrv - 002 - Queue Latency (msec)" -value "\LC:USrv - 00 - DBStore\USrv - 002 - Queue Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 00 - DBStore\USrv - 004 - Sproc Latency (msec)" -value "\LC:USrv - 00 - DBStore\USrv - 004 - Sproc Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 00 - DBStore\USrv - 014 - Total Dropped Requests" -value "\LC:USrv - 00 - DBStore\USrv - 014 - Total Dropped Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 17 - RPC Client(_Total)\USrv - 000 - Outstanding Outbound RPC Calls" -value "\LC:USrv - 17 - RPC Client(_Total)\USrv - 000 - Outstanding Outbound RPC Calls" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 20 - Https Transport\USrv - 013 - Average Outgoing Queue Delay (ms)" -value "\LC:USrv - 20 - Https Transport\USrv - 013 - Average Outgoing Queue Delay (ms)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 23 - Conference Control\USrv - 004 - Outstanding C3P transactions" -value "\LC:USrv - 23 - Conference Control\USrv - 004 - Outstanding C3P transactions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 23 - Conference Control\USrv - 023 - Transactions Timed-Out / sec" -value "\LC:USrv - 23 - Conference Control\USrv - 023 - Transactions Timed-Out / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 24 - Conference Control Notification\USrv - 004 - Notifications in processing" -value "\LC:USrv - 24 - Conference Control Notification\USrv - 004 - Notifications in processing" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 011 - Factory Call Latency (msec)" -value "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 011 - Factory Call Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 019 - Create Conference Latency (msec)" -value "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 019 - Create Conference Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 021 - Allocation Latency (msec)" -value "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 021 - Allocation Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CAA - 00 - Operations\CAA - 000 - Incomplete calls per sec" -value "\CAA - 00 - Operations\CAA - 000 - Incomplete calls per sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\AVMCU - 00 - Operations\AVMCU - 000 - Number of Conferences" -value "\AVMCU - 00 - Operations\AVMCU - 000 - Number of Conferences" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\AVMCU - 04 - MCU Health And Performance\AVMCU - 005 - MCU Health State" -value "\AVMCU - 04 - MCU Health And Performance\AVMCU - 005 - MCU Health State" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 016 - Invalid input requests/sec" -value "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 016 - Invalid input requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 018 - Timed out Requests that fetch Security Descriptors/sec" -value "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 018 - Timed out Requests that fetch Security Descriptors/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 024 - Soap exceptions/sec" -value "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 024 - Soap exceptions/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 026 - Compliance errors" -value "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 026 - Compliance errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 031 - Resources over conference space limit" -value "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 031 - Resources over conference space limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 038 - Number of Unhandled Application Exception" -value "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 038 - Number of Unhandled Application Exception" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 041 - Session queues state" -value "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 041 - Session queues state" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 02 - MCU Health And Performance\DATAMCU - 005 - MCU Health State" -value "\LC:DATAMCU - 02 - MCU Health And Performance\DATAMCU - 005 - MCU Health State" -Force
    }
    
    
    #verify OCS 2007 R2 Mediation switch parameter is applied
    if($OCS2007R2Mediation) {
        #Doug Deitterick (dodeitte@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\MediationServer - 03 - Health Indices\- 000 - Load Call Failure Index" -value "\MediationServer - 03 - Health Indices\- 000 - Load Call Failure Index" -Force
    }
    
    
    #verify OCS 2007 R2 Monitoring switch parameter is applied
    if($OCS2007R2Monitoring) {
        #Doug Deitterick (dodeitte@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\LC:QMS - 00 - QoEMonitoringServer\QMS - 002 - Total number of message transactions that failed" -value "\LC:QMS - 00 - QoEMonitoringServer\QMS - 002 - Total number of message transactions that failed" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:CDR Service - 01 - READ\CDR Service - 002 - Messages that failed validation" -value "\LC:CDR Service - 01 - READ\CDR Service - 002 - Messages that failed validation" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:CDR Service - 01 - READ\CDR Service - 006 - Dropped messages from MQ" -value "\LC:CDR Service - 01 - READ\CDR Service - 006 - Dropped messages from MQ" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:CDR Service - 02 - WRITE\CDR Service - 002 - Messages failed to be written to DB" -value "\LC:CDR Service - 02 - WRITE\CDR Service - 002 - Messages failed to be written to DB" -Force
    }
    
    
    #verify OCS 2007 R2 Standard switch paramter is applied
    if($OCS2007R2Standard) {
        #Doug Deitterick (dodeitte@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\LC:RGS - 01 - Response Group Service Match Making\RGS - 001 - Current number of calls" -value "\LC:RGS - 01 - Response Group Service Match Making\RGS - 001 - Current number of calls" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:AcpMcu - 00 - AcpMcu Conferences\ACPMCU - 007 - Throttled Sip Connections" -value "\LC:AcpMcu - 00 - AcpMcu Conferences\ACPMCU - 007 - Throttled Sip Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:AcpMcu - 02 - MCU Health And Performance\ACPMCU - 005 - MCU Health State" -value "\LC:AcpMcu - 02 - MCU Health And Performance\ACPMCU - 005 - MCU Health State" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:API - 00 - API Application Instance Counters(_Total)\API - 026 - Transactions Pending Dispatch Completion" -value "\LC:API - 00 - API Application Instance Counters(_Total)\API - 026 - Transactions Pending Dispatch Completion" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 004 - Number of rejected metrics reports" -value "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 004 - Number of rejected metrics reports" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 014 - Total number of metrics reports rejected by the external report consumer" -value "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 014 - Total number of metrics reports rejected by the external report consumer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 015 - Total number of failures occurred while sending reports to the external report consumer" -value "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 015 - Total number of failures occurred while sending reports to the external report consumer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 016 - Total number of reports that could not be sent to the external report consumer" -value "\LC:QMSAgent - 00 - QoEMonitoringServerAgent\QMSAgent - 016 - Total number of reports that could not be sent to the external report consumer" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:ImMcu - 00 - IMMcu Conferences\IMMCU - 020 - Throttled Sip Connections" -value "\LC:ImMcu - 00 - IMMcu Conferences\IMMCU - 020 - Throttled Sip Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:ImMcu - 02 - MCU Health And Performance\IMMCU - 005 - MCU Health State" -value "\LC:ImMcu - 02 - MCU Health And Performance\IMMCU - 005 - MCU Health State" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 006 - Failed Exchange UM calls" -value "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 006 - Failed Exchange UM calls" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 022 - Received 5XX from VOIP gateway" -value "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 022 - Received 5XX from VOIP gateway" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 025 - Calls failed due to gateway unavailability" -value "\LC:RoutingApps - 00 - UC Routing Applications\RoutingApps - 025 - Calls failed due to gateway unavailability" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 001 - TLS Connections Active" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 001 - TLS Connections Active" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 018 - Sends Timed-Out" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 018 - Sends Timed-Out" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 023 - Flow-controlled Connections" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 023 - Flow-controlled Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 01 - Peers(_Total)\SIP - 024 - Flow-controlled Connections Dropped" -value "\LC:SIP - 01 - Peers(_Total)\SIP - 024 - Flow-controlled Connections Dropped" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 005 - Incoming Requests Dropped/sec" -value "\LC:SIP - 02 - Protocol\SIP - 005 - Incoming Requests Dropped/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 009 - Incoming Responses Dropped/sec" -value "\LC:SIP - 02 - Protocol\SIP - 009 - Incoming Responses Dropped/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 011 - Messages/sec Dropped Due To Certificate Mismatch" -value "\LC:SIP - 02 - Protocol\SIP - 011 - Messages/sec Dropped Due To Certificate Mismatch" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 012 - Messages In Server" -value "\LC:SIP - 02 - Protocol\SIP - 012 - Messages In Server" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 02 - Protocol\SIP - 021 - Average Incoming Message Processing Time" -value "\LC:SIP - 02 - Protocol\SIP - 021 - Average Incoming Message Processing Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 04 - Responses\SIP - 052 - Local 500 Responses" -value "\LC:SIP - 04 - Responses\SIP - 052 - Local 500 Responses" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 04 - Responses\SIP - 054 - Local 503 Responses" -value "\LC:SIP - 04 - Responses\SIP - 054 - Local 503 Responses" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 06 - Authentication\SIP - 002 - Security Association (SAs) Stored" -value "\LC:SIP - 06 - Authentication\SIP - 002 - Security Association (SAs) Stored" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 06 - Authentication\SIP - 013 - Incoming Messages Not Authenticated/sec" -value "\LC:SIP - 06 - Authentication\SIP - 013 - Incoming Messages Not Authenticated/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 06 - Authentication\SIP - 015 - Incoming Messages Not Authorized/sec" -value "\LC:SIP - 06 - Authentication\SIP - 015 - Incoming Messages Not Authorized/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 06 - Authentication\SIP - 027 - Authentication System Errors/sec" -value "\LC:SIP - 06 - Authentication\SIP - 027 - Authentication System Errors/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 07 - Load Management\SIP - 000 - Average Holding Time For Incoming Messages" -value "\LC:SIP - 07 - Load Management\SIP - 000 - Average Holding Time For Incoming Messages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 07 - Load Management\SIP - 006 - Incoming Messages Timed out" -value "\LC:SIP - 07 - Load Management\SIP - 006 - Incoming Messages Timed out" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:SIP - 07 - Load Management\SIP - 009 - Address space usage" -value "\LC:SIP - 07 - Load Management\SIP - 009 - Address space usage" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 00 - DBStore\USrv - 000 - Queue Depth" -value "\LC:USrv - 00 - DBStore\USrv - 000 - Queue Depth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 00 - DBStore\USrv - 002 - Queue Latency (msec)" -value "\LC:USrv - 00 - DBStore\USrv - 002 - Queue Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 00 - DBStore\USrv - 004 - Sproc Latency (msec)" -value "\LC:USrv - 00 - DBStore\USrv - 004 - Sproc Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 00 - DBStore\USrv - 014 - Total Dropped Requests" -value "\LC:USrv - 00 - DBStore\USrv - 014 - Total Dropped Requests" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 20 - Https Transport\USrv - 013 - Average Outgoing Queue Delay (ms)" -value "\LC:USrv - 20 - Https Transport\USrv - 013 - Average Outgoing Queue Delay (ms)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 23 - Conference Control\USrv - 004 - Outstanding C3P transactions" -value "\LC:USrv - 23 - Conference Control\USrv - 004 - Outstanding C3P transactions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 23 - Conference Control\USrv - 023 - Transactions Timed-Out / sec" -value "\LC:USrv - 23 - Conference Control\USrv - 023 - Transactions Timed-Out / sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 24 - Conference Control Notification\USrv - 004 - Notifications in processing" -value "\LC:USrv - 24 - Conference Control Notification\USrv - 004 - Notifications in processing" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 011 - Factory Call Latency (msec)" -value "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 011 - Factory Call Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 019 - Create Conference Latency (msec)" -value "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 019 - Create Conference Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 021 - Allocation Latency (msec)" -value "\LC:USrv - 25 - Conference Mcu Allocator\USrv - 021 - Allocation Latency (msec)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\AVMCU - 00 - Operations\AVMCU - 000 - Number of Conferences" -value "\AVMCU - 00 - Operations\AVMCU - 000 - Number of Conferences" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\AVMCU - 04 - MCU Health And Performance\AVMCU - 005 - MCU Health State" -value "\AVMCU - 04 - MCU Health And Performance\AVMCU - 005 - MCU Health State" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\CAA - 00 - Operations\CAA - 000 - Incomplete calls per sec" -value "\CAA - 00 - Operations\CAA - 000 - Incomplete calls per sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 016 - Invalid input requests/sec" -value "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 016 - Invalid input requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 018 - Timed out Requests that fetch Security Descriptors/sec" -value "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 018 - Timed out Requests that fetch Security Descriptors/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 024 - Soap exceptions/sec" -value "\LC:DLX - 00 - Address Book and Distribution List Expansion\DLX - 024 - Soap exceptions/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 026 - Compliance errors" -value "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 026 - Compliance errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 031 - Resources over conference space limit" -value "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 031 - Resources over conference space limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 038 - Number of Unhandled Application Exception" -value "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 038 - Number of Unhandled Application Exception" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 041 - Session queues state" -value "\LC:DATAMCU - 00 - DataMCU Conferences\DATAMCU - 041 - Session queues state" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LC:DATAMCU - 02 - MCU Health And Performance\DATAMCU - 005 - MCU Health State" -value "\LC:DATAMCU - 02 - MCU Health And Performance\DATAMCU - 005 - MCU Health State" -Force
    }
    
    
    #verify SQL Server switch parameter is applied
    if($SQLServer) {
        #David Pless (dpless@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Process(sqlservr)\% Privileged Time" -value "\Process(sqlservr)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Access Methods\Forwarded Records/sec" -value "\SQLServer:Access Methods\Forwarded Records/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Access Methods\FreeSpace Scans/sec" -value "\SQLServer:Access Methods\FreeSpace Scans/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Access Methods\Full Scans/sec" -value "\SQLServer:Access Methods\Full Scans/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Access Methods\Index Searches/sec" -value "\SQLServer:Access Methods\Index Searches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Access Methods\Page Splits/sec" -value "\SQLServer:Access Methods\Page Splits/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Access Methods\Scan Point Revalidations/sec" -value "\SQLServer:Access Methods\Scan Point Revalidations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Access Methods\Workfiles Created/sec" -value "\SQLServer:Access Methods\Workfiles Created/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Access Methods\Worktables Created/sec" -value "\SQLServer:Access Methods\Worktables Created/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Buffer Manager\Buffer cache hit ratio" -value "\SQLServer:Buffer Manager\Buffer cache hit ratio" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Buffer Manager\Checkpoint pages/sec" -value "\SQLServer:Buffer Manager\Checkpoint pages/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Buffer Manager\Free pages" -value "\SQLServer:Buffer Manager\Free pages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Buffer Manager\Lazy writes/sec" -value "\SQLServer:Buffer Manager\Lazy writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Buffer Manager\Page life expectancy" -value "\SQLServer:Buffer Manager\Page life expectancy" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Buffer Manager\Page lookups/sec" -value "\SQLServer:Buffer Manager\Page lookups/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Buffer Manager\Page reads/sec" -value "\SQLServer:Buffer Manager\Page reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Buffer Manager\Page writes/sec" -value "\SQLServer:Buffer Manager\Page writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:General Statistics\Logins/sec" -value "\SQLServer:General Statistics\Logins/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:General Statistics\Logouts/sec" -value "\SQLServer:General Statistics\Logouts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:General Statistics\User Connections" -value "\SQLServer:General Statistics\User Connections" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Latches\Latch Waits/sec" -value "\SQLServer:Latches\Latch Waits/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Latches\Total Latch Wait Time (ms)" -value "\SQLServer:Latches\Total Latch Wait Time (ms)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Locks(*)\Lock Requests/sec" -value "\SQLServer:Locks(*)\Lock Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Locks(*)\Lock Timeouts/sec" -value "\SQLServer:Locks(*)\Lock Timeouts/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Locks(*)\Lock Wait Time (ms)" -value "\SQLServer:Locks(*)\Lock Wait Time (ms)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Locks(*)\Lock Waits/sec" -value "\SQLServer:Locks(*)\Lock Waits/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Locks(*)\Number of Deadlocks/sec" -value "\SQLServer:Locks(*)\Number of Deadlocks/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Memory Manager\Memory Grants Pending" -value "\SQLServer:Memory Manager\Memory Grants Pending" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Memory Manager\Target Server Memory(KB)" -value "\SQLServer:Memory Manager\Target Server Memory(KB)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:Memory Manager\Total Server Memory (KB)" -value "\SQLServer:Memory Manager\Total Server Memory (KB)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:SQL Statistics\Batch Requests/sec" -value "\SQLServer:SQL Statistics\Batch Requests/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:SQL Statistics\SQL Compilations/sec" -value "\SQLServer:SQL Statistics\SQL Compilations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\SQLServer:SQL Statistics\SQL Re-Compilations/sec" -value "\SQLServer:SQL Statistics\SQL Re-Compilations/sec" -Force
    }
    
    
    #verify SystemOverview switch parameter is applied
    if($SystemOverview) {
        #Clint Huffman (clinth@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Private Bytes" -value "\Process(*)\Private Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Handle Count" -value "\Process(*)\Handle Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Thread Count" -value "\Process(*)\Thread Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Working Set" -value "\Process(*)\Working Set" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\% Processor Time" -value "\Process(*)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Virtual Bytes" -value "\Process(*)\Virtual Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Data Operations/sec" -value "\Process(*)\IO Data Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Other Operations/sec" -value "\Process(*)\IO Other Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\ID Process" -value "\Process(*)\ID Process" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Read Operations/sec" -value "\Process(*)\IO Read Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\IO Write Operations/sec" -value "\Process(*)\IO Write Operations/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\% Privileged Time" -value "\Process(*)\% Privileged Time" -Force
    }
    
    
    #verify QuickSystemOverview switch parameter is applied
    if($SystemOverview_Quick) {
        #Clint Huffman (clinth@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Cache\Dirty Pages" -value "\Cache\Dirty Pages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Cache\Lazy Write Flushes/sec" -value "\Cache\Lazy Write Flushes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\% Free Space" -value "\LogicalDisk(*)\% Free Space" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\% Idle Time" -value "\LogicalDisk(*)\% Idle Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk Queue Length" -value "\LogicalDisk(*)\Avg. Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk Bytes/Read" -value "\LogicalDisk(*)\Avg. Disk Bytes/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk Bytes/Write" -value "\LogicalDisk(*)\Avg. Disk Bytes/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Current Disk Queue Length" -value "\LogicalDisk(*)\Current Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Bytes/sec" -value "\LogicalDisk(*)\Disk Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Transfers/sec" -value "\LogicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Free Megabytes" -value "\LogicalDisk(*)\Free Megabytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Reads/sec" -value "\LogicalDisk(*)\Disk Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Writes/sec" -value "\LogicalDisk(*)\Disk Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\% Committed Bytes In Use" -value "\Memory\% Committed Bytes In Use" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Available MBytes" -value "\Memory\Available MBytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Cache Bytes" -value "\Memory\Cache Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Commit Limit" -value "\Memory\Commit Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Committed Bytes" -value "\Memory\Committed Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Free & Zero Page List Bytes" -value "\Memory\Free & Zero Page List Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Free System Page Table Entries" -value "\Memory\Free System Page Table Entries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Input/sec" -value "\Memory\Pages Input/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Output/sec" -value "\Memory\Pages Output/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages/sec" -value "\Memory\Pages/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Nonpaged Bytes" -value "\Memory\Pool Nonpaged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Paged Bytes" -value "\Memory\Pool Paged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\System Cache Resident Bytes" -value "\Memory\System Cache Resident Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Pages RePurposed/sec" -value "\Memory\Transition Pages RePurposed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Inspection System\Average inspection latency (sec/bytes)" -value "\Network Inspection System\Average inspection latency (sec/bytes)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Bytes Total/sec" -value "\Network Interface(*)\Bytes Total/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Bytes Received/sec" -value "\Network Interface(*)\Bytes Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Bytes Sent/sec" -value "\Network Interface(*)\Bytes Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\% Network Utilization" -value "\Network Interface(*)\% Network Utilization" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\% Network Utilization Received" -value "\Network Interface(*)\% Network Utilization Received" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\% Network Utilization Sent" -value "\Network Interface(*)\% Network Utilization Sent" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Current Bandwidth" -value "\Network Interface(*)\Current Bandwidth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Output Queue Length" -value "\Network Interface(*)\Output Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets Outbound Errors" -value "\Network Interface(*)\Packets Outbound Errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets Received/sec" -value "\Network Interface(*)\Packets Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets Sent/sec" -value "\Network Interface(*)\Packets Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets/sec" -value "\Network Interface(*)\Packets/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Paging File(*)\% Usage" -value "\Paging File(*)\% Usage" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk Queue Length" -value "\PhysicalDisk(*)\Avg. Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Read" -value "\PhysicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Write" -value "\PhysicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Current Disk Queue Length" -value "\PhysicalDisk(*)\Current Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Disk Bytes/sec" -value "\PhysicalDisk(*)\Disk Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Disk Reads/sec" -value "\PhysicalDisk(*)\Disk Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Disk Writes/sec" -value "\PhysicalDisk(*)\Disk Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Private Bytes" -value "\Process(*)\Private Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Handle Count" -value "\Process(*)\Handle Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Thread Count" -value "\Process(*)\Thread Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Working Set" -value "\Process(*)\Working Set" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Idle Time" -value "\Processor(*)\% Idle Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% DPC Time" -value "\Processor(*)\% DPC Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Interrupt Time" -value "\Processor(*)\% Interrupt Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Privileged Time" -value "\Processor(*)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Processor Time" -value "\Processor(*)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% User Time" -value "\Processor(*)\% User Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\DPC Rate" -value "\Processor(*)\DPC Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Privileged Time" -value "\Processor(_Total)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Processor Time" -value "\Processor(_Total)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor Information(*)\% of Maximum Frequency" -value "\Processor Information(*)\% of Maximum Frequency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor Information(*)\Parking Status" -value "\Processor Information(*)\Parking Status" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Nonpaged Failures" -value "\Server\Pool Nonpaged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Paged Failures" -value "\Server\Pool Paged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Context Switches/sec" -value "\System\Context Switches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Processor Queue Length" -value "\System\Processor Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\System Calls/sec" -value "\System\System Calls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv4\Connection Failures" -value "\TCPv4\Connection Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv6\Connection Failures" -value "\TCPv6\Connection Failures" -Force
    }
    
    
    #verify StandardSystemOverview switch parameter is applied
    if($SystemOverview_Standard) {
        #Clint Huffman (clinth@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Cache\Dirty Pages" -value "\Cache\Dirty Pages" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Cache\Lazy Write Flushes/sec" -value "\Cache\Lazy Write Flushes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\% Free Space" -value "\LogicalDisk(*)\% Free Space" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\% Idle Time" -value "\LogicalDisk(*)\% Idle Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk Queue Length" -value "\LogicalDisk(*)\Avg. Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk Bytes/Read" -value "\LogicalDisk(*)\Avg. Disk Bytes/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk Bytes/Write" -value "\LogicalDisk(*)\Avg. Disk Bytes/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Current Disk Queue Length" -value "\LogicalDisk(*)\Current Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Bytes/sec" -value "\LogicalDisk(*)\Disk Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Transfers/sec" -value "\LogicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Free Megabytes" -value "\LogicalDisk(*)\Free Megabytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Read" -value "\LogicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Reads/sec" -value "\LogicalDisk(*)\Disk Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Avg. Disk sec/Write" -value "\LogicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\LogicalDisk(*)\Disk Writes/sec" -value "\LogicalDisk(*)\Disk Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\% Committed Bytes In Use" -value "\Memory\% Committed Bytes In Use" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Available MBytes" -value "\Memory\Available MBytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Cache Bytes" -value "\Memory\Cache Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Commit Limit" -value "\Memory\Commit Limit" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Committed Bytes" -value "\Memory\Committed Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Free & Zero Page List Bytes" -value "\Memory\Free & Zero Page List Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Free System Page Table Entries" -value "\Memory\Free System Page Table Entries" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Input/sec" -value "\Memory\Pages Input/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages Output/sec" -value "\Memory\Pages Output/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pages/sec" -value "\Memory\Pages/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Nonpaged Bytes" -value "\Memory\Pool Nonpaged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Pool Paged Bytes" -value "\Memory\Pool Paged Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\System Cache Resident Bytes" -value "\Memory\System Cache Resident Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Memory\Transition Pages RePurposed/sec" -value "\Memory\Transition Pages RePurposed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Inspection System\Average inspection latency (sec/bytes)" -value "\Network Inspection System\Average inspection latency (sec/bytes)" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Bytes Total/sec" -value "\Network Interface(*)\Bytes Total/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Bytes Received/sec" -value "\Network Interface(*)\Bytes Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Bytes Sent/sec" -value "\Network Interface(*)\Bytes Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\% Network Utilization" -value "\Network Interface(*)\% Network Utilization" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\% Network Utilization Received" -value "\Network Interface(*)\% Network Utilization Received" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\% Network Utilization Sent" -value "\Network Interface(*)\% Network Utilization Sent" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Current Bandwidth" -value "\Network Interface(*)\Current Bandwidth" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Output Queue Length" -value "\Network Interface(*)\Output Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets Outbound Errors" -value "\Network Interface(*)\Packets Outbound Errors" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets Received/sec" -value "\Network Interface(*)\Packets Received/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets Sent/sec" -value "\Network Interface(*)\Packets Sent/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Network Interface(*)\Packets/sec" -value "\Network Interface(*)\Packets/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Paging File(*)\% Usage" -value "\Paging File(*)\% Usage" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\%% Idle Time" -value "\PhysicalDisk(*)\% Idle Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk Queue Length" -value "\PhysicalDisk(*)\Avg. Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Read" -value "\PhysicalDisk(*)\Avg. Disk sec/Read" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Avg. Disk sec/Write" -value "\PhysicalDisk(*)\Avg. Disk sec/Write" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Current Disk Queue Length" -value "\PhysicalDisk(*)\Current Disk Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Disk Bytes/sec" -value "\PhysicalDisk(*)\Disk Bytes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Disk Transfers/sec" -value "\PhysicalDisk(*)\Disk Transfers/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Disk Reads/sec" -value "\PhysicalDisk(*)\Disk Reads/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\PhysicalDisk(*)\Disk Writes/sec" -value "\PhysicalDisk(*)\Disk Writes/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Private Bytes" -value "\Process(*)\Private Bytes" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Handle Count" -value "\Process(*)\Handle Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Thread Count" -value "\Process(*)\Thread Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Process(*)\Working Set" -value "\Process(*)\Working Set" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Print Queue(*)\Bytes Printed/sec" -value "\Print Queue(*)\Bytes Printed/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Print Queue(*)\Jobs" -value "\Print Queue(*)\Jobs" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Idle Time" -value "\Processor(*)\% Idle Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% DPC Time" -value "\Processor(*)\% DPC Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Interrupt Time" -value "\Processor(*)\% Interrupt Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Privileged Time" -value "\Processor(*)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% Processor Time" -value "\Processor(*)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\% User Time" -value "\Processor(*)\% User Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(*)\DPC Rate" -value "\Processor(*)\DPC Rate" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Privileged Time" -value "\Processor(_Total)\% Privileged Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor(_Total)\% Processor Time" -value "\Processor(_Total)\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor Information(*)\% of Maximum Frequency" -value "\Processor Information(*)\% of Maximum Frequency" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Processor Information(*)\Parking Status" -value "\Processor Information(*)\Parking Status" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Nonpaged Failures" -value "\Server\Pool Nonpaged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server\Pool Paged Failures" -value "\Server\Pool Paged Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Context Switches/sec" -value "\System\Context Switches/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\Processor Queue Length" -value "\System\Processor Queue Length" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\System\System Calls/sec" -value "\System\System Calls/sec" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv4\Connection Failures" -value "\TCPv4\Connection Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\TCPv6\Connection Failures" -value "\TCPv6\Connection Failures" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Server Work Queues(*)\Available Work Items" -value "\Server Work Queues(*)\Available Work Items" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Terminal Services\Active Sessions" -value "\Terminal Services\Active Sessions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Terminal Services\Inactive Sessions" -value "\Terminal Services\Inactive Sessions" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Terminal Services\Total Sessions" -value "\Terminal Services\Total Sessions" -Force
    }
  
  
    #verify VMWare switch parameter is applied
    if($VMWare) {
        #Jeff Stokes (jeff.stokes@microsoft.com)
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Active in MB" -value "\VM Memory\Memory Active in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Ballooned in MB" -value "\VM Memory\Memory Ballooned in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Limit in MB" -value "\VM Memory\Memory Limit in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Mapped in MB" -value "\VM Memory\Memory Mapped in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Overhead in MB" -value "\VM Memory\Memory Overhead in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Reservation in MB" -value "\VM Memory\Memory Reservation in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Shared in MB" -value "\VM Memory\Memory Shared in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Shared Saved in MB" -value "\VM Memory\Memory Shared Saved in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Shares" -value "\VM Memory\Memory Shares" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Swapped in MB" -value "\VM Memory\Memory Swapped in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Memory\Memory Used in MB" -value "\VM Memory\Memory Used in MB" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Processor\% Processor Time" -value "\VM Processor\% Processor Time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Processor\CPU stolen time" -value "\VM Processor\CPU stolen time" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Processor\Effective VM Speed in MHz" -value "\VM Processor\Effective VM Speed in MHz" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Processor\Host processor speed in MHz" -value "\VM Processor\Host processor speed in MHz" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Processor\Limit in MHz" -value "\VM Processor\Limit in MHz" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Processor\Reservation in MHz" -value "\VM Processor\Reservation in MHz" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\VM Processor\Shares" -value "\VM Processor\Shares" -Force
    }
    
    #verify Citrix XenApp switch parameter is applied
    if($XenApp) {
        #Nicholas Vasile / Rick Berry (tools@citrix.com)
        $Object | Add-Member -MemberType noteproperty -Name "\Citrix Licensing\License Server Connection Failure" -value "\Citrix Licensing\License Server Connection Failure" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Citrix MetaFrame Presentation Server\Data Store Connection Failure" -value "\Citrix MetaFrame Presentation Server\Data Store Connection Failure" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Citrix MetaFrame Presentation Server\Number of busy XML threads" -value "\Citrix MetaFrame Presentation Server\Number of busy XML threads" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Citrix MetaFrame Presentation Server\Resolution WorkItem Queue Ready Count" -value "\Citrix MetaFrame Presentation Server\Resolution WorkItem Queue Ready Count" -Force
        $Object | Add-Member -MemberType noteproperty -Name "\Citrix MetaFrame Presentation Server\WorkItem Queue Ready Count" -value "\Citrix MetaFrame Presentation Server\WorkItem Queue Ready Count" -Force
    }
    
            
    <#
    [Configure-PerformanceMonitor Cmdlet functionality]
    The section below contains powershell codes for the cmdlet functionality.
    #>

    #verify ShowCounter switch parameter is applied
    if($ShowCounter) {
    
        #show selected counters in ascending order
        $Object | Get-Member -MemberType noteproperty | Sort-Object | Select-Object Name

        Break
    }
    
    #verify if $ComputerName is the same as the current local machine hostname    
    if($ComputerName -eq $Env:ComputerName) {

        <#
        This section execute the configuration locally without having WinRM service to 
        be running. This allows Configure-PerformanceMonitor cmdlet to configure 
        perfmon locally on machine in DMZ zone.
        #>
        
        #create a default C:\PerfLogs directory if Performance Log Directory does not exist
        if((Test-Path $PerfLogDir) -eq $False) { 
            
            #create default PerfLogs folder
            $NewPerfLogDir = New-Item "C:\PerfLogs" -Type Directory -Verbose
            $PerfLogDir = "C:\PerfLogs"
        }
        
        #construct counter text file path
        $CounterFilePath = $PerfLogDir + "\" + $CounterFileName

        #delete counter file if counter file exist
        if(Test-Path $CounterFilePath) {
            
            #delete the counter file
            
            if($PSBoundParameters['Verbose']) { Remove-Item $CounterFilePath -Verbose }else{ Remove-Item $CounterFilePath }
        }
        
        #store property names    
        $PropertyNames = $Object | Get-Member -MemberType noteproperty | Select -ExpandProperty Name
        
        #enumerate counters into counter file
        foreach($PropertyName in $PropertyNames) {
        
            if($PSBoundParameters['Verbose']) { Write-Host "VERBOSE: Added $PropertyName Counter" -ForegroundColor blue }
            
            #add counter into counter file
            Add-Content -Path $CounterFilePath -Value $Object.$PropertyName
        }
        
        if($PSBoundParameters['Verbose']) { Write-Host "VERBOSE: Created $CounterFilePath" -ForegroundColor blue }
        
        #construct counter output file name
        $CounterOutputFileName = $PerfLogDir + "\" + $DataCollectorName + "_" + $ComputerName
        
        #create performance log
        if($PSBoundParameters['Verbose']) { Write-Host "VERBOSE: Creating $DataCollectorName Data Collector Set" -ForegroundColor blue }
        Logman Create Counter $DataCollectorName -v mmddhhmm -cf $CounterFilePath -si $SampleInterval -f bincirc -o $CounterOutputFileName -max $MaximumSize
        
        if($Start) {
        
            #start performance log
            if($PSBoundParameters['Verbose']) { Write-Host "VERBOSE: Starting $DataCollectorName Data Collector Set" -ForegroundColor blue }
            Logman Start $DataCollectorName
            
        }
            
        #verify AutoStartup switch parameter is applied
        if($AutoStartup) {
        
            $StartupScriptsINIFile = "C:\Windows\System32\GroupPolicy\Machine\Scripts\scripts.ini"
            $LogmanStartupScriptPath = "C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup\StartupPerfmon.bat"
            $StartupKeyParentPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Startup\0"
            $StartupKeyStateParentPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Startup\0"
            
            if(Test-Path $LogmanStartupScriptPath) {
                
                if($PSBoundParameters['Verbose']) { Write-Host "VERBOSE: $LogmanStartupScriptPath Exist" -ForegroundColor blue }
                
                #update existing startup script
                Add-Content -Path $LogmanStartupScriptPath -Value "Logman Start $DataCollectorName" -ErrorVariable UpdateStartupScript_Error
                
                if($PSBoundParameters['Verbose']) {
                    if($UpdateStartupScript_Error -eq $Null) { Write-Host "VERBOSE: Updated $LogmanStartupScriptPath" -ForegroundColor blue }
                }
            
            }else{
                
                #create new startup script
                Add-Content -Path $LogmanStartupScriptPath -Value "Logman Start $DataCollectorName" -ErrorVariable CreateStartupScript_Error
                
                if($PSBoundParameters['Verbose']) { 
                    if($CreateStartupScript_Error -eq $Null) { Write-Host "VERBOSE: Created $LogmanStartupScriptPath" -ForegroundColor blue }
                }
            }
            
            if(Test-Path $StartupKeyParentPath) {
                
                #get the last startup key
                $LastKey = Get-ChildItem $StartupKeyParentPath | Select-Object -Last 1
                $StartupNewKey = [Int] $LastKey.PSChildName + 1
            
            }else{
            
                if(Test-Path $StartupKeyParentPath.TrimEnd("\Startup\0")) {
                
                New-Item -Path $StartupKeyParentPath.TrimEnd("\0")
                New-Item -Path $StartupKeyParentPath
                $StartupNewKey = 0
                
                }
            }
            
            if(Test-Path $StartupKeyStateParentPath) {
            
                #get the last startup state key
                $LastKey = Get-ChildItem $StartupKeyStateParentPath | Select-Object -Last 1
                $StartupStateNewKey = [Int] $LastKey.PSChildName + 1
            
            }else{

                if(Test-Path $StartupKeyStateParentPath.TrimEnd("\Startup\0")) {
                    
                    New-Item -Path $StartupKeyStateParentPath.TrimEnd("\0")
                    New-Item -Path $StartupKeyStateParentPath
                    $StartupStateNewKey = 0
                }
            }
            
            if(Test-Path $StartupScriptsINIFile) {
            
                if($StartupNewKey -eq $StartupStateNewKey) {
                    
                    #find [Startup] section in INI file
                    $StartupSection = Select-String -Path $StartupScriptsINIFile -Pattern "[Startup]" -SimpleMatch
                    
                    #create [Startup] section in INI file if it does not exist
                    if($StartupSection -eq $Null) {
                        Add-Content -Path $StartupScriptsINIFile -Value "[Startup]" -Encoding Unicode
                    }
                    
                    #construct command line and parameters value
                    $CmdLine = [String] $StartupNewKey + "CmdLine=" + $LogmanStartupScriptPath
                    $Parameters = [String] $StartupNewKey + "Parameters="
                    
                    #add value into scripts.ini
                    Add-Content -Path $StartupScriptsINIFile -Value $CmdLine -Encoding Unicode
                    Add-Content -Path $StartupScriptsINIFile -Value $Parameters -Encoding Unicode
                
                    #construct a new Startup registry key path
                    $NewStartupKeyPath = $StartupKeyParentPath + "\" + $StartupNewKey
                    
                    #create new registry key path
                    New-Item -Path $NewStartupKeyPath
                    
                    #add new registry keys and value
                    New-ItemProperty -Path $NewStartupKeyPath -Name "ExecTime" -PropertyType QWORD
                    New-ItemProperty -Path $NewStartupKeyPath -Name "IsPowershell" -PropertyType DWORD
                    New-ItemProperty -Path $NewStartupKeyPath -Name "Parameters"
                    New-ItemProperty -Path $NewStartupKeyPath -Name "Script" -Value $LogmanStartupScriptPath
            
                    #construct a new Startup state registry key path
                    $NewStartupStateKeyPath = $StartupKeyStateParentPath + "\" + $StartupNewKey
                    
                    #create new registry key path
                    New-Item -Path $NewStartupStateKeyPath
                    
                    #add new registry keys and value
                    New-ItemProperty -Path $NewStartupStateKeyPath -Name "ExecTime" -PropertyType QWORD
                    New-ItemProperty -Path $NewStartupStateKeyPath -Name "Parameters"
                    New-ItemProperty -Path $NewStartupStateKeyPath -Name "Script" -Value $LogmanStartupScriptPath
                    
                    if($PSBoundParameters['Verbose']) { Write-Host "VERBOSE: Added $LogmanStartupScriptPath Startup Script for Local Computer" -ForegroundColor blue }
                }
            }
        }
        
    }else{

        <#
        This section execute the configuration remotely and requires WinRM service to be 
        running on remote machine. This allows Configure-PerformanceMonitor cmdlet to 
        configure perfmon remotely on machine.
        #>
        
        #execute command to create performance counter
        Invoke-Command -ComputerName $ComputerName -ScriptBlock {
            
            param($PerfLogDir, $CounterFileName, $Object, $Verbose)

            #create a default C:\PerfLogs directory if Performance Log Directory does not exist
            if((Test-Path $PerfLogDir) -eq $False) { 
                
                #create default PerfLogs folder
                $NewPerfLogDir = New-Item "C:\PerfLogs" -Type Directory -Verbose
                $PerfLogDir = "C:\PerfLogs"
            }
            
            #construct counter text file path
            $CounterFilePath = $PerfLogDir + "\" + $CounterFileName

            #delete counter file if counter file exist
            if(Test-Path $CounterFilePath) {
                
                #delete the counter file
                
                if($Verbose) { Remove-Item $CounterFilePath -Verbose }else{ Remove-Item $CounterFilePath }
            }
            
            #store property names    
            $PropertyNames = $Object | Get-Member -MemberType noteproperty | Select -ExpandProperty Name
            
            #enumerate counters into counter file
            foreach($PropertyName in $PropertyNames) {
            
                if($Verbose) { Write-Host "VERBOSE: Added $PropertyName Counter" -ForegroundColor blue }
                
                #add counter into counter file
                Add-Content -Path $CounterFilePath -Value $Object.$PropertyName
            }
            
            if($Verbose) { Write-Host "VERBOSE: Created $CounterFilePath" -ForegroundColor blue }
            
        } -ArgumentList $PerfLogDir, $CounterFileName, $Object, $PSBoundParameters['Verbose'] -ErrorVariable CreateCounter_Error

        #execute command to create performance log
        Invoke-Command -ComputerName $ComputerName -ScriptBlock {
            
            param($PerfLogDir, $CounterFileName, $DataCollectorName, $ComputerName, $SampleInterval, $MaximumSize, $Start)
            
            #construct counter text file path
            $CounterFilePath = $PerfLogDir + "\" + $CounterFileName
            
            #construct counter output file name
            $CounterOutputFileName = $PerfLogDir + "\" + $DataCollectorName + "_" + $ComputerName
            
            #create performance log
            if($Verbose) { Write-Host "VERBOSE: Creating $DataCollectorName Data Collector Set" -ForegroundColor blue }
            Logman Create Counter $DataCollectorName -v mmddhhmm -cf $CounterFilePath -si $SampleInterval -f bincirc -o $CounterOutputFileName -max $MaximumSize

            if($Start) {
            
                #start performance log
                if($Verbose) { Write-Host "VERBOSE: Starting $DataCollectorName Data Collector Set" -ForegroundColor blue }
                Logman Start $DataCollectorName
            }
            
        } -ArgumentList $PerfLogDir, $CounterFileName, $DataCollectorName, $ComputerName, $SampleInterval, $MaximumSize, $Start -ErrorVariable CreatePerformanceLog_Error
        
        
        #verify AutoStartup switch parameter is applied
        if($AutoStartup) {
        
            #execute command to create AutoStartup batch script and update Startup policy in local machine group policy
            Invoke-Command -ComputerName $ComputerName -ScriptBlock {
                
                param($LogmanStartupScriptPath, $DataCollectorName, $Verbose)
                
                $StartupScriptsINIFile = "C:\Windows\System32\GroupPolicy\Machine\Scripts\scripts.ini"
                $LogmanStartupScriptPath = "C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup\StartupPerfmon.bat"
                $StartupKeyParentPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Startup\0"
                $StartupKeyStateParentPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Startup\0"
                
                if(Test-Path $LogmanStartupScriptPath) {
                    
                    if($Verbose) { Write-Host "VERBOSE: $LogmanStartupScriptPath Exist" -ForegroundColor blue }
                    
                    #update existing startup script
                    Add-Content -Path $LogmanStartupScriptPath -Value "Logman Start $DataCollectorName" -ErrorVariable UpdateStartupScript_Error
                
                    if($Verbose) { 
                        if($UpdateStartupScript_Error -eq $Null) { Write-Host "VERBOSE: Updated $LogmanStartupScriptPath" -ForegroundColor blue }
                    }
                
                }else{
                    
                    #create new startup script
                    Add-Content -Path $LogmanStartupScriptPath -Value "Logman Start $DataCollectorName" -ErrorVariable CreateStartupScript_Error
                    
                    if($Verbose) { 
                        if($CreateStartupScript_Error -eq $Null) { Write-Host "VERBOSE: Created $LogmanStartupScriptPath" -ForegroundColor blue }
                    }
                }
                
                if(Test-Path $StartupKeyParentPath) {
                    
                    #get the last startup key
                    $LastKey = Get-ChildItem $StartupKeyParentPath | Select-Object -Last 1
                    $StartupNewKey = [Int] $LastKey.PSChildName + 1
                
                }else{
                
                    if(Test-Path $StartupKeyParentPath.TrimEnd("\Startup\0")) {
                    
                    New-Item -Path $StartupKeyParentPath.TrimEnd("\0")
                    New-Item -Path $StartupKeyParentPath
                    $StartupNewKey = 0
                    
                    }
                }
                
                if(Test-Path $StartupKeyStateParentPath) {
                
                    #get the last startup state key
                    $LastKey = Get-ChildItem $StartupKeyStateParentPath | Select-Object -Last 1
                    $StartupStateNewKey = [Int] $LastKey.PSChildName + 1
                
                }else{

                    if(Test-Path $StartupKeyStateParentPath.TrimEnd("\Startup\0")) {
                        
                        New-Item -Path $StartupKeyStateParentPath.TrimEnd("\0")
                        New-Item -Path $StartupKeyStateParentPath
                        $StartupStateNewKey = 0
                    }
                }
                
                if(Test-Path $StartupScriptsINIFile) {
                
                    if($StartupNewKey -eq $StartupStateNewKey) {
                        
                        #find [Startup] section in INI file
                        $StartupSection = Select-String -Path $StartupScriptsINIFile -Pattern "[Startup]" -SimpleMatch
                        
                        #create [Startup] section in INI file if it does not exist
                        if($StartupSection -eq $Null) {
                            Add-Content -Path $StartupScriptsINIFile -Value "[Startup]" -Encoding Unicode
                        }
                        
                        #construct command line and parameters value
                        $CmdLine = [String] $StartupNewKey + "CmdLine=" + $LogmanStartupScriptPath
                        $Parameters = [String] $StartupNewKey + "Parameters="
                        
                        #add value into scripts.ini
                        Add-Content -Path $StartupScriptsINIFile -Value $CmdLine -Encoding Unicode
                        Add-Content -Path $StartupScriptsINIFile -Value $Parameters -Encoding Unicode
                    
                        #construct a new Startup registry key path
                        $NewStartupKeyPath = $StartupKeyParentPath + "\" + $StartupNewKey
                        
                        #create new registry key path
                        New-Item -Path $NewStartupKeyPath
                        
                        #add new registry keys and value
                        New-ItemProperty -Path $NewStartupKeyPath -Name "ExecTime" -PropertyType QWORD
                        New-ItemProperty -Path $NewStartupKeyPath -Name "IsPowershell" -PropertyType DWORD
                        New-ItemProperty -Path $NewStartupKeyPath -Name "Parameters"
                        New-ItemProperty -Path $NewStartupKeyPath -Name "Script" -Value $LogmanStartupScriptPath
                
                        #construct a new Startup state registry key path
                        $NewStartupStateKeyPath = $StartupKeyStateParentPath + "\" + $StartupNewKey
                        
                        #create new registry key path
                        New-Item -Path $NewStartupStateKeyPath
                        
                        #add new registry keys and value
                        New-ItemProperty -Path $NewStartupStateKeyPath -Name "ExecTime" -PropertyType QWORD
                        New-ItemProperty -Path $NewStartupStateKeyPath -Name "Parameters"
                        New-ItemProperty -Path $NewStartupStateKeyPath -Name "Script" -Value $LogmanStartupScriptPath
                        
                        if($Verbose) { Write-Host "VERBOSE: Added $LogmanStartupScriptPath Startup Script for Local Computer" -ForegroundColor blue }
                    }
                }

            } -ArgumentList $LogmanStartupScriptPath, $DataCollectorName, $PSBoundParameters['Verbose'] -ErrorVariable SetupLogmanStartup_Error
            
        }
        
    }
    
}

END {}

}

9 thoughts on “Configure-PerformanceMonitor PowerShell Cmdlet

  1. Curious why you are deploying the perfmon counters this way instead of just exporting the Perfmon Template for the workload you are analyzing from PAL and importing into a data collector set on the server you are analyzing?

    Like

    • I used to do that but it is a hassle to deploy on a few machines. The PowerShell cmdlet allows you to invoke remotely to configure the perfmon datacollector and automatically setup the startup script to start perfmon when machine startup for constant performance monitoring just a a black box of an airplane for the server.

      Like

      • Thank you. Currently, all switch parameters for each independent counter from different PAL template can be used to render all the perfmon counters from different PAL template. (For Example: Configure-PerformanceMonitor -SQL -VM ). I will look into allowing additional perfmon counters to be bundle with standard PAL counters within the PowerShell cmdlet to allow more flexibility. Stay tune for a new -Custom switch parameter which will add additional user-defined custom counters.

        Like

  2. Pingback: View PAL Utility

  3. Pingback: Background | Alejandro Marin

  4. Hi ,

    This is Denny, the creator of this free automated employee
    provisioning/termination app– Z-hire. I wrote this app for the TechNet community a year ago.

    Since you run a very informative blog, I would like your help
    spread the word. Since my application is free, i need supporters from the
    community. It would means a lot if you can help.

    Here is a link to my app
    http://gallery.technet.microsoft.com/Z-Hire-Employee-Provisionin-e4854d6b

    Thanks
    Denny

    Like

    • Hi,

      In order to shutdown using Windows 8 GUI,
      1. Move your mouse pointer to the right bottom corner of your screen. Or touch the right bottom corner of your screen.
      2. A right side panel will reveal 5 icons (Search, Share, Start, Devices, Settings), select the Settings icon in that right panel.
      3. On the right side Settings panel, select Power and select Shutdown.

      In order to shutdown using Windows 8 PowerShell,
      1. Launch PowerShell Console
      2. Type Stop-Computer

      Like

Leave a comment