<?xml version="1.0" encoding="utf-8"?>
<PowerShellMetadata xmlns="http://schemas.microsoft.com/cmdlets-over-objects/2009/11">
  <Class ClassName="ROOT/StandardCimv2/MSFT_NetQosTrafficClassSettingData" ClassVersion="1.1.0">
    <Version>1.1</Version>
    <DefaultNoun>NetQosTrafficClass</DefaultNoun>
    <InstanceCmdlets>
        <!--

      //
      // Get-NetQosTrafficClass
      //

      -->
      <GetCmdletParameters DefaultCmdletParameterSet="ByIfAlias">
        <QueryableProperties>
          <Property PropertyName="Name">
            <Type PSType="string" />
            <RegularQuery AllowGlobbing="true">
              <CmdletParameterMetadata PSName="Name" Position="0" IsMandatory="false" CmdletParameterSets="ByIfAlias ByIfIndex" />
            </RegularQuery>
          </Property>            
        </QueryableProperties>
        <QueryOptions>
          <Option OptionName="InterfaceAlias">
            <Type PSType="string" />
            <CmdletParameterMetadata PSName="InterfaceAlias" Position="1" Aliases="IfAlias" IsMandatory="false" CmdletParameterSets="ByIfAlias" ValueFromPipelineByPropertyName="true"/>
          </Option>
          <Option OptionName="InterfaceIndex">
            <Type PSType="UInt32" />
            <CmdletParameterMetadata PSName="InterfaceIndex" Position="1" Aliases="IfIndex" IsMandatory="false" CmdletParameterSets="ByIfIndex" ValueFromPipelineByPropertyName="true" />
          </Option>               
        </QueryOptions>
      </GetCmdletParameters>
      <!--

      //
      // Set-NetQosTrafficClass
      //

      -->
      <Cmdlet>
        <CmdletMetadata Verb="Set" ConfirmImpact="Medium" />
        <Method MethodName="cim:ModifyInstance">
          <Parameters>
            <Parameter ParameterName="Algorithm">
              <Type PSType="NetQosTrafficClass.Algorithm" />
              <CmdletParameterMetadata Aliases="tsa" IsMandatory="false" ValueFromPipelineByPropertyName="true" >
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="BandwidthPercentage">
              <Type PSType="byte" />
              <CmdletParameterMetadata Aliases="Bandwidth bw" IsMandatory="false" ValueFromPipelineByPropertyName="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
                <ValidateRange Min="0" Max="100" />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="Priority">
              <Type PSType="byte[]" />
              <CmdletParameterMetadata Aliases="p pri" IsMandatory="false" ValueFromPipelineByPropertyName="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
                <ValidateCount Min="1" Max="8" />
                <ValidateRange Min="0" Max="7" />
              </CmdletParameterMetadata>
            </Parameter>
          </Parameters>
        </Method>
      </Cmdlet>
      <!--

      //
      // Remove-NetQosTrafficClass
      //

      -->
      <Cmdlet>
        <CmdletMetadata Verb="Remove" ConfirmImpact="Medium" />
        <Method MethodName="cim:DeleteInstance">
        </Method>
      </Cmdlet>
        
    </InstanceCmdlets>
    <StaticCmdlets>
      <!--

      //
      // New-NetQosTrafficClass
      //

      -->
      <Cmdlet>
        <CmdletMetadata Verb="New" ConfirmImpact="Medium" DefaultCmdletParameterSet="ByIfAlias"/>          
        <Method MethodName="cim:CreateInstance" CmdletParameterSet="ByIfAlias" >
          <Parameters>
            <Parameter ParameterName="Name">
              <Type PSType="string" />
              <CmdletParameterMetadata Position="0" IsMandatory="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="Algorithm">
              <Type PSType="NetQosTrafficClass.Algorithm" />
              <CmdletParameterMetadata Aliases="tsa" Position="1" IsMandatory="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="BandwidthPercentage">
              <Type PSType="byte" />
              <CmdletParameterMetadata Aliases="Bandwidth bw" IsMandatory="false">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
                <ValidateRange Min="0" Max="100" />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="Priority">
              <Type PSType="byte[]" />
              <CmdletParameterMetadata  Aliases="p pri" Position="2" IsMandatory="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
                <ValidateCount Min="1" Max="8" />
                <ValidateRange Min="0" Max="7" />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="cim:OperationOption:InterfaceAlias">
              <Type PSType="string" />
              <CmdletParameterMetadata PSName="InterfaceAlias" Aliases="IfAlias" IsMandatory="false" ValueFromPipelineByPropertyName="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
          </Parameters>
        </Method>
        <Method MethodName="cim:CreateInstance" CmdletParameterSet="ByIfIndex" >
          <Parameters>
            <Parameter ParameterName="Name">
              <Type PSType="string" />
              <CmdletParameterMetadata Position="0" IsMandatory="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="Algorithm">
              <Type PSType="NetQosTrafficClass.Algorithm" />
              <CmdletParameterMetadata Aliases="tsa" Position="1" IsMandatory="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="BandwidthPercentage">
              <Type PSType="byte" />
              <CmdletParameterMetadata Aliases="Bandwidth bw" IsMandatory="false">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
                <ValidateRange Min="0" Max="100" />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="Priority">
              <Type PSType="byte[]" />
              <CmdletParameterMetadata  Aliases="p pri" Position="2" IsMandatory="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
                <ValidateCount Min="1" Max="8" />
                <ValidateRange Min="0" Max="7" />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="cim:OperationOption:InterfaceIndex">
              <Type PSType="UInt32" />
              <CmdletParameterMetadata PSName="InterfaceIndex" Aliases="IfIndex" IsMandatory="false" ValueFromPipelineByPropertyName="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
          </Parameters>
        </Method>   
      </Cmdlet>
      <!--

      //
      // Switch-NetQosTrafficClass
      //

      -->
      <Cmdlet>
        <CmdletMetadata Verb="Switch" ConfirmImpact="High" DefaultCmdletParameterSet="ByIfAlias"/>
        <Method MethodName="SwitchPolicySet" CmdletParameterSet="ByIfAlias">
          <Parameters>
            <Parameter ParameterName="PolicySet">
              <Type PSType="NetQosTrafficClass.PolicySet" />
              <CmdletParameterMetadata Position="0" IsMandatory="true" ValueFromPipelineByPropertyName="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="InterfaceAlias">
              <Type PSType="string" />
              <CmdletParameterMetadata Position="1" Aliases="IfAlias" IsMandatory="true" ValueFromPipelineByPropertyName="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>                    
          </Parameters>
        </Method>
        <Method MethodName="SwitchPolicySet" CmdletParameterSet="ByIfIndex">
          <Parameters>
            <Parameter ParameterName="PolicySet">
              <Type PSType="NetQosTrafficClass.PolicySet" />
              <CmdletParameterMetadata Position="0" IsMandatory="true" ValueFromPipelineByPropertyName="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
            <Parameter ParameterName="InterfaceIndex">
              <Type PSType="uint32" />
              <CmdletParameterMetadata Position="1" Aliases="IfIndex" IsMandatory="true" ValueFromPipelineByPropertyName="true">
                <ValidateNotNull />
                <ValidateNotNullOrEmpty />
              </CmdletParameterMetadata>
            </Parameter>
          </Parameters>
        </Method>
      </Cmdlet>
    </StaticCmdlets>
  </Class>
  <Enums>
    <Enum EnumName="NetQosTrafficClass.Algorithm" UnderlyingType="byte">
      <Value Name="Strict" Value="0" />
      <Value Name="ETS" Value="2" />
    </Enum>
    <Enum EnumName="NetQosTrafficClass.PolicySet" UnderlyingType="byte">
      <Value Name="Global" Value="0" />
      <Value Name="AdapterSpecific" Value="1" />
    </Enum>      
  </Enums>  
</PowerShellMetadata>
