exports/latest-2019-04-30/ProxyCmdletDefinitions.ps1


# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Gets a named billing period.
This is only supported for Azure Web-Direct subscriptions.
Other subscription types which were not purchased directly through the Azure web portal are not supported through this preview API.
.Description
Gets a named billing period.
This is only supported for Azure Web-Direct subscriptions.
Other subscription types which were not purchased directly through the Azure web portal are not supported through this preview API.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azbillingperiod
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180301Preview.IBillingPeriod
.Notes
COMPLEX PARAMETER PROPERTIES
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
INPUTOBJECT <IBillingIdentity>: Identity Parameter
  [AgreementName <String>]: Agreement Id.
  [BillingAccountId <String>]: BillingAccount ID
  [BillingAccountName <String>]: Billing Account Id.
  [BillingPeriodName <String>]: Billing Period Name.
  [BillingProfileId <String>]: Billing Profile Id.
  [BillingProfileName <String>]: Billing Profile Id.
  [BillingRoleAssignmentName <String>]: role assignment id.
  [BillingRoleDefinitionName <String>]: role definition id.
  [BillingSubscriptionName <String>]: Billing Subscription Id.
  [BudgetName <String>]: Budget Name.
  [CustomerName <String>]: Customer Id.
  [DepartmentName <String>]: Department Id.
  [EnrollmentAccountName <String>]: Enrollment Account Id.
  [Id <String>]: Resource identity path
  [InvoiceName <String>]: The name of an invoice resource.
  [InvoiceSectionId <String>]: Invoice Section Id.
  [InvoiceSectionName <String>]: InvoiceSection Id.
  [ManagementGroupId <String>]: Azure Management Group ID.
  [Name <String>]: Enrollment Account name.
  [ProductName <String>]: Invoice Id.
  [ReservationId <String>]: Id of the reservation
  [ReservationOrderId <String>]: Order Id of the reservation
  [Scope <String>]: The scope associated with usage details operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope. For subscription, billing account, department, enrollment account and management group, you can also add billing period to the scope using '/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'. For e.g. to specify billing period at department scope use '/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'
  [SubscriptionId <String>]: Azure Subscription ID.
  [TransferName <String>]: Transfer Name.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azbillingperiod
#>

function Get-AzBillingPeriod {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180301Preview.IBillingPeriod])]
[CmdletBinding(DefaultParameterSetName='ListExpandedFilter', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Get', Mandatory)]
    [Alias('BillingPeriodName')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # The name of a BillingPeriod resource.
    ${Name},

    [Parameter(ParameterSetName='Get')]
    [Parameter(ParameterSetName='List')]
    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String[]]
    # Azure Subscription ID.
    ${SubscriptionId},

    [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity]
    # Identity Parameter
    # To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
    ${InputObject},

    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # May be used to filter billing periods by billingPeriodEndDate.
    # The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'.
    # It does not currently support 'ne', 'or', or 'not'.
    ${Filter},

    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Skiptoken is only used if a previous operation returned a partial result.
    # If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls.
    ${Skiptoken},

    [Parameter(ParameterSetName='List')]
    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Alias('MaxCount')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.Int32]
    # May be used to limit the number of results to the most recent N billing periods.
    ${Top},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The end date (YYYY-MM-DD) in UTC of the billing period.
    ${EndDate},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            Get = 'Az.Billing.private\Get-AzBillingPeriod_Get';
            GetViaIdentity = 'Az.Billing.private\Get-AzBillingPeriod_GetViaIdentity';
            List = 'Az.Billing.private\Get-AzBillingPeriod_List';
            ListExpandedFilter = 'Az.Billing.custom\Get-AzBillingPeriod_ListExpandedFilter';
        }
        if (('Get', 'List', 'ListExpandedFilter') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) {
            $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Gets the budget for the scope by budget name.
.Description
Gets the budget for the scope by budget name.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azbudget
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget
.Notes
COMPLEX PARAMETER PROPERTIES
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
INPUTOBJECT <IBillingIdentity>: Identity Parameter
  [AgreementName <String>]: Agreement Id.
  [BillingAccountId <String>]: BillingAccount ID
  [BillingAccountName <String>]: Billing Account Id.
  [BillingPeriodName <String>]: Billing Period Name.
  [BillingProfileId <String>]: Billing Profile Id.
  [BillingProfileName <String>]: Billing Profile Id.
  [BillingRoleAssignmentName <String>]: role assignment id.
  [BillingRoleDefinitionName <String>]: role definition id.
  [BillingSubscriptionName <String>]: Billing Subscription Id.
  [BudgetName <String>]: Budget Name.
  [CustomerName <String>]: Customer Id.
  [DepartmentName <String>]: Department Id.
  [EnrollmentAccountName <String>]: Enrollment Account Id.
  [Id <String>]: Resource identity path
  [InvoiceName <String>]: The name of an invoice resource.
  [InvoiceSectionId <String>]: Invoice Section Id.
  [InvoiceSectionName <String>]: InvoiceSection Id.
  [ManagementGroupId <String>]: Azure Management Group ID.
  [Name <String>]: Enrollment Account name.
  [ProductName <String>]: Invoice Id.
  [ReservationId <String>]: Id of the reservation
  [ReservationOrderId <String>]: Order Id of the reservation
  [Scope <String>]: The scope associated with usage details operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope. For subscription, billing account, department, enrollment account and management group, you can also add billing period to the scope using '/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'. For e.g. to specify billing period at department scope use '/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'
  [SubscriptionId <String>]: Azure Subscription ID.
  [TransferName <String>]: Transfer Name.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azbudget
#>

function Get-AzBudget {
[Alias('Get-AzConsumptionBudget')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget])]
[CmdletBinding(DefaultParameterSetName='ListBySubscription', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='ListBySubscription')]
    [Parameter(ParameterSetName='ListByResourceGroup')]
    [Alias('BudgetName')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Budget Name.
    ${Name},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='List', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # The scope associated with budget operations.
    # This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope, '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for billingProfile scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for invoiceSection scope.
    ${Scope},

    [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity]
    # Identity Parameter
    # To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
    ${InputObject},

    [Parameter(ParameterSetName='ListBySubscription')]
    [Parameter(ParameterSetName='ListByResourceGroup')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String]
    # The id of the subscription to scope the budgets to.
    ${SubscriptionId},

    [Parameter(ParameterSetName='ListByResourceGroup', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The resource group name to scope the budgets to.
    ${ResourceGroupName},

    [Parameter(ParameterSetName='ListByInvoiceSection', Mandatory)]
    [Parameter(ParameterSetName='ListByBillingProfile', Mandatory)]
    [Parameter(ParameterSetName='ListByEnrollmentAccount', Mandatory)]
    [Parameter(ParameterSetName='ListByDepartment', Mandatory)]
    [Parameter(ParameterSetName='ListByBillingAccount', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The id of the billing account to scope the budgets to.
    ${BillingAccountId},

    [Parameter(ParameterSetName='ListByInvoiceSection', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The id of the invoice section to scope the budgets to.
    ${InvoiceSectionId},

    [Parameter(ParameterSetName='ListByBillingProfile', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The id of the billing profile to scope the budgets to.
    ${BillingProfileId},

    [Parameter(ParameterSetName='ListByEnrollmentAccount', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The id of the enrollment account to scope the budgets to.
    ${EnrollmentAccountId},

    [Parameter(ParameterSetName='ListByDepartment', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The id of the department to scope the budgets to.
    ${DepartmentId},

    [Parameter(ParameterSetName='ListByManagementGroup', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The id of the management group to scope the budgets to.
    ${ManagementGroupId},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            Get = 'Az.Billing.private\Get-AzBudget_Get';
            GetViaIdentity = 'Az.Billing.private\Get-AzBudget_GetViaIdentity';
            List = 'Az.Billing.private\Get-AzBudget_List';
            ListBySubscription = 'Az.Billing.custom\Get-AzBudget';
            ListByResourceGroup = 'Az.Billing.custom\Get-AzBudget';
            ListByInvoiceSection = 'Az.Billing.custom\Get-AzBudget';
            ListByBillingProfile = 'Az.Billing.custom\Get-AzBudget';
            ListByEnrollmentAccount = 'Az.Billing.custom\Get-AzBudget';
            ListByDepartment = 'Az.Billing.custom\Get-AzBudget';
            ListByBillingAccount = 'Az.Billing.custom\Get-AzBudget';
            ListByManagementGroup = 'Az.Billing.custom\Get-AzBudget';
        }
        if (('ListBySubscription', 'ListByResourceGroup') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) {
            $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Get the enrollment account by id.
.Description
Get the enrollment account by id.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azenrollmentaccount
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180301Preview.IEnrollmentAccount
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IEnrollmentAccount
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IEnrollmentAccount1
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IEnrollmentAccountListResult
.Notes
COMPLEX PARAMETER PROPERTIES
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
INPUTOBJECT <IBillingIdentity>: Identity Parameter
  [AgreementName <String>]: Agreement Id.
  [BillingAccountId <String>]: BillingAccount ID
  [BillingAccountName <String>]: Billing Account Id.
  [BillingPeriodName <String>]: Billing Period Name.
  [BillingProfileId <String>]: Billing Profile Id.
  [BillingProfileName <String>]: Billing Profile Id.
  [BillingRoleAssignmentName <String>]: role assignment id.
  [BillingRoleDefinitionName <String>]: role definition id.
  [BillingSubscriptionName <String>]: Billing Subscription Id.
  [BudgetName <String>]: Budget Name.
  [CustomerName <String>]: Customer Id.
  [DepartmentName <String>]: Department Id.
  [EnrollmentAccountName <String>]: Enrollment Account Id.
  [Id <String>]: Resource identity path
  [InvoiceName <String>]: The name of an invoice resource.
  [InvoiceSectionId <String>]: Invoice Section Id.
  [InvoiceSectionName <String>]: InvoiceSection Id.
  [ManagementGroupId <String>]: Azure Management Group ID.
  [Name <String>]: Enrollment Account name.
  [ProductName <String>]: Invoice Id.
  [ReservationId <String>]: Id of the reservation
  [ReservationOrderId <String>]: Order Id of the reservation
  [Scope <String>]: The scope associated with usage details operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope. For subscription, billing account, department, enrollment account and management group, you can also add billing period to the scope using '/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'. For e.g. to specify billing period at department scope use '/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'
  [SubscriptionId <String>]: Azure Subscription ID.
  [TransferName <String>]: Transfer Name.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azenrollmentaccount
#>

function Get-AzEnrollmentAccount {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IEnrollmentAccount1], [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180301Preview.IEnrollmentAccount], [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IEnrollmentAccount], [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IEnrollmentAccountListResult])]
[CmdletBinding(DefaultParameterSetName='List1', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='List', Mandatory)]
    [Parameter(ParameterSetName='ListExpandedFilter', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Billing Account Id.
    ${BillingAccountName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Alias('EnrollmentAccountName', 'ObjectId')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Enrollment Account Id.
    ${Name},

    [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='GetViaIdentity1', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity]
    # Identity Parameter
    # To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
    ${InputObject},

    [Parameter(ParameterSetName='Get')]
    [Parameter(ParameterSetName='GetViaIdentity')]
    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # May be used to expand the Department.
    ${Expand},

    [Parameter(ParameterSetName='Get')]
    [Parameter(ParameterSetName='GetViaIdentity')]
    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'.
    # It does not currently support 'ne', 'or', or 'not'.
    # Tag filter is a key value pair string where key and value is separated by a colon (:).
    ${Filter},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The tag of the enrollment account(s) to filter.
    ${Tag},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # If set, signals to expand the department on the returned enrollment account(s).
    ${ExpandDepartment},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            Get = 'Az.Billing.private\Get-AzEnrollmentAccount_Get';
            Get1 = 'Az.Billing.private\Get-AzEnrollmentAccount_Get1';
            GetViaIdentity = 'Az.Billing.private\Get-AzEnrollmentAccount_GetViaIdentity';
            GetViaIdentity1 = 'Az.Billing.private\Get-AzEnrollmentAccount_GetViaIdentity1';
            List = 'Az.Billing.private\Get-AzEnrollmentAccount_List';
            List1 = 'Az.Billing.private\Get-AzEnrollmentAccount_List1';
            ListExpandedFilter = 'Az.Billing.custom\Get-AzEnrollmentAccount_ListExpandedFilter';
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Get the invoice by name.
.Description
Get the invoice by name.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azinvoice
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180301Preview.IInvoice
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IInvoiceListResult
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IInvoiceSummary
.Notes
COMPLEX PARAMETER PROPERTIES
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
INPUTOBJECT <IBillingIdentity>: Identity Parameter
  [AgreementName <String>]: Agreement Id.
  [BillingAccountId <String>]: BillingAccount ID
  [BillingAccountName <String>]: Billing Account Id.
  [BillingPeriodName <String>]: Billing Period Name.
  [BillingProfileId <String>]: Billing Profile Id.
  [BillingProfileName <String>]: Billing Profile Id.
  [BillingRoleAssignmentName <String>]: role assignment id.
  [BillingRoleDefinitionName <String>]: role definition id.
  [BillingSubscriptionName <String>]: Billing Subscription Id.
  [BudgetName <String>]: Budget Name.
  [CustomerName <String>]: Customer Id.
  [DepartmentName <String>]: Department Id.
  [EnrollmentAccountName <String>]: Enrollment Account Id.
  [Id <String>]: Resource identity path
  [InvoiceName <String>]: The name of an invoice resource.
  [InvoiceSectionId <String>]: Invoice Section Id.
  [InvoiceSectionName <String>]: InvoiceSection Id.
  [ManagementGroupId <String>]: Azure Management Group ID.
  [Name <String>]: Enrollment Account name.
  [ProductName <String>]: Invoice Id.
  [ReservationId <String>]: Id of the reservation
  [ReservationOrderId <String>]: Order Id of the reservation
  [Scope <String>]: The scope associated with usage details operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope. For subscription, billing account, department, enrollment account and management group, you can also add billing period to the scope using '/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'. For e.g. to specify billing period at department scope use '/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'
  [SubscriptionId <String>]: Azure Subscription ID.
  [TransferName <String>]: Transfer Name.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azinvoice
#>

function Get-AzInvoice {
[Alias('Get-AzBillingInvoice')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IInvoiceSummary], [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180301Preview.IInvoice], [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181101Preview.IInvoiceListResult])]
[CmdletBinding(DefaultParameterSetName='List2', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='List', Mandatory)]
    [Parameter(ParameterSetName='List1', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Billing Account Id.
    ${BillingAccountName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='List1', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Billing Profile Id.
    ${BillingProfileName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Alias('InvoiceName')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Invoice Id.
    ${Name},

    [Parameter(ParameterSetName='Get1')]
    [Parameter(ParameterSetName='List2')]
    [Parameter(ParameterSetName='GenerateDownloadUrl')]
    [Parameter(ParameterSetName='GetLatest')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String[]]
    # Azure Subscription ID.
    ${SubscriptionId},

    [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='GetViaIdentity1', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity]
    # Identity Parameter
    # To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
    ${InputObject},

    [Parameter(ParameterSetName='List', Mandatory)]
    [Parameter(ParameterSetName='List1', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Invoice period end date.
    ${PeriodEndDate},

    [Parameter(ParameterSetName='List', Mandatory)]
    [Parameter(ParameterSetName='List1', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Invoice period start date.
    ${PeriodStartDate},

    [Parameter(ParameterSetName='List2')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # May be used to expand the downloadUrl property within a list of invoices.
    # This enables download links to be generated for multiple invoices at once.
    # By default, downloadURLs are not included when listing invoices.
    ${Expand},

    [Parameter(ParameterSetName='List2')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # May be used to filter invoices by invoicePeriodEndDate.
    # The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'.
    # It does not currently support 'ne', 'or', or 'not'.
    ${Filter},

    [Parameter(ParameterSetName='List2')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Skiptoken is only used if a previous operation returned a partial result.
    # If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls.
    ${Skiptoken},

    [Parameter(ParameterSetName='List2')]
    [Parameter(ParameterSetName='GenerateDownloadUrl')]
    [Alias('MaxCount')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.Int32]
    # May be used to limit the number of results to the most recent N invoices.
    ${Top},

    [Parameter(ParameterSetName='GenerateDownloadUrl', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.Info(PossibleTypes=([System.String]))]
    [System.Management.Automation.SwitchParameter]
    # If set, signals to generate the download URL of the invoice(s).
    ${GenerateDownloadUrl},

    [Parameter(ParameterSetName='GetLatest', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # If set, signals that the latest invoice should be returned.
    ${Latest},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            Get = 'Az.Billing.private\Get-AzInvoice_Get';
            Get1 = 'Az.Billing.private\Get-AzInvoice_Get1';
            GetViaIdentity = 'Az.Billing.private\Get-AzInvoice_GetViaIdentity';
            GetViaIdentity1 = 'Az.Billing.private\Get-AzInvoice_GetViaIdentity1';
            List = 'Az.Billing.private\Get-AzInvoice_List';
            List1 = 'Az.Billing.private\Get-AzInvoice_List1';
            List2 = 'Az.Billing.private\Get-AzInvoice_List2';
            GenerateDownloadUrl = 'Az.Billing.custom\Get-AzInvoice_GenerateDownloadUrl';
            GetLatest = 'Az.Billing.custom\Get-AzInvoice_GetLatest';
        }
        if (('Get1', 'List2', 'GenerateDownloadUrl', 'GetLatest') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) {
            $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Lists the marketplaces for a scope at the defined scope.
Marketplaces are available via this API only for May 1, 2014 or later.
.Description
Lists the marketplaces for a scope at the defined scope.
Marketplaces are available via this API only for May 1, 2014 or later.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azmarketplace
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IMarketplace
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azmarketplace
#>

function Get-AzMarketplace {
[Alias('Get-AzConsumptionMarketplace')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IMarketplace])]
[CmdletBinding(DefaultParameterSetName='ListExpandedFilter', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # The scope associated with marketplace operations.
    # This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope.
    # For subscription, billing account, department, enrollment account and ManagementGroup, you can also add billing period to the scope using '/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'.
    # For e.g.
    # to specify billing period at department scope use '/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'
    ${Scope},

    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # May be used to filter marketplaces by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName or properties/instanceId.
    # The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'.
    # It does not currently support 'ne', 'or', or 'not'.
    ${Filter},

    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Skiptoken is only used if a previous operation returned a partial result.
    # If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls.
    ${Skiptoken},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.Int32]
    # May be used to limit the number of results to the most recent N marketplaces.
    ${Top},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The start date (in UTC) of the marketplace(s) to filter.
    ${StartDate},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The end date (in UTC) of the marketplace(s) to filter.
    ${EndDate},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The instance id of the marketplace(s) to filter.
    ${InstanceId},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The instance name of the marketplace(s) to filter.
    ${InstanceName},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Alias('ResourceGroupName')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The resource group of the marketplace(s) to filter.
    ${ResourceGroup},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            List = 'Az.Billing.private\Get-AzMarketplace_List';
            ListExpandedFilter = 'Az.Billing.custom\Get-AzMarketplace_ListExpandedFilter';
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Gets the price sheet for a scope by subscriptionId.
Price sheet is available via this API only for May 1, 2014 or later.
.Description
Gets the price sheet for a scope by subscriptionId.
Price sheet is available via this API only for May 1, 2014 or later.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azpricesheet
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IPriceSheetResult
.Notes
COMPLEX PARAMETER PROPERTIES
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
INPUTOBJECT <IBillingIdentity>: Identity Parameter
  [AgreementName <String>]: Agreement Id.
  [BillingAccountId <String>]: BillingAccount ID
  [BillingAccountName <String>]: Billing Account Id.
  [BillingPeriodName <String>]: Billing Period Name.
  [BillingProfileId <String>]: Billing Profile Id.
  [BillingProfileName <String>]: Billing Profile Id.
  [BillingRoleAssignmentName <String>]: role assignment id.
  [BillingRoleDefinitionName <String>]: role definition id.
  [BillingSubscriptionName <String>]: Billing Subscription Id.
  [BudgetName <String>]: Budget Name.
  [CustomerName <String>]: Customer Id.
  [DepartmentName <String>]: Department Id.
  [EnrollmentAccountName <String>]: Enrollment Account Id.
  [Id <String>]: Resource identity path
  [InvoiceName <String>]: The name of an invoice resource.
  [InvoiceSectionId <String>]: Invoice Section Id.
  [InvoiceSectionName <String>]: InvoiceSection Id.
  [ManagementGroupId <String>]: Azure Management Group ID.
  [Name <String>]: Enrollment Account name.
  [ProductName <String>]: Invoice Id.
  [ReservationId <String>]: Id of the reservation
  [ReservationOrderId <String>]: Order Id of the reservation
  [Scope <String>]: The scope associated with usage details operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope. For subscription, billing account, department, enrollment account and management group, you can also add billing period to the scope using '/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'. For e.g. to specify billing period at department scope use '/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'
  [SubscriptionId <String>]: Azure Subscription ID.
  [TransferName <String>]: Transfer Name.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azpricesheet
#>

function Get-AzPriceSheet {
[Alias('Get-AzConsumptionPriceSheet')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IPriceSheetResult])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Get')]
    [Parameter(ParameterSetName='Get1')]
    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String[]]
    # Azure Subscription ID.
    ${SubscriptionId},

    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Billing Period Name.
    ${BillingPeriodName},

    [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='GetViaIdentity1', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity]
    # Identity Parameter
    # To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
    ${InputObject},

    [Parameter(ParameterSetName='Get')]
    [Parameter(ParameterSetName='Get1')]
    [Parameter(ParameterSetName='GetViaIdentity')]
    [Parameter(ParameterSetName='GetViaIdentity1')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # May be used to expand the properties/meterDetails within a price sheet.
    # By default, these fields are not included when returning price sheet.
    ${Expand},

    [Parameter(ParameterSetName='Get')]
    [Parameter(ParameterSetName='Get1')]
    [Parameter(ParameterSetName='GetViaIdentity')]
    [Parameter(ParameterSetName='GetViaIdentity1')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Skiptoken is only used if a previous operation returned a partial result.
    # If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls.
    ${Skiptoken},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.Int32]
    # May be used to limit the number of results to the top N results.
    ${Top},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # If set, signals to expand the price sheets based on meter details.
    ${ExpandMeterDetail},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            Get = 'Az.Billing.private\Get-AzPriceSheet_Get';
            Get1 = 'Az.Billing.private\Get-AzPriceSheet_Get1';
            GetViaIdentity = 'Az.Billing.private\Get-AzPriceSheet_GetViaIdentity';
            GetViaIdentity1 = 'Az.Billing.private\Get-AzPriceSheet_GetViaIdentity1';
            ListExpandedFilter = 'Az.Billing.custom\Get-AzPriceSheet_ListExpandedFilter';
        }
        if (('Get', 'Get1', 'ListExpandedFilter') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) {
            $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Lists the reservations details for provided date range.
.Description
Lists the reservations details for provided date range.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azreservationdetail
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IReservationDetail
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azreservationdetail
#>

function Get-AzReservationDetail {
[Alias('Get-AzConsumptionReservationDetail')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IReservationDetail])]
[CmdletBinding(DefaultParameterSetName='ListExpandedFilter', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Order Id of the reservation
    ${ReservationOrderId},

    [Parameter(ParameterSetName='List1', Mandatory)]
    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Id of the reservation
    ${ReservationId},

    [Parameter(ParameterSetName='List', Mandatory)]
    [Parameter(ParameterSetName='List1', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Filter reservation details by date range.
    # The properties/UsageDate for start date and end date.
    # The filter supports 'le' and 'ge'
    ${Filter},

    [Parameter(ParameterSetName='ListExpandedFilter', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The start date (YYYY-MM-DD) in UTC of the reservation detail.
    ${StartDate},

    [Parameter(ParameterSetName='ListExpandedFilter', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The end date (YYYY-MM-DD) in UTC of the reservation detail.
    ${EndDate},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            List = 'Az.Billing.private\Get-AzReservationDetail_List';
            List1 = 'Az.Billing.private\Get-AzReservationDetail_List1';
            ListExpandedFilter = 'Az.Billing.custom\Get-AzReservationDetail_ListExpandedFilter';
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Lists the reservations summaries for daily or monthly grain.
.Description
Lists the reservations summaries for daily or monthly grain.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azreservationsummary
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IReservationSummary
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azreservationsummary
#>

function Get-AzReservationSummary {
[Alias('Get-AzConsumptionReservationSummary')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IReservationSummary])]
[CmdletBinding(DefaultParameterSetName='ListExpandedFilter', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Order Id of the reservation
    ${ReservationOrderId},

    [Parameter(ParameterSetName='List1', Mandatory)]
    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Id of the reservation
    ${ReservationId},

    [Parameter(Mandatory)]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.Datagrain])]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.Datagrain]
    # Can be daily or monthly
    ${Grain},

    [Parameter(ParameterSetName='List')]
    [Parameter(ParameterSetName='List1')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Required only for daily grain.
    # The properties/UsageDate for start date and end date.
    # The filter supports 'le' and 'ge'
    ${Filter},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The start date (YYYY-MM-DD) in UTC of the reservation summary.
    ${StartDate},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The end date (YYYY-MM-DD) in UTC of the reservation summary.
    ${EndDate},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            List = 'Az.Billing.private\Get-AzReservationSummary_List';
            List1 = 'Az.Billing.private\Get-AzReservationSummary_List1';
            ListExpandedFilter = 'Az.Billing.custom\Get-AzReservationSummary_ListExpandedFilter';
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Query aggregated Azure subscription consumption data for a date range.
.Description
Query aggregated Azure subscription consumption data for a date range.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azusageaggregate
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20150601Preview.IUsageAggregation
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azusageaggregate
#>

function Get-AzUsageAggregate {
[Alias('Get-UsageAggregates')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20150601Preview.IUsageAggregation])]
[CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String[]]
    # It uniquely identifies Microsoft Azure subscription.
    # The subscription ID forms part of the URI for every service call.
    ${SubscriptionId},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.DateTime]
    # The end of the time range to retrieve data for.
    ${ReportedEndTime},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.DateTime]
    # The start of the time range to retrieve data for.
    ${ReportedStartTime},

    [Parameter()]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.AggregationGranularity])]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.AggregationGranularity]
    # `Daily` (default) returns the data in daily granularity, `Hourly` returns the data in hourly granularity.
    ${AggregationGranularity},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Used when a continuation token string is provided in the response body of the previous call, enabling paging through a large result set.
    # If not present, the data is retrieved from the beginning of the day/hour (based on the granularity) passed in.
    ${ContinuationToken},

    [Parameter()]
    [Alias('ShowDetails')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.Management.Automation.SwitchParameter]
    # `True` returns usage data in instance-level detail, `false` causes server-side aggregation with fewer details.
    # For example, if you have 3 website instances, by default you will get 3 line items for website consumption.
    # If you specify showDetails = false, the data will be aggregated as a single line item for website consumption within the time period (for the given subscriptionId, meterId, usageStartTime and usageEndTime).
    ${ShowDetail},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            List = 'Az.Billing.private\Get-AzUsageAggregate_List';
        }
        if (('List') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) {
            $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
Lists the usage details for the defined scope.
Usage details are available via this API only for May 1, 2014 or later.
.Description
Lists the usage details for the defined scope.
Usage details are available via this API only for May 1, 2014 or later.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azusagedetail
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IUsageDetail
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/get-azusagedetail
#>

function Get-AzUsageDetail {
[Alias('Get-AzConsumptionUsageDetail')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20181001.IUsageDetail])]
[CmdletBinding(DefaultParameterSetName='ListExpandedFilter', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # The scope associated with usage details operations.
    # This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope.
    # For subscription, billing account, department, enrollment account and management group, you can also add billing period to the scope using '/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'.
    # For e.g.
    # to specify billing period at department scope use '/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'
    ${Scope},

    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # OData apply expression to aggregate usageDetails by tags or (tags and properties/usageStart)
    ${Apply},

    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # May be used to expand the properties/additionalProperties or properties/meterDetails within a list of usage details.
    # By default, these fields are not included when listing usage details.
    ${Expand},

    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # May be used to filter usageDetails by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName, properties/instanceId or tags.
    # The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'.
    # It does not currently support 'ne', 'or', or 'not'.
    # Tag filter is a key value pair string where key and value is separated by a colon (:).
    ${Filter},

    [Parameter(ParameterSetName='List')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.String]
    # Skiptoken is only used if a previous operation returned a partial result.
    # If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls.
    ${Skiptoken},

    [Parameter()]
    [Alias('MaxCount')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Query')]
    [System.Int32]
    # May be used to limit the number of results to the most recent N usageDetails.
    ${Top},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The start date (in UTC) of the usage(s) to filter.
    ${StartDate},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The end date (in UTC) of the usage(s) to filter.
    ${EndDate},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The instance id of the usage(s) to filter.
    ${InstanceId},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The instance name of the usage(s) to filter.
    ${InstanceName},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Alias('ResourceGroupName')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The resource group of the usage(s) to filter.
    ${ResourceGroup},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # The tag of the usage(s) to filter.
    ${Tag},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # If set, signals to include meter details in the returned usage(s).
    ${IncludeMeterDetails},

    [Parameter(ParameterSetName='ListExpandedFilter')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # If set, signals to include additional properties in the returned usage(s).
    ${IncludeAdditionalProperties},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            List = 'Az.Billing.private\Get-AzUsageDetail_List';
            ListExpandedFilter = 'Az.Billing.custom\Get-AzUsageDetail_ListExpandedFilter';
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
The operation to create or update a budget.
Update operation requires latest eTag to be set in the request mandatorily.
You may obtain the latest eTag by performing a get operation.
Create operation does not require eTag.
.Description
The operation to create or update a budget.
Update operation requires latest eTag to be set in the request mandatorily.
You may obtain the latest eTag by performing a get operation.
Create operation does not require eTag.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/new-azbudget
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget
.Notes
COMPLEX PARAMETER PROPERTIES
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
INPUTOBJECT <IBillingIdentity>: Identity Parameter
  [AgreementName <String>]: Agreement Id.
  [BillingAccountId <String>]: BillingAccount ID
  [BillingAccountName <String>]: Billing Account Id.
  [BillingPeriodName <String>]: Billing Period Name.
  [BillingProfileId <String>]: Billing Profile Id.
  [BillingProfileName <String>]: Billing Profile Id.
  [BillingRoleAssignmentName <String>]: role assignment id.
  [BillingRoleDefinitionName <String>]: role definition id.
  [BillingSubscriptionName <String>]: Billing Subscription Id.
  [BudgetName <String>]: Budget Name.
  [CustomerName <String>]: Customer Id.
  [DepartmentName <String>]: Department Id.
  [EnrollmentAccountName <String>]: Enrollment Account Id.
  [Id <String>]: Resource identity path
  [InvoiceName <String>]: The name of an invoice resource.
  [InvoiceSectionId <String>]: Invoice Section Id.
  [InvoiceSectionName <String>]: InvoiceSection Id.
  [ManagementGroupId <String>]: Azure Management Group ID.
  [Name <String>]: Enrollment Account name.
  [ProductName <String>]: Invoice Id.
  [ReservationId <String>]: Id of the reservation
  [ReservationOrderId <String>]: Order Id of the reservation
  [Scope <String>]: The scope associated with usage details operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope. For subscription, billing account, department, enrollment account and management group, you can also add billing period to the scope using '/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'. For e.g. to specify billing period at department scope use '/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'
  [SubscriptionId <String>]: Azure Subscription ID.
  [TransferName <String>]: Transfer Name.
 
PARAMETER <IBudget>: A budget resource.
  Amount <Decimal>: The total amount of cost to track with the budget
  Category <CategoryType>: The category of the budget, whether the budget tracks cost or usage.
  TimeGrain <TimeGrainType>: The time covered by a budget. Tracking of the amount will be reset based on the time grain.
  TimePeriodStartDate <DateTime>: The start date for the budget.
  [ETag <String>]: eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.
  [FilterMeter <String[]>]: The list of filters on meters (GUID), mandatory for budgets of usage category.
  [FilterResource <String[]>]: The list of filters on resources.
  [FilterResourceGroup <String[]>]: The list of filters on resource groups, allowed at subscription level only.
  [FilterTag <IFiltersTags>]: The dictionary of filters on tags.
    [(Any) <String[]>]: This indicates any property can be added to this object.
  [Notification <IBudgetPropertiesNotifications>]: Dictionary of notifications associated with the budget. Budget can have up to five notifications.
    [(Any) <INotification>]: This indicates any property can be added to this object.
  [TimePeriodEndDate <DateTime?>]: The end date for the budget. If not provided, we default this to 10 years from the start date.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/new-azbudget
#>

function New-AzBudget {
[Alias('New-AzConsumptionBudget')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget])]
[CmdletBinding(DefaultParameterSetName='CreateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Create', Mandatory)]
    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Alias('BudgetName')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Budget Name.
    ${Name},

    [Parameter(ParameterSetName='Create', Mandatory)]
    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # The scope associated with budget operations.
    # This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope, '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for billingProfile scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for invoiceSection scope.
    ${Scope},

    [Parameter(ParameterSetName='CreateViaIdentity', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity]
    # Identity Parameter
    # To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
    ${InputObject},

    [Parameter(ParameterSetName='Create', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='CreateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget]
    # A budget resource.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.Decimal]
    # The total amount of cost to track with the budget
    ${Amount},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.CategoryType])]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.CategoryType]
    # The category of the budget, whether the budget tracks cost or usage.
    ${Category},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # eTag of the resource.
    # To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.
    ${ETag},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String[]]
    # The list of filters on meters (GUID), mandatory for budgets of usage category.
    ${FilterMeter},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String[]]
    # The list of filters on resources.
    ${FilterResource},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String[]]
    # The list of filters on resource groups, allowed at subscription level only.
    ${FilterResourceGroup},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180630.IFiltersTags]))]
    [System.Collections.Hashtable]
    # The dictionary of filters on tags.
    ${FilterTag},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180630.IBudgetPropertiesNotifications]))]
    [System.Collections.Hashtable]
    # Dictionary of notifications associated with the budget.
    # Budget can have up to five notifications.
    ${Notification},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.TimeGrainType])]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.TimeGrainType]
    # The time covered by a budget.
    # Tracking of the amount will be reset based on the time grain.
    ${TimeGrain},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The end date for the budget.
    # If not provided, we default this to 10 years from the start date.
    ${TimePeriodEndDate},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The start date for the budget.
    ${TimePeriodStartDate},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            Create = 'Az.Billing.private\New-AzBudget_Create';
            CreateExpanded = 'Az.Billing.private\New-AzBudget_CreateExpanded';
            CreateViaIdentity = 'Az.Billing.private\New-AzBudget_CreateViaIdentity';
            CreateViaIdentityExpanded = 'Az.Billing.private\New-AzBudget_CreateViaIdentityExpanded';
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
The operation to delete a budget.
.Description
The operation to delete a budget.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/remove-azbudget
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity
.Outputs
System.Boolean
.Notes
COMPLEX PARAMETER PROPERTIES
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
INPUTOBJECT <IBillingIdentity>: Identity Parameter
  [AgreementName <String>]: Agreement Id.
  [BillingAccountId <String>]: BillingAccount ID
  [BillingAccountName <String>]: Billing Account Id.
  [BillingPeriodName <String>]: Billing Period Name.
  [BillingProfileId <String>]: Billing Profile Id.
  [BillingProfileName <String>]: Billing Profile Id.
  [BillingRoleAssignmentName <String>]: role assignment id.
  [BillingRoleDefinitionName <String>]: role definition id.
  [BillingSubscriptionName <String>]: Billing Subscription Id.
  [BudgetName <String>]: Budget Name.
  [CustomerName <String>]: Customer Id.
  [DepartmentName <String>]: Department Id.
  [EnrollmentAccountName <String>]: Enrollment Account Id.
  [Id <String>]: Resource identity path
  [InvoiceName <String>]: The name of an invoice resource.
  [InvoiceSectionId <String>]: Invoice Section Id.
  [InvoiceSectionName <String>]: InvoiceSection Id.
  [ManagementGroupId <String>]: Azure Management Group ID.
  [Name <String>]: Enrollment Account name.
  [ProductName <String>]: Invoice Id.
  [ReservationId <String>]: Id of the reservation
  [ReservationOrderId <String>]: Order Id of the reservation
  [Scope <String>]: The scope associated with usage details operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope. For subscription, billing account, department, enrollment account and management group, you can also add billing period to the scope using '/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'. For e.g. to specify billing period at department scope use '/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}'
  [SubscriptionId <String>]: Azure Subscription ID.
  [TransferName <String>]: Transfer Name.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/remove-azbudget
#>

function Remove-AzBudget {
[Alias('Remove-AzConsumptionBudget')]
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Alias('BudgetName')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Budget Name.
    ${Name},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # The scope associated with budget operations.
    # This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope, '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for billingProfile scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for invoiceSection scope.
    ${Scope},

    [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.IBillingIdentity]
    # Identity Parameter
    # To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
    ${InputObject},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            Delete = 'Az.Billing.private\Remove-AzBudget_Delete';
            DeleteViaIdentity = 'Az.Billing.private\Remove-AzBudget_DeleteViaIdentity';
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------
<#
.Synopsis
The operation to create or update a budget.
Update operation requires latest eTag to be set in the request mandatorily.
You may obtain the latest eTag by performing a get operation.
Create operation does not require eTag.
.Description
The operation to create or update a budget.
Update operation requires latest eTag to be set in the request mandatorily.
You may obtain the latest eTag by performing a get operation.
Create operation does not require eTag.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.billing/set-azbudget
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget
.Notes
COMPLEX PARAMETER PROPERTIES
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
PARAMETER <IBudget>: A budget resource.
  Amount <Decimal>: The total amount of cost to track with the budget
  Category <CategoryType>: The category of the budget, whether the budget tracks cost or usage.
  TimeGrain <TimeGrainType>: The time covered by a budget. Tracking of the amount will be reset based on the time grain.
  TimePeriodStartDate <DateTime>: The start date for the budget.
  [ETag <String>]: eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.
  [FilterMeter <String[]>]: The list of filters on meters (GUID), mandatory for budgets of usage category.
  [FilterResource <String[]>]: The list of filters on resources.
  [FilterResourceGroup <String[]>]: The list of filters on resource groups, allowed at subscription level only.
  [FilterTag <IFiltersTags>]: The dictionary of filters on tags.
    [(Any) <String[]>]: This indicates any property can be added to this object.
  [Notification <IBudgetPropertiesNotifications>]: Dictionary of notifications associated with the budget. Budget can have up to five notifications.
    [(Any) <INotification>]: This indicates any property can be added to this object.
  [TimePeriodEndDate <DateTime?>]: The end date for the budget. If not provided, we default this to 10 years from the start date.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.billing/set-azbudget
#>

function Set-AzBudget {
[Alias('Set-AzConsumptionBudget')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.Billing.Profile('latest-2019-04-30')]
param(
    [Parameter(Mandatory)]
    [Alias('BudgetName')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # Budget Name.
    ${Name},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Path')]
    [System.String]
    # The scope associated with budget operations.
    # This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope, '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for billingProfile scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for invoiceSection scope.
    ${Scope},

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api201901.IBudget]
    # A budget resource.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.Decimal]
    # The total amount of cost to track with the budget
    ${Amount},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.CategoryType])]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.CategoryType]
    # The category of the budget, whether the budget tracks cost or usage.
    ${Category},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String]
    # eTag of the resource.
    # To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.
    ${ETag},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String[]]
    # The list of filters on meters (GUID), mandatory for budgets of usage category.
    ${FilterMeter},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String[]]
    # The list of filters on resources.
    ${FilterResource},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.String[]]
    # The list of filters on resource groups, allowed at subscription level only.
    ${FilterResourceGroup},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180630.IFiltersTags]))]
    [System.Collections.Hashtable]
    # The dictionary of filters on tags.
    ${FilterTag},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.Billing.Models.Api20180630.IBudgetPropertiesNotifications]))]
    [System.Collections.Hashtable]
    # Dictionary of notifications associated with the budget.
    # Budget can have up to five notifications.
    ${Notification},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.TimeGrainType])]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Support.TimeGrainType]
    # The time covered by a budget.
    # Tracking of the amount will be reset based on the time grain.
    ${TimeGrain},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The end date for the budget.
    # If not provided, we default this to 10 years from the start date.
    ${TimePeriodEndDate},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Body')]
    [System.DateTime]
    # The start date for the budget.
    ${TimePeriodStartDate},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Billing.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            Update = 'Az.Billing.private\Set-AzBudget_Update';
            UpdateExpanded = 'Az.Billing.private\Set-AzBudget_UpdateExpanded';
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# SIG # Begin signature block
# MIIjhgYJKoZIhvcNAQcCoIIjdzCCI3MCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDu5QgHSFPZAHPi
# nU9kboKFw6AhyHLJEu4lKQVfnvOZBaCCDYEwggX/MIID56ADAgECAhMzAAABUZ6N
# j0Bxow5BAAAAAAFRMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
# bmcgUENBIDIwMTEwHhcNMTkwNTAyMjEzNzQ2WhcNMjAwNTAyMjEzNzQ2WjB0MQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQCVWsaGaUcdNB7xVcNmdfZiVBhYFGcn8KMqxgNIvOZWNH9JYQLuhHhmJ5RWISy1
# oey3zTuxqLbkHAdmbeU8NFMo49Pv71MgIS9IG/EtqwOH7upan+lIq6NOcw5fO6Os
# +12R0Q28MzGn+3y7F2mKDnopVu0sEufy453gxz16M8bAw4+QXuv7+fR9WzRJ2CpU
# 62wQKYiFQMfew6Vh5fuPoXloN3k6+Qlz7zgcT4YRmxzx7jMVpP/uvK6sZcBxQ3Wg
# B/WkyXHgxaY19IAzLq2QiPiX2YryiR5EsYBq35BP7U15DlZtpSs2wIYTkkDBxhPJ
# IDJgowZu5GyhHdqrst3OjkSRAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE
# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUV4Iarkq57esagu6FUBb270Zijc8w
# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1
# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU0MTM1MB8GA1UdIwQYMBaAFEhu
# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu
# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w
# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3
# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx
# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAWg+A
# rS4Anq7KrogslIQnoMHSXUPr/RqOIhJX+32ObuY3MFvdlRElbSsSJxrRy/OCCZdS
# se+f2AqQ+F/2aYwBDmUQbeMB8n0pYLZnOPifqe78RBH2fVZsvXxyfizbHubWWoUf
# NW/FJlZlLXwJmF3BoL8E2p09K3hagwz/otcKtQ1+Q4+DaOYXWleqJrJUsnHs9UiL
# crVF0leL/Q1V5bshob2OTlZq0qzSdrMDLWdhyrUOxnZ+ojZ7UdTY4VnCuogbZ9Zs
# 9syJbg7ZUS9SVgYkowRsWv5jV4lbqTD+tG4FzhOwcRQwdb6A8zp2Nnd+s7VdCuYF
# sGgI41ucD8oxVfcAMjF9YX5N2s4mltkqnUe3/htVrnxKKDAwSYliaux2L7gKw+bD
# 1kEZ/5ozLRnJ3jjDkomTrPctokY/KaZ1qub0NUnmOKH+3xUK/plWJK8BOQYuU7gK
# YH7Yy9WSKNlP7pKj6i417+3Na/frInjnBkKRCJ/eYTvBH+s5guezpfQWtU4bNo/j
# 8Qw2vpTQ9w7flhH78Rmwd319+YTmhv7TcxDbWlyteaj4RK2wk3pY1oSz2JPE5PNu
# Nmd9Gmf6oePZgy7Ii9JLLq8SnULV7b+IP0UXRY9q+GdRjM2AEX6msZvvPCIoG0aY
# HQu9wZsKEK2jqvWi8/xdeeeSI9FN6K1w4oVQM4Mwggd6MIIFYqADAgECAgphDpDS
# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0
# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla
# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT
# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB
# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG
# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S
# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz
# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7
# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u
# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33
# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl
# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP
# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB
# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF
# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM
# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ
# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud
# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO
# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0
# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB
# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw
# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA
# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY
# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj
# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd
# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ
# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf
# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ
# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j
# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B
# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96
# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7
# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I
# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVWzCCFVcCAQEwgZUwfjELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z
# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAVGejY9AcaMOQQAAAAABUTAN
# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgvMye6+ZD
# Q/ie4hNPKGEsCbnX533AWm7It/assmKIIfAwQgYKKwYBBAGCNwIBDDE0MDKgFIAS
# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN
# BgkqhkiG9w0BAQEFAASCAQAWwPxi9byr3LNS7s0csOGKGSs9pWCCcfV+qi6TilBR
# d48i7YyVrM8g70B4qbuvGC+CEYVXuI3W8X/mtcYhYkzLFrPRllEijlsvp+DWRwXC
# KU5wjzzmD28d83eg1Qp6krqDSEy9X0pGgc9mrk9Xp7Yh0Az8vNN8c+rVmuJoGChQ
# MbdhXrzPwwQisdjhuD+GICvvo6hHua2N9ekc3V7WuZtY+AeQAkYBVRlcDvVkHaXj
# 3WjeuuiKJcJofpwv4sisoKiE+vk04SsfK4TuCk87oML3nlBPluLoWBSRWhGf22UI
# HcMB1DU5wkfXyOvG3/lTYB1To050PpcMHPVBpb83QBXloYIS5TCCEuEGCisGAQQB
# gjcDAwExghLRMIISzQYJKoZIhvcNAQcCoIISvjCCEroCAQMxDzANBglghkgBZQME
# AgEFADCCAVEGCyqGSIb3DQEJEAEEoIIBQASCATwwggE4AgEBBgorBgEEAYRZCgMB
# MDEwDQYJYIZIAWUDBAIBBQAEINXt8oAk/YOJ6FyayqNDrXXrqubpTkEUpoLrrkt7
# YXe/AgZd++aGbQwYEzIwMTkxMjIwMDkyNzExLjMwMlowBIACAfSggdCkgc0wgcox
# CzAJBgNVBAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQg
# SXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1Mg
# RVNOOkFCNDEtNEIyNy1GMDI2MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt
# cCBTZXJ2aWNloIIOPDCCBPEwggPZoAMCAQICEzMAAAEN9TOH6tCOOPUAAAAAAQ0w
# DQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
# dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcN
# MTkxMDIzMjMxOTE3WhcNMjEwMTIxMjMxOTE3WjCByjELMAkGA1UEBhMCVVMxCzAJ
# BgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
# Q29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlv
# bnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046QUI0MS00QjI3LUYw
# MjYxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2UwggEiMA0G
# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDE3k4EhxWF+98O+mG7sZJN4c8eIOwg
# eXe3POp0xB7bwBYCirM3s3yb9wnhcGLPredsZiNDhRTAzn6wOV1WmGfcQkcZLWIQ
# lIrUo2F67FvHoghsN/a+Rf2cOtIPrWAYOC3BuzqCLQrNdPcipwC6sLHBGh02LMZP
# QiGSY1wYX3Du4O3pMZ7wXCLd/QeblYmL76M/RPOIF/G9UaJoTMz69NinuT5oeQHJ
# 1UVdhv72nsY3CPGQjAnP1iFo3Erg2U6MY0Bclp3wIa9yAPVCFFKNUB8/Rtzd6mIg
# Y0ZDTID/+pTK90zB/P3qGGrRVGBVVhTp7W/FuTDbxlmhhfjpFRbHFB29AgMBAAGj
# ggEbMIIBFzAdBgNVHQ4EFgQULwP4d4IXmyC2Tj+c3DbtvcJCcJ4wHwYDVR0jBBgw
# FoAU1WM6XIoxkPNDe3xGG8UzaFqFbVUwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDov
# L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljVGltU3RhUENB
# XzIwMTAtMDctMDEuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0
# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNUaW1TdGFQQ0FfMjAx
# MC0wNy0wMS5jcnQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDCDAN
# BgkqhkiG9w0BAQsFAAOCAQEAfr144CeI2Nh6J3WzJLQZCZPp2V/zTBOCi9td2OyE
# oHcID2wuybAefuLQoe/RIKG+Cbqs8x21SFIjZOJ4OugK8iyYulPPKEdMA9EIKsky
# ZkFDiPyAnXJnO+m07UmKAeo86VbjRlx3W3XnqT9juhZu56Tvsz+B423yPeOODPXM
# +ZWJPc2wbJvB/JevsOgewjbLm9ldkr1MDTlUafVi8eb/4WZWF8aXShrm12ZiYj8o
# SHPSNm7nc10KvGzQVQvjSWlL15c45cCOxJmFdPrLuefuFIkw3ns9dggI4yaiQjJu
# +WMxmkj6LwWL0W7/5Y2RZdVFWznuPoSZhy0dR/uPTmlrbjCCBnEwggRZoAMCAQIC
# CmEJgSoAAAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRp
# ZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEwMDcwMTIxMzY1NVoXDTI1MDcwMTIx
# NDY1NVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG
# A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3
# DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX9fp/aZRrdFQQ1aUKAIKF
# ++18aEssX8XD5WHCdrc+Zitb8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRD
# DNdNuDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhHhjKEHnRhZ5FfgVSx
# z5NMksHEpl3RYRNuKMYa+YaAu99h/EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1
# rL2KQk1AUdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpOBpG2iAg16Hgc
# sOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB
# 4jAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xGG8UzaFqF
# bVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
# EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYD
# VR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwv
# cHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB
# BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j
# ZXJ0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCB
# kjCBjwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jv
# c29mdC5jb20vUEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQe
# MiAdAEwAZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQA
# LiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUx
# vs8F4qn++ldtGTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5U4zM9GAS
# inbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1
# L3mBZdmptWvkx872ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+tuWO
# M7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlKcWOdeyFtw5yjojz6f32WapB4
# pm3S4Zz5Hfw42JT0xqUKloakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45
# V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4TtxCd9ddJgiCGHasFAeb73x
# 4QDf5zEHpJM692VHeOj4qEir995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEe
# gPsbiSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3yKxO2ii4sanblrKn
# QqLJzxlBTeCG+SqaoxFmMNO7dDJL32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp
# 3lfB0d4wwP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWzfjUeCLraNtvT
# X4/edIhJEqGCAs4wggI3AgEBMIH4oYHQpIHNMIHKMQswCQYDVQQGEwJVUzELMAkG
# A1UECBMCV0ExEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
# b3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9u
# cyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpBQjQxLTRCMjctRjAy
# NjElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcG
# BSsOAwIaAxUAAGqNWwFmvha9bjT2LKh6oLM1uUqggYMwgYCkfjB8MQswCQYDVQQG
# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
# VGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOGnDcUwIhgPMjAx
# OTEyMjAxNzA3MTdaGA8yMDE5MTIyMTE3MDcxN1owdzA9BgorBgEEAYRZCgQBMS8w
# LTAKAgUA4acNxQIBADAKAgEAAgIcDAIB/zAHAgEAAgIRiTAKAgUA4ahfRQIBADA2
# BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIB
# AAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAE+R5PtSSB6BeWMVUu3E65QJ673gHcM9
# khM/UYeEpfl0PGbt8MNXrbNkcwf7FXGATu+JIZRXrjRe25ECtBOYFzsjRk8a+lRR
# FPlZ7HB29pRkswr8FvvjwSWhVBz4o9a3O6DgJd77XRhYU6CS/GZVFAkuZ36KCKyK
# 3KYVUfkqGq9PMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
# dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB
# IDIwMTACEzMAAAEN9TOH6tCOOPUAAAAAAQ0wDQYJYIZIAWUDBAIBBQCgggFKMBoG
# CSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQg9ADcfgqi
# IBHbvDH4891JdHnvmePh0098NeOk+T6IwIowgfoGCyqGSIb3DQEJEAIvMYHqMIHn
# MIHkMIG9BCBgFKNq56HFRaxCu02D+8o0oS9XReJCIS3hjR/7q1qkKTCBmDCBgKR+
# MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT
# HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAABDfUzh+rQjjj1AAAA
# AAENMCIEIEN2Ev+sWR47KhW7e69/dhfD/lWFz79B8vCxcy6c00ymMA0GCSqGSIb3
# DQEBCwUABIIBAHWKxvVBVQOblrkTZFfnj8zooKY+L2XUIADB0QIAkHNhr54NO4ln
# geGX8dU4MabHy9MXHHGXhfumIpMCfeZjvTLcXX+T1TQpy7kHjwholOzCXqwP4zoQ
# YCGtek5XQfmRXfUv8yr6EjkM9fCABAyfz6pkh8T+WmL7fpPQE2NqgXy8NPZWPlX/
# ig3pxcXWAG/jnegrZHyIAgZiI7kwNSmuF0F0PHjcyR6RYbu3XM7X/svFCa7s9JSp
# rfSMtkjqShl8DnKntPUdz5VtXHDpDUbuy9aULyWgFiLV4PZtHiV6pll9jd/af9yJ
# PRTd4DMFfMcgdWEuiWvz49MLcBYx8zc7KXs=
# SIG # End signature block