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
Requests that a backup of the specified certificate be downloaded to the client.
All versions of the certificate will be downloaded.
This operation requires the certificates/backup permission.
.Description
Requests that a backup of the specified certificate be downloaded to the client.
All versions of the certificate will be downloaded.
This operation requires the certificates/backup permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azkeyvaultcertificate
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azkeyvaultcertificate
#>

function Backup-AzKeyVaultCertificate {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Backup', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Backup', Mandatory)]
    [Alias('CertificateName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate.
    ${Name},

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

    [Parameter(Mandatory)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Path to write output file to
    ${OutFile},

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

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Backup = 'Az.KeyVault.private\Backup-AzKeyVaultCertificate_Backup';
            BackupViaIdentity = 'Az.KeyVault.private\Backup-AzKeyVaultCertificate_BackupViaIdentity';
        }
        $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 Key Backup operation exports a key from Azure Key Vault in a protected form.
Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself.
The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance.
The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault.
Individual versions of a key cannot be backed up.
BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area.
For example, a backup from the US geographical area cannot be restored in an EU geographical area.
This operation requires the key/backup permission.
.Description
The Key Backup operation exports a key from Azure Key Vault in a protected form.
Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself.
The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance.
The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault.
Individual versions of a key cannot be backed up.
BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area.
For example, a backup from the US geographical area cannot be restored in an EU geographical area.
This operation requires the key/backup permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azkeyvaultkey
#>

function Backup-AzKeyVaultKey {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Backup', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Backup', Mandatory)]
    [Alias('KeyName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the key.
    ${Name},

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

    [Parameter(Mandatory)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Path to write output file to
    ${OutFile},

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

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Backup = 'Az.KeyVault.private\Backup-AzKeyVaultKey_Backup';
            BackupViaIdentity = 'Az.KeyVault.private\Backup-AzKeyVaultKey_BackupViaIdentity';
        }
        $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
Requests that a backup of the specified secret be downloaded to the client.
All versions of the secret will be downloaded.
This operation requires the secrets/backup permission.
.Description
Requests that a backup of the specified secret be downloaded to the client.
All versions of the secret will be downloaded.
This operation requires the secrets/backup permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azkeyvaultsecret
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azkeyvaultsecret
#>

function Backup-AzKeyVaultSecret {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Backup', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Backup', Mandatory)]
    [Alias('SecretName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the secret.
    ${Name},

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

    [Parameter(Mandatory)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Path to write output file to
    ${OutFile},

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

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Backup = 'Az.KeyVault.private\Backup-AzKeyVaultSecret_Backup';
            BackupViaIdentity = 'Az.KeyVault.private\Backup-AzKeyVaultSecret_BackupViaIdentity';
        }
        $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
Requests that a backup of the specified storage account be downloaded to the client.
This operation requires the storage/backup permission.
.Description
Requests that a backup of the specified storage account be downloaded to the client.
This operation requires the storage/backup permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azkeyvaultstorageaccount
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azkeyvaultstorageaccount
#>

function Backup-AzKeyVaultStorageAccount {
[Alias('Backup-AzKeyVaultManagedStorageAccount')]
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Backup', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Backup', Mandatory)]
    [Alias('StorageAccountName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${Name},

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

    [Parameter(Mandatory)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Path to write output file to
    ${OutFile},

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

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Backup = 'Az.KeyVault.private\Backup-AzKeyVaultStorageAccount_Backup';
            BackupViaIdentity = 'Az.KeyVault.private\Backup-AzKeyVaultStorageAccount_BackupViaIdentity';
        }
        $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 GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault.
This operation requires the certificates/manageissuers/getissuers permission.
.Description
The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault.
This operation requires the certificates/manageissuers/getissuers permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificateissuer
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateIssuerItem
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IIssuerBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificateissuer
#>

function Get-AzKeyVaultCertificateIssuer {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateIssuerItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IIssuerBundle])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the issuer.
    ${IssuerName},

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

    [Parameter(ParameterSetName='Get')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return in a page.
    # If not specified the service will return up to 25 results.
    ${MaxResult},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultCertificateIssuer_Get';
            Get1 = 'Az.KeyVault.private\Get-AzKeyVaultCertificateIssuer_Get1';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultCertificateIssuer_GetViaIdentity';
        }
        $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 creation operation associated with a specified certificate.
This operation requires the certificates/get permission.
.Description
Gets the creation operation associated with a specified certificate.
This operation requires the certificates/get permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificateoperation
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperation
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificateoperation
#>

function Get-AzKeyVaultCertificateOperation {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperation])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate.
    ${CertificateName},

    [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultCertificateOperation_Get';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultCertificateOperation_GetViaIdentity';
        }
        $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 GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault.
This operation requires the certificates/get permission.
.Description
The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault.
This operation requires the certificates/get permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificatepolicy
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificatePolicy
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificatepolicy
#>

function Get-AzKeyVaultCertificatePolicy {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificatePolicy])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate in a given key vault.
    ${CertificateName},

    [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultCertificatePolicy_Get';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultCertificatePolicy_GetViaIdentity';
        }
        $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 GetCertificateVersions operation returns the versions of a certificate in the specified key vault.
This operation requires the certificates/list permission.
.Description
The GetCertificateVersions operation returns the versions of a certificate in the specified key vault.
This operation requires the certificates/list permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificateversion
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateItem
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificateversion
#>

function Get-AzKeyVaultCertificateVersion {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateItem])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate.
    ${CertificateName},

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

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return in a page.
    # If not specified the service will return up to 25 results.
    ${MaxResult},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultCertificateVersion_Get';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultCertificateVersion_GetViaIdentity';
        }
        $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 information about a specific certificate.
This operation requires the certificates/get permission.
.Description
Gets information about a specific certificate.
This operation requires the certificates/get permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificate
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedCertificateBundle
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedCertificateItem
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificate
#>

function Get-AzKeyVaultCertificate {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedCertificateItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedCertificateBundle])]
[CmdletBinding(DefaultParameterSetName='ListDeleted', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Alias('CertificateName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate in the given vault.
    ${Name},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Alias('CertificateVersion')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The version of the certificate.
    ${Version},

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

    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Parameter(ParameterSetName='ListDeleted', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that deleted key vault certificates should be returned.
    ${InRemovedState},

    [Parameter(ParameterSetName='ListDeleted')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return in a page.
    # If not specified the service will return up to 25 results.
    ${MaxResult},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultCertificate_Get';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultCertificate_GetViaIdentity';
            GetDeleted = 'Az.KeyVault.custom\Get-AzKeyVaultCertificate';
            ListDeleted = 'Az.KeyVault.custom\Get-AzKeyVaultCertificate';
        }
        $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 full key identifier, attributes, and tags are provided in the response.
This operation requires the keys/list permission.
.Description
The full key identifier, attributes, and tags are provided in the response.
This operation requires the keys/list permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultkeyversion
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyItem
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultkeyversion
#>

function Get-AzKeyVaultKeyVersion {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyItem])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the key.
    ${KeyName},

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

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return in a page.
    # If not specified the service will return up to 25 results.
    ${MaxResult},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultKeyVersion_Get';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultKeyVersion_GetViaIdentity';
        }
        $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 get key operation is applicable to all key types.
If the requested key is symmetric, then no key material is released in the response.
This operation requires the keys/get permission.
.Description
The get key operation is applicable to all key types.
If the requested key is symmetric, then no key material is released in the response.
This operation requires the keys/get permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedKeyBundle
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedKeyItem
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyItem
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultkey
#>

function Get-AzKeyVaultKey {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedKeyItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedKeyBundle])]
[CmdletBinding(DefaultParameterSetName='Get1', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Alias('KeyName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the key to get.
    ${Name},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Alias('KeyVersion')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # Adding the version parameter retrieves a specific version of a key.
    ${Version},

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

    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Parameter(ParameterSetName='ListDeleted', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that deleted key vault key should be returned.
    ${InRemovedState},

    [Parameter(ParameterSetName='Get1')]
    [Parameter(ParameterSetName='ListDeleted')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return in a page.
    # If not specified the service will return up to 25 results.
    ${MaxResult},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultKey_Get';
            Get1 = 'Az.KeyVault.private\Get-AzKeyVaultKey_Get1';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultKey_GetViaIdentity';
            GetDeleted = 'Az.KeyVault.custom\Get-AzKeyVaultKey';
            ListDeleted = 'Az.KeyVault.custom\Get-AzKeyVaultKey';
        }
        $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 full secret identifier and attributes are provided in the response.
No values are returned for the secrets.
This operations requires the secrets/list permission.
.Description
The full secret identifier and attributes are provided in the response.
No values are returned for the secrets.
This operations requires the secrets/list permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultsecretversion
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretItem
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultsecretversion
#>

function Get-AzKeyVaultSecretVersion {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretItem])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the secret.
    ${SecretName},

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

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return in a page.
    # If not specified, the service will return up to 25 results.
    ${MaxResult},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultSecretVersion_Get';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultSecretVersion_GetViaIdentity';
        }
        $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 GET operation is applicable to any secret stored in Azure Key Vault.
This operation requires the secrets/get permission.
.Description
The GET operation is applicable to any secret stored in Azure Key Vault.
This operation requires the secrets/get permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultsecret
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedSecretBundle
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedSecretItem
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretItem
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultsecret
#>

function Get-AzKeyVaultSecret {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedSecretItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedSecretBundle])]
[CmdletBinding(DefaultParameterSetName='Get1', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Alias('SecretName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the secret.
    ${Name},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Alias('SecretVersion')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The version of the secret.
    ${Version},

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

    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Parameter(ParameterSetName='ListDeleted', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that deleted key vault secrets should be returned.
    ${InRemovedState},

    [Parameter(ParameterSetName='Get1')]
    [Parameter(ParameterSetName='ListDeleted')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return in a page.
    # If not specified, the service will return up to 25 results.
    ${MaxResult},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultSecret_Get';
            Get1 = 'Az.KeyVault.private\Get-AzKeyVaultSecret_Get1';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultSecret_GetViaIdentity';
            GetDeleted = 'Az.KeyVault.custom\Get-AzKeyVaultSecret';
            ListDeleted = 'Az.KeyVault.custom\Get-AzKeyVaultSecret';
        }
        $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
List storage accounts managed by the specified key vault.
This operation requires the storage/list permission.
.Description
List storage accounts managed by the specified key vault.
This operation requires the storage/list permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultstorageaccount
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountItem
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IDeletedStorageAccountItem
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IDeletedStorageBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultstorageaccount
#>

function Get-AzKeyVaultStorageAccount {
[Alias('Get-AzKeyVaultManagedStorageAccount')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IDeletedStorageAccountItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IDeletedStorageBundle])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Alias('StorageAccountName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${Name},

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

    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Parameter(ParameterSetName='ListDeleted', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that deleted key vault storage accounts should be returned.
    ${InRemovedState},

    [Parameter(ParameterSetName='Get')]
    [Parameter(ParameterSetName='ListDeleted')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return in a page.
    # If not specified the service will return up to 25 results.
    ${MaxResult},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultStorageAccount_Get';
            Get1 = 'Az.KeyVault.private\Get-AzKeyVaultStorageAccount_Get1';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultStorageAccount_GetViaIdentity';
            GetDeleted = 'Az.KeyVault.custom\Get-AzKeyVaultStorageAccount';
            ListDeleted = 'Az.KeyVault.custom\Get-AzKeyVaultStorageAccount';
        }
        $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
List storage SAS definitions for the given storage account.
This operation requires the storage/listsas permission.
.Description
List storage SAS definitions for the given storage account.
This operation requires the storage/listsas permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultstoragesasdefinition
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionBundle
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionItem
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IDeletedSasDefinitionBundle
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IDeletedSasDefinitionItem
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultstoragesasdefinition
#>

function Get-AzKeyVaultStorageSasDefinition {
[Alias('Get-AzKeyVaultManagedStorageSasDefinition')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionBundle], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IDeletedSasDefinitionItem], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IDeletedSasDefinitionBundle])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Get', Mandatory)]
    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Parameter(ParameterSetName='GetDeleted1', Mandatory)]
    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${StorageAccountName},

    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Parameter(ParameterSetName='GetDeleted1', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the SAS definition.
    ${SasDefinitionName},

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

    [Parameter(ParameterSetName='GetDeleted1', Mandatory)]
    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that deleted key vault storage SAS definitions should be returned.
    ${InRemovedState},

    [Parameter(ParameterSetName='Get')]
    [Parameter(ParameterSetName='GetViaIdentity')]
    [Parameter(ParameterSetName='GetDeleted')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return in a page.
    # If not specified the service will return up to 25 results.
    ${MaxResult},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Get-AzKeyVaultStorageSasDefinition_Get';
            Get1 = 'Az.KeyVault.private\Get-AzKeyVaultStorageSasDefinition_Get1';
            GetViaIdentity = 'Az.KeyVault.private\Get-AzKeyVaultStorageSasDefinition_GetViaIdentity';
            GetViaIdentity1 = 'Az.KeyVault.private\Get-AzKeyVaultStorageSasDefinition_GetViaIdentity1';
            GetDeleted1 = 'Az.KeyVault.custom\Get-AzKeyVaultStorageSasDefinition';
            GetDeleted = 'Az.KeyVault.custom\Get-AzKeyVaultStorageSasDefinition';
        }
        $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 specified Azure key vault.
.Description
Gets the specified Azure key vault.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvault
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IDeletedVault
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVault
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvault
#>

function Get-AzKeyVault {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVault], [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IDeletedVault])]
[CmdletBinding(DefaultParameterSetName='List3', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Alias('VaultName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the vault.
    ${Name},

    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Parameter(ParameterSetName='List2', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the Resource Group to which the vault belongs.
    ${ResourceGroupName},

    [Parameter(ParameterSetName='Get1')]
    [Parameter(ParameterSetName='List2')]
    [Parameter(ParameterSetName='List3')]
    [Parameter(ParameterSetName='GetDeleted')]
    [Parameter(ParameterSetName='ListDeleted')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String[]]
    # Subscription credentials which uniquely identify Microsoft Azure subscription.
    # The subscription ID forms part of the URI for every service call.
    ${SubscriptionId},

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

    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The location of the deleted vault.
    ${Location},

    [Parameter(ParameterSetName='GetDeleted', Mandatory)]
    [Parameter(ParameterSetName='ListDeleted', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that deleted key vaults should be returned.
    ${InRemovedState},

    [Parameter(ParameterSetName='List2')]
    [Parameter(ParameterSetName='List3')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Query')]
    [System.Int32]
    # Maximum number of results to return.
    ${Top},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Get1 = 'Az.KeyVault.private\Get-AzKeyVault_Get1';
            GetViaIdentity1 = 'Az.KeyVault.private\Get-AzKeyVault_GetViaIdentity1';
            List2 = 'Az.KeyVault.private\Get-AzKeyVault_List2';
            List3 = 'Az.KeyVault.private\Get-AzKeyVault_List3';
            GetDeleted = 'Az.KeyVault.custom\Get-AzKeyVault';
            ListDeleted = 'Az.KeyVault.custom\Get-AzKeyVault';
        }
        if (('Get1', 'List2', 'List3', 'GetDeleted', 'ListDeleted') -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
Imports an existing valid certificate, containing a private key, into Azure Key Vault.
The certificate to be imported can be in either PFX or PEM format.
If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates.
This operation requires the certificates/import permission.
.Description
Imports an existing valid certificate, containing a private key, into Azure Key Vault.
The certificate to be imported can be in either PFX or PEM format.
If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates.
This operation requires the certificates/import permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/import-azkeyvaultcertificate
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateImportParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <ICertificateImportParameters>: The certificate import parameters.
  Base64EncodedCertificate <String>: Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [Password <String>]: If the private key in base64EncodedCertificate is encrypted, the password used for encryption.
  [Policy <ICertificatePolicy>]: The management policy for the certificate.
    [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
    [AttributeExpire <DateTime?>]: Expiry date in UTC.
    [AttributeNotBefore <DateTime?>]: Not before date in UTC.
    [IssuerCertificateType <String>]: Type of certificate to be requested from the issuer provider.
    [IssuerName <String>]: Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.
    [KeyPropExportable <Boolean?>]: Indicates if the private key can be exported.
    [KeyPropKeySize <Int32?>]: The key size in bits. For example: 2048, 3072, or 4096 for RSA.
    [KeyPropKeyType <String>]: The key type.
    [KeyPropReuseKey <Boolean?>]: Indicates if the same key pair will be used on certificate renewal.
    [LifetimeAction <ILifetimeAction[]>]: Actions that will be performed by Key Vault over the lifetime of a certificate.
      [ActionType <ActionType?>]: The type of the action.
      [TriggerDaysBeforeExpiry <Int32?>]: Days before expiry to attempt renewal. Value should be between 1 and validity_in_months multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 * 27).
      [TriggerLifetimePercentage <Int32?>]: Percentage of lifetime at which to trigger. Value should be between 1 and 99.
    [SanDnsName <String[]>]: Domain names.
    [SanEmail <String[]>]: Email addresses.
    [SanUpn <String[]>]: User principal names.
    [SecretPropContentType <String>]: The media type (MIME type).
    [X509PropEku <String[]>]: The enhanced key usage.
    [X509PropKeyUsage <KeyUsageType[]>]: List of key usages.
    [X509PropSubject <String>]: The subject name. Should be a valid X509 distinguished Name.
    [X509PropValidityInMonth <Int32?>]: The duration that the certificate is valid in months.
  [Tag <ICertificateImportParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
 
POLICY <ICertificatePolicy>: The management policy for the certificate.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [IssuerCertificateType <String>]: Type of certificate to be requested from the issuer provider.
  [IssuerName <String>]: Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.
  [KeyPropExportable <Boolean?>]: Indicates if the private key can be exported.
  [KeyPropKeySize <Int32?>]: The key size in bits. For example: 2048, 3072, or 4096 for RSA.
  [KeyPropKeyType <String>]: The key type.
  [KeyPropReuseKey <Boolean?>]: Indicates if the same key pair will be used on certificate renewal.
  [LifetimeAction <ILifetimeAction[]>]: Actions that will be performed by Key Vault over the lifetime of a certificate.
    [ActionType <ActionType?>]: The type of the action.
    [TriggerDaysBeforeExpiry <Int32?>]: Days before expiry to attempt renewal. Value should be between 1 and validity_in_months multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 * 27).
    [TriggerLifetimePercentage <Int32?>]: Percentage of lifetime at which to trigger. Value should be between 1 and 99.
  [SanDnsName <String[]>]: Domain names.
  [SanEmail <String[]>]: Email addresses.
  [SanUpn <String[]>]: User principal names.
  [SecretPropContentType <String>]: The media type (MIME type).
  [X509PropEku <String[]>]: The enhanced key usage.
  [X509PropKeyUsage <KeyUsageType[]>]: List of key usages.
  [X509PropSubject <String>]: The subject name. Should be a valid X509 distinguished Name.
  [X509PropValidityInMonth <Int32?>]: The duration that the certificate is valid in months.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/import-azkeyvaultcertificate
#>

function Import-AzKeyVaultCertificate {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle])]
[CmdletBinding(DefaultParameterSetName='ImportExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Import', Mandatory)]
    [Parameter(ParameterSetName='ImportExpanded', Mandatory)]
    [Alias('CertificateName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate.
    ${Name},

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

    [Parameter(ParameterSetName='Import', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='ImportViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateImportParameters]
    # The certificate import parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='ImportExpanded', Mandatory)]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Base64 encoded representation of the certificate object to import.
    # This certificate needs to contain the private key.
    ${CertificateString},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # If the private key in base64EncodedCertificate is encrypted, the password used for encryption.
    ${Password},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificatePolicy]
    # The management policy for the certificate.
    # To construct, see NOTES section for POLICY properties and create a hash table.
    ${Policy},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateImportParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Import = 'Az.KeyVault.private\Import-AzKeyVaultCertificate_Import';
            ImportExpanded = 'Az.KeyVault.private\Import-AzKeyVaultCertificate_ImportExpanded';
            ImportViaIdentity = 'Az.KeyVault.private\Import-AzKeyVaultCertificate_ImportViaIdentity';
            ImportViaIdentityExpanded = 'Az.KeyVault.private\Import-AzKeyVaultCertificate_ImportViaIdentityExpanded';
        }
        $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 import key operation may be used to import any key type into an Azure Key Vault.
If the named key already exists, Azure Key Vault creates a new version of the key.
This operation requires the keys/import permission.
.Description
The import key operation may be used to import any key type into an Azure Key Vault.
If the named key already exists, Azure Key Vault creates a new version of the key.
This operation requires the keys/import permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/import-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyImportParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <IKeyImportParameters>: The key import parameters.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [Hsm <Boolean?>]: Whether to import as a hardware key (HSM) or software key.
  [KeyCrv <JsonWebKeyCurveName?>]: Elliptic curve name. For valid values, see JsonWebKeyCurveName.
  [KeyD <Byte[]>]: RSA private exponent, or the D component of an EC private key.
  [KeyDp <Byte[]>]: RSA private key parameter.
  [KeyDq <Byte[]>]: RSA private key parameter.
  [KeyE <Byte[]>]: RSA public exponent.
  [KeyK <Byte[]>]: Symmetric key.
  [KeyKid <String>]: Key identifier.
  [KeyKty <JsonWebKeyType?>]: JsonWebKey key type (kty).
  [KeyN <Byte[]>]: RSA modulus.
  [KeyOp <String[]>]:
  [KeyP <Byte[]>]: RSA secret prime.
  [KeyQ <Byte[]>]: RSA secret prime, with p < q.
  [KeyQi <Byte[]>]: RSA private key parameter.
  [KeyT <Byte[]>]: HSM Token, used with 'Bring Your Own Key'.
  [KeyX <Byte[]>]: X component of an EC public key.
  [KeyY <Byte[]>]: Y component of an EC public key.
  [Tag <IKeyImportParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/import-azkeyvaultkey
#>

function Import-AzKeyVaultKey {
[Alias('Add-AzKeyVaultKey')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle])]
[CmdletBinding(DefaultParameterSetName='ImportExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Import', Mandatory)]
    [Parameter(ParameterSetName='ImportExpanded', Mandatory)]
    [Alias('KeyName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # Name for the imported key.
    ${Name},

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

    [Parameter(ParameterSetName='Import', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='ImportViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyImportParameters]
    # The key import parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Whether to import as a hardware key (HSM) or software key.
    ${Hsm},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyCurveName])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyCurveName]
    # Elliptic curve name.
    # For valid values, see JsonWebKeyCurveName.
    ${KeyCrv},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyD (RSA private exponent, or the D component of an EC private key.)
    ${KeyDInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyDp (RSA private key parameter.)
    ${KeyDpInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyDq (RSA private key parameter.)
    ${KeyDqInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyE (RSA public exponent.)
    ${KeyEInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyK (Symmetric key.)
    ${KeyKInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Key identifier.
    ${KeyKid},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyType])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyType]
    # JsonWebKey key type (kty).
    ${KeyKty},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyN (RSA modulus.)
    ${KeyNInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String[]]
    # HELP MESSAGE MISSING
    ${KeyOp},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyP (RSA secret prime.)
    ${KeyPInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyQ (RSA secret prime, with p < q.)
    ${KeyQInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyQi (RSA private key parameter.)
    ${KeyQiInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyT (HSM Token, used with 'Bring Your Own Key'.)
    ${KeyTInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyX (X component of an EC public key.)
    ${KeyXInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyY (Y component of an EC public key.)
    ${KeyYInputFile},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='ImportExpanded')]
    [Parameter(ParameterSetName='ImportViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyImportParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Import = 'Az.KeyVault.private\Import-AzKeyVaultKey_Import';
            ImportExpanded = 'Az.KeyVault.private\Import-AzKeyVaultKey_ImportExpanded';
            ImportViaIdentity = 'Az.KeyVault.private\Import-AzKeyVaultKey_ImportViaIdentity';
            ImportViaIdentityExpanded = 'Az.KeyVault.private\Import-AzKeyVaultKey_ImportViaIdentityExpanded';
        }
        $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 MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service.
This operation requires the certificates/create permission.
.Description
The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service.
This operation requires the certificates/create permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/merge-azkeyvaultcertificate
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateMergeParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <ICertificateMergeParameters>: The certificate merge parameters
  X509Certificate <Byte[][]>: The certificate or the certificate chain to merge.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [Tag <ICertificateMergeParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/merge-azkeyvaultcertificate
#>

function Merge-AzKeyVaultCertificate {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle])]
[CmdletBinding(DefaultParameterSetName='MergeExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Merge', Mandatory)]
    [Parameter(ParameterSetName='MergeExpanded', Mandatory)]
    [Alias('CertificateName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate.
    ${Name},

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

    [Parameter(ParameterSetName='Merge', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='MergeViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateMergeParameters]
    # The certificate merge parameters
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='MergeExpanded', Mandatory)]
    [Parameter(ParameterSetName='MergeViaIdentityExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(Required, PossibleTypes=([System.Byte[]]))]
    [System.Byte[][]]
    # The certificate or the certificate chain to merge.
    ${X509Certificate},

    [Parameter(ParameterSetName='MergeExpanded')]
    [Parameter(ParameterSetName='MergeViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='MergeExpanded')]
    [Parameter(ParameterSetName='MergeViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='MergeExpanded')]
    [Parameter(ParameterSetName='MergeViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='MergeExpanded')]
    [Parameter(ParameterSetName='MergeViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateMergeParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Merge = 'Az.KeyVault.private\Merge-AzKeyVaultCertificate_Merge';
            MergeExpanded = 'Az.KeyVault.private\Merge-AzKeyVaultCertificate_MergeExpanded';
            MergeViaIdentity = 'Az.KeyVault.private\Merge-AzKeyVaultCertificate_MergeViaIdentity';
            MergeViaIdentityExpanded = 'Az.KeyVault.private\Merge-AzKeyVaultCertificate_MergeViaIdentityExpanded';
        }
        $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
If this is the first version, the certificate resource is created.
This operation requires the certificates/create permission.
.Description
If this is the first version, the certificate resource is created.
This operation requires the certificates/create permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azkeyvaultcertificate
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateCreateParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperation
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <ICertificateCreateParameters>: The certificate create parameters.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [Policy <ICertificatePolicy>]: The management policy for the certificate.
    [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
    [AttributeExpire <DateTime?>]: Expiry date in UTC.
    [AttributeNotBefore <DateTime?>]: Not before date in UTC.
    [IssuerCertificateType <String>]: Type of certificate to be requested from the issuer provider.
    [IssuerName <String>]: Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.
    [KeyPropExportable <Boolean?>]: Indicates if the private key can be exported.
    [KeyPropKeySize <Int32?>]: The key size in bits. For example: 2048, 3072, or 4096 for RSA.
    [KeyPropKeyType <String>]: The key type.
    [KeyPropReuseKey <Boolean?>]: Indicates if the same key pair will be used on certificate renewal.
    [LifetimeAction <ILifetimeAction[]>]: Actions that will be performed by Key Vault over the lifetime of a certificate.
      [ActionType <ActionType?>]: The type of the action.
      [TriggerDaysBeforeExpiry <Int32?>]: Days before expiry to attempt renewal. Value should be between 1 and validity_in_months multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 * 27).
      [TriggerLifetimePercentage <Int32?>]: Percentage of lifetime at which to trigger. Value should be between 1 and 99.
    [SanDnsName <String[]>]: Domain names.
    [SanEmail <String[]>]: Email addresses.
    [SanUpn <String[]>]: User principal names.
    [SecretPropContentType <String>]: The media type (MIME type).
    [X509PropEku <String[]>]: The enhanced key usage.
    [X509PropKeyUsage <KeyUsageType[]>]: List of key usages.
    [X509PropSubject <String>]: The subject name. Should be a valid X509 distinguished Name.
    [X509PropValidityInMonth <Int32?>]: The duration that the certificate is valid in months.
  [Tag <ICertificateCreateParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
 
POLICY <ICertificatePolicy>: The management policy for the certificate.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [IssuerCertificateType <String>]: Type of certificate to be requested from the issuer provider.
  [IssuerName <String>]: Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.
  [KeyPropExportable <Boolean?>]: Indicates if the private key can be exported.
  [KeyPropKeySize <Int32?>]: The key size in bits. For example: 2048, 3072, or 4096 for RSA.
  [KeyPropKeyType <String>]: The key type.
  [KeyPropReuseKey <Boolean?>]: Indicates if the same key pair will be used on certificate renewal.
  [LifetimeAction <ILifetimeAction[]>]: Actions that will be performed by Key Vault over the lifetime of a certificate.
    [ActionType <ActionType?>]: The type of the action.
    [TriggerDaysBeforeExpiry <Int32?>]: Days before expiry to attempt renewal. Value should be between 1 and validity_in_months multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 * 27).
    [TriggerLifetimePercentage <Int32?>]: Percentage of lifetime at which to trigger. Value should be between 1 and 99.
  [SanDnsName <String[]>]: Domain names.
  [SanEmail <String[]>]: Email addresses.
  [SanUpn <String[]>]: User principal names.
  [SecretPropContentType <String>]: The media type (MIME type).
  [X509PropEku <String[]>]: The enhanced key usage.
  [X509PropKeyUsage <KeyUsageType[]>]: List of key usages.
  [X509PropSubject <String>]: The subject name. Should be a valid X509 distinguished Name.
  [X509PropValidityInMonth <Int32?>]: The duration that the certificate is valid in months.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azkeyvaultcertificate
#>

function New-AzKeyVaultCertificate {
[Alias('Add-AzKeyVaultCertificate')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperation])]
[CmdletBinding(DefaultParameterSetName='CreateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Create', Mandatory)]
    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Alias('CertificateName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate.
    ${Name},

    [Parameter(ParameterSetName='CreateViaIdentity', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateCreateParameters]
    # The certificate create parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Alias('CertificatePolicy')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificatePolicy]
    # The management policy for the certificate.
    # To construct, see NOTES section for POLICY properties and create a hash table.
    ${Policy},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateCreateParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\New-AzKeyVaultCertificate_Create';
            CreateExpanded = 'Az.KeyVault.private\New-AzKeyVaultCertificate_CreateExpanded';
            CreateViaIdentity = 'Az.KeyVault.private\New-AzKeyVaultCertificate_CreateViaIdentity';
            CreateViaIdentityExpanded = 'Az.KeyVault.private\New-AzKeyVaultCertificate_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 create key operation can be used to create any key type in Azure Key Vault.
If the named key already exists, Azure Key Vault creates a new version of the key.
It requires the keys/create permission.
.Description
The create key operation can be used to create any key type in Azure Key Vault.
If the named key already exists, Azure Key Vault creates a new version of the key.
It requires the keys/create permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyCreateParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <IKeyCreateParameters>: The key create parameters.
  Kty <JsonWebKeyType>: The type of key to create. For valid values, see JsonWebKeyType.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [Crv <JsonWebKeyCurveName?>]: Elliptic curve name. For valid values, see JsonWebKeyCurveName.
  [KeyOp <JsonWebKeyOperation[]>]:
  [KeySize <Int32?>]: The key size in bits. For example: 2048, 3072, or 4096 for RSA.
  [Tag <IKeyCreateParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azkeyvaultkey
#>

function New-AzKeyVaultKey {
[Alias('Add-AzKeyVaultKey')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle])]
[CmdletBinding(DefaultParameterSetName='CreateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Create', Mandatory)]
    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Alias('KeyName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name for the new key.
    # The system will generate the version name for the new key.
    ${Name},

    [Parameter(ParameterSetName='CreateViaIdentity', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyCreateParameters]
    # The key create parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded', Mandatory)]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyType])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyType]
    # The type of key to create.
    # For valid values, see JsonWebKeyType.
    ${Kty},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyCurveName])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyCurveName]
    # Elliptic curve name.
    # For valid values, see JsonWebKeyCurveName.
    ${Crv},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyOperation])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyOperation[]]
    # HELP MESSAGE MISSING
    ${KeyOp},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Int32]
    # The key size in bits.
    # For example: 2048, 3072, or 4096 for RSA.
    ${KeySize},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyCreateParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\New-AzKeyVaultKey_Create';
            CreateExpanded = 'Az.KeyVault.private\New-AzKeyVaultKey_CreateExpanded';
            CreateViaIdentity = 'Az.KeyVault.private\New-AzKeyVaultKey_CreateViaIdentity';
            CreateViaIdentityExpanded = 'Az.KeyVault.private\New-AzKeyVaultKey_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
Regenerates the specified key value for the given storage account.
This operation requires the storage/regeneratekey permission.
.Description
Regenerates the specified key value for the given storage account.
This operation requires the storage/regeneratekey permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azkeyvaultstorageaccountkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountRegenerteKeyParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <IStorageAccountRegenerteKeyParameters>: The storage account key regenerate parameters.
  KeyName <String>: The storage account key name.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azkeyvaultstorageaccountkey
#>

function New-AzKeyVaultStorageAccountKey {
[Alias('Update-AzKeyVaultManagedStorageAccountKey')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle])]
[CmdletBinding(DefaultParameterSetName='RegenerateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Regenerate', Mandatory)]
    [Parameter(ParameterSetName='RegenerateExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${StorageAccountName},

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

    [Parameter(ParameterSetName='Regenerate', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='RegenerateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountRegenerteKeyParameters]
    # The storage account key regenerate parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='RegenerateExpanded', Mandatory)]
    [Parameter(ParameterSetName='RegenerateViaIdentityExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The storage account key name.
    ${KeyName},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Regenerate = 'Az.KeyVault.private\New-AzKeyVaultStorageAccountKey_Regenerate';
            RegenerateExpanded = 'Az.KeyVault.private\New-AzKeyVaultStorageAccountKey_RegenerateExpanded';
            RegenerateViaIdentity = 'Az.KeyVault.private\New-AzKeyVaultStorageAccountKey_RegenerateViaIdentity';
            RegenerateViaIdentityExpanded = 'Az.KeyVault.private\New-AzKeyVaultStorageAccountKey_RegenerateViaIdentityExpanded';
        }
        $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
Create or update a key vault in the specified subscription.
.Description
Create or update a key vault in the specified subscription.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azkeyvault
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultCreateOrUpdateParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVault
.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.
 
ACCESSPOLICY <IAccessPolicyEntry[]>: An array of 0 to 16 identities that have access to the key vault. All identities in the array must use the same tenant ID as the key vault's tenant ID. When `createMode` is set to `recover`, access policies are not required. Otherwise, access policies are required.
  ObjectId <String>: The object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies.
  TenantId <String>: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
  [ApplicationId <String>]: Application ID of the client making request on behalf of a principal
  [PermissionCertificate <CertificatePermissions[]>]: Permissions to certificates
  [PermissionKey <KeyPermissions[]>]: Permissions to keys
  [PermissionSecret <SecretPermissions[]>]: Permissions to secrets
  [PermissionStorage <StoragePermissions[]>]: Permissions to storage accounts
 
INPUTOBJECT <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
NETWORKACLSIPRULE <IIPRule[]>: The list of IP address rules.
  Value <String>: An IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that start with 124.56.78).
 
NETWORKACLSVIRTUALNETWORKRULE <IVirtualNetworkRule[]>: The list of virtual network rules.
  Id <String>: Full resource id of a vnet subnet, such as '/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1'.
 
PARAMETER <IVaultCreateOrUpdateParameters>: Parameters for creating or updating a vault
  Location <String>: The supported Azure location where the key vault should be created.
  SkuName <SkuName>: SKU name to specify whether the key vault is a standard vault or a premium vault.
  TenantId <String>: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
  [AccessPolicy <IAccessPolicyEntry[]>]: An array of 0 to 16 identities that have access to the key vault. All identities in the array must use the same tenant ID as the key vault's tenant ID. When `createMode` is set to `recover`, access policies are not required. Otherwise, access policies are required.
    ObjectId <String>: The object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies.
    TenantId <String>: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
    [ApplicationId <String>]: Application ID of the client making request on behalf of a principal
    [PermissionCertificate <CertificatePermissions[]>]: Permissions to certificates
    [PermissionKey <KeyPermissions[]>]: Permissions to keys
    [PermissionSecret <SecretPermissions[]>]: Permissions to secrets
    [PermissionStorage <StoragePermissions[]>]: Permissions to storage accounts
  [CreateMode <CreateMode?>]: The vault's create mode to indicate whether the vault need to be recovered or not.
  [EnablePurgeProtection <Boolean?>]: Property specifying whether protection against purge is enabled for this vault. Setting this property to true activates protection against purge for this vault and its content - only the Key Vault service may initiate a hard, irrecoverable deletion. The setting is effective only if soft delete is also enabled. Enabling this functionality is irreversible - that is, the property does not accept false as its value.
  [EnableSoftDelete <Boolean?>]: Property to specify whether the 'soft delete' functionality is enabled for this key vault. It does not accept false value.
  [EnabledForDeployment <Boolean?>]: Property to specify whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.
  [EnabledForDiskEncryption <Boolean?>]: Property to specify whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.
  [EnabledForTemplateDeployment <Boolean?>]: Property to specify whether Azure Resource Manager is permitted to retrieve secrets from the key vault.
  [NetworkAclsBypass <NetworkRuleBypassOptions?>]: Tells what traffic can bypass network rules. This can be 'AzureServices' or 'None'. If not specified the default is 'AzureServices'.
  [NetworkAclsDefaultAction <NetworkRuleAction?>]: The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated.
  [NetworkAclsIPRule <IIPRule[]>]: The list of IP address rules.
    Value <String>: An IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that start with 124.56.78).
  [NetworkAclsVirtualNetworkRule <IVirtualNetworkRule[]>]: The list of virtual network rules.
    Id <String>: Full resource id of a vnet subnet, such as '/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1'.
  [Tag <IVaultCreateOrUpdateParametersTags>]: The tags that will be assigned to the key vault.
    [(Any) <String>]: This indicates any property can be added to this object.
  [VaultUri <String>]: The URI of the vault for performing operations on keys and secrets.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azkeyvault
#>

function New-AzKeyVault {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVault])]
[CmdletBinding(DefaultParameterSetName='CreateExpandedDefault', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Create', Mandatory)]
    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Parameter(ParameterSetName='CreateExpandedDefault', Mandatory)]
    [Alias('VaultName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # Name of the vault
    ${Name},

    [Parameter(ParameterSetName='Create', Mandatory)]
    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Parameter(ParameterSetName='CreateExpandedDefault', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the Resource Group to which the server belongs.
    ${ResourceGroupName},

    [Parameter(ParameterSetName='Create')]
    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String]
    # Subscription credentials which uniquely identify Microsoft Azure subscription.
    # The subscription ID forms part of the URI for every service call.
    ${SubscriptionId},

    [Parameter(ParameterSetName='CreateViaIdentity', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultCreateOrUpdateParameters]
    # Parameters for creating or updating a vault
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded', Mandatory)]
    [Parameter(ParameterSetName='CreateExpandedDefault', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The supported Azure location where the key vault should be created.
    ${Location},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded', Mandatory)]
    [Parameter(ParameterSetName='CreateExpandedDefault', Mandatory)]
    [Alias('Sku')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.SkuName])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.SkuName]
    # SKU name to specify whether the key vault is a standard vault or a premium vault.
    ${SkuName},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded', Mandatory)]
    [Parameter(ParameterSetName='CreateExpandedDefault', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
    ${TenantId},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IAccessPolicyEntry[]]
    # An array of 0 to 16 identities that have access to the key vault.
    # All identities in the array must use the same tenant ID as the key vault's tenant ID.
    # When `createMode` is set to `recover`, access policies are not required.
    # Otherwise, access policies are required.
    # To construct, see NOTES section for ACCESSPOLICY properties and create a hash table.
    ${AccessPolicy},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.CreateMode])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.CreateMode]
    # The vault's create mode to indicate whether the vault need to be recovered or not.
    ${CreateMode},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property specifying whether protection against purge is enabled for this vault.
    # Setting this property to true activates protection against purge for this vault and its content - only the Key Vault service may initiate a hard, irrecoverable deletion.
    # The setting is effective only if soft delete is also enabled.
    # Enabling this functionality is irreversible - that is, the property does not accept false as its value.
    ${EnablePurgeProtection},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property to specify whether the 'soft delete' functionality is enabled for this key vault.
    # It does not accept false value.
    ${EnableSoftDelete},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property to specify whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.
    ${EnabledForDeployment},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property to specify whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.
    ${EnabledForDiskEncryption},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property to specify whether Azure Resource Manager is permitted to retrieve secrets from the key vault.
    ${EnabledForTemplateDeployment},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.NetworkRuleBypassOptions])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.NetworkRuleBypassOptions]
    # Tells what traffic can bypass network rules.
    # This can be 'AzureServices' or 'None'.
    # If not specified the default is 'AzureServices'.
    ${NetworkAclsBypass},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.NetworkRuleAction])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.NetworkRuleAction]
    # The default action when no rule from ipRules and from virtualNetworkRules match.
    # This is only used after the bypass property has been evaluated.
    ${NetworkAclsDefaultAction},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IIPRule[]]
    # The list of IP address rules.
    # To construct, see NOTES section for NETWORKACLSIPRULE properties and create a hash table.
    ${NetworkAclsIPRule},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVirtualNetworkRule[]]
    # The list of virtual network rules.
    # To construct, see NOTES section for NETWORKACLSVIRTUALNETWORKRULE properties and create a hash table.
    ${NetworkAclsVirtualNetworkRule},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IVaultCreateOrUpdateParametersTags]))]
    [System.Collections.Hashtable]
    # The tags that will be assigned to the key vault.
    ${Tag},

    [Parameter(ParameterSetName='CreateExpanded')]
    [Parameter(ParameterSetName='CreateViaIdentityExpanded')]
    [Parameter(ParameterSetName='CreateExpandedDefault')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The URI of the vault for performing operations on keys and secrets.
    ${VaultUri},

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

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Run the command as a job
    ${AsJob},

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

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

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

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Run the command asynchronously
    ${NoWait},

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\New-AzKeyVault_Create';
            CreateExpanded = 'Az.KeyVault.private\New-AzKeyVault_CreateExpanded';
            CreateViaIdentity = 'Az.KeyVault.private\New-AzKeyVault_CreateViaIdentity';
            CreateViaIdentityExpanded = 'Az.KeyVault.private\New-AzKeyVault_CreateViaIdentityExpanded';
            CreateExpandedDefault = 'Az.KeyVault.custom\New-AzKeyVault_CreateExpandedDefault';
        }
        if (('Create', 'CreateExpanded', 'CreateExpandedDefault') -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
The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault.
Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used.
The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key.
This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material.
This operation requires the keys/encrypt permission.
.Description
The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault.
Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used.
The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key.
This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material.
This operation requires the keys/encrypt permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/protect-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyOperationsParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyOperationResult
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <IKeyOperationsParameters>: The key operations parameters.
  Algorithm <JsonWebKeyEncryptionAlgorithm>: algorithm identifier
  Value <Byte[]>:
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/protect-azkeyvaultkey
#>

function Protect-AzKeyVaultKey {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyOperationResult])]
[CmdletBinding(DefaultParameterSetName='EncryptExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Encrypt', Mandatory)]
    [Parameter(ParameterSetName='EncryptExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the key.
    ${KeyName},

    [Parameter(ParameterSetName='Encrypt', Mandatory)]
    [Parameter(ParameterSetName='EncryptExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The version of the key.
    ${KeyVersion},

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

    [Parameter(ParameterSetName='Encrypt', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='EncryptViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyOperationsParameters]
    # The key operations parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='EncryptExpanded', Mandatory)]
    [Parameter(ParameterSetName='EncryptViaIdentityExpanded', Mandatory)]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyEncryptionAlgorithm])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyEncryptionAlgorithm]
    # algorithm identifier
    ${Algorithm},

    [Parameter(ParameterSetName='EncryptExpanded', Mandatory)]
    [Parameter(ParameterSetName='EncryptViaIdentityExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for Value (HELP MESSAGE MISSING)
    ${InputFile},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Encrypt = 'Az.KeyVault.private\Protect-AzKeyVaultKey_Encrypt';
            EncryptExpanded = 'Az.KeyVault.private\Protect-AzKeyVaultKey_EncryptExpanded';
            EncryptViaIdentity = 'Az.KeyVault.private\Protect-AzKeyVaultKey_EncryptViaIdentity';
            EncryptViaIdentityExpanded = 'Az.KeyVault.private\Protect-AzKeyVaultKey_EncryptViaIdentityExpanded';
        }
        $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 DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault.
This operation requires the certificates/manageissuers/deleteissuers permission.
.Description
The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault.
This operation requires the certificates/manageissuers/deleteissuers permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultcertificateissuer
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IIssuerBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultcertificateissuer
#>

function Remove-AzKeyVaultCertificateIssuer {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IIssuerBundle])]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the issuer.
    ${IssuerName},

    [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Remove-AzKeyVaultCertificateIssuer_Delete';
            DeleteViaIdentity = 'Az.KeyVault.private\Remove-AzKeyVaultCertificateIssuer_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
Deletes the creation operation for a specified certificate that is in the process of being created.
The certificate is no longer created.
This operation requires the certificates/update permission.
.Description
Deletes the creation operation for a specified certificate that is in the process of being created.
The certificate is no longer created.
This operation requires the certificates/update permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultcertificateoperation
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperation
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultcertificateoperation
#>

function Remove-AzKeyVaultCertificateOperation {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperation])]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate.
    ${CertificateName},

    [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Remove-AzKeyVaultCertificateOperation_Delete';
            DeleteViaIdentity = 'Az.KeyVault.private\Remove-AzKeyVaultCertificateOperation_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
Deletes all versions of a certificate object along with its associated policy.
Delete certificate cannot be used to remove individual versions of a certificate object.
This operation requires the certificates/delete permission.
.Description
Deletes all versions of a certificate object along with its associated policy.
Delete certificate cannot be used to remove individual versions of a certificate object.
This operation requires the certificates/delete permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultcertificate
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedCertificateBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultcertificate
#>

function Remove-AzKeyVaultCertificate {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedCertificateBundle], [System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Alias('CertificateName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate.
    ${Name},

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

    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that the given deleted vault certificate should be purged.
    ${InRemovedState},

    [Parameter(ParameterSetName='Purge')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # When specified, PassThru will force the cmdlet return a 'bool' given that there isn't a return type by default.
    ${PassThru},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Remove-AzKeyVaultCertificate_Delete';
            DeleteViaIdentity = 'Az.KeyVault.private\Remove-AzKeyVaultCertificate_DeleteViaIdentity';
            Purge = 'Az.KeyVault.custom\Remove-AzKeyVaultCertificate_Purge';
        }
        $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 delete key operation cannot be used to remove individual versions of a key.
This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations.
This operation requires the keys/delete permission.
.Description
The delete key operation cannot be used to remove individual versions of a key.
This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations.
This operation requires the keys/delete permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedKeyBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultkey
#>

function Remove-AzKeyVaultKey {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedKeyBundle], [System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Alias('KeyName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the key to delete.
    ${Name},

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

    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that the given deleted vault key should be purged.
    ${InRemovedState},

    [Parameter(ParameterSetName='Purge')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # When specified, PassThru will force the cmdlet return a 'bool' given that there isn't a return type by default.
    ${PassThru},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Remove-AzKeyVaultKey_Delete';
            DeleteViaIdentity = 'Az.KeyVault.private\Remove-AzKeyVaultKey_DeleteViaIdentity';
            Purge = 'Az.KeyVault.custom\Remove-AzKeyVaultKey_Purge';
        }
        $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 DELETE operation applies to any secret stored in Azure Key Vault.
DELETE cannot be applied to an individual version of a secret.
This operation requires the secrets/delete permission.
.Description
The DELETE operation applies to any secret stored in Azure Key Vault.
DELETE cannot be applied to an individual version of a secret.
This operation requires the secrets/delete permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultsecret
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedSecretBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultsecret
#>

function Remove-AzKeyVaultSecret {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IDeletedSecretBundle], [System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Alias('SecretName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the secret.
    ${Name},

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

    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that the given deleted vault secret should be purged.
    ${InRemovedState},

    [Parameter(ParameterSetName='Purge')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # When specified, PassThru will force the cmdlet return a 'bool' given that there isn't a return type by default.
    ${PassThru},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Remove-AzKeyVaultSecret_Delete';
            DeleteViaIdentity = 'Az.KeyVault.private\Remove-AzKeyVaultSecret_DeleteViaIdentity';
            Purge = 'Az.KeyVault.custom\Remove-AzKeyVaultSecret_Purge';
        }
        $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
Deletes a storage account.
This operation requires the storage/delete permission.
.Description
Deletes a storage account.
This operation requires the storage/delete permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultstorageaccount
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultstorageaccount
#>

function Remove-AzKeyVaultStorageAccount {
[Alias('Remove-AzKeyVaultManagedStorageAccount')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle], [System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Alias('StorageAccountName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${Name},

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

    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that the given deleted vault storage account should be purged.
    ${InRemovedState},

    [Parameter(ParameterSetName='Purge')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # When specified, PassThru will force the cmdlet return a 'bool' given that there isn't a return type by default.
    ${PassThru},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Remove-AzKeyVaultStorageAccount_Delete';
            DeleteViaIdentity = 'Az.KeyVault.private\Remove-AzKeyVaultStorageAccount_DeleteViaIdentity';
            Purge = 'Az.KeyVault.custom\Remove-AzKeyVaultStorageAccount_Purge';
        }
        $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
Deletes a SAS definition from a specified storage account.
This operation requires the storage/deletesas permission.
.Description
Deletes a SAS definition from a specified storage account.
This operation requires the storage/deletesas permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultstoragesasdefinition
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultstoragesasdefinition
#>

function Remove-AzKeyVaultStorageSasDefinition {
[Alias('Remove-AzKeyVaultManagedStorageSasDefinition')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionBundle])]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the SAS definition.
    ${SasDefinitionName},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${StorageAccountName},

    [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Remove-AzKeyVaultStorageSasDefinition_Delete';
            DeleteViaIdentity = 'Az.KeyVault.private\Remove-AzKeyVaultStorageSasDefinition_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
Deletes the specified Azure key vault.
.Description
Deletes the specified Azure key vault.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvault
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvault
#>

function Remove-AzKeyVault {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Alias('VaultName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the vault to delete
    ${Name},

    [Parameter(ParameterSetName='Delete', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the Resource Group to which the vault belongs.
    ${ResourceGroupName},

    [Parameter(ParameterSetName='Delete')]
    [Parameter(ParameterSetName='Purge')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String]
    # Subscription credentials which uniquely identify Microsoft Azure subscription.
    # The subscription ID forms part of the URI for every service call.
    ${SubscriptionId},

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

    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The location of the soft-deleted vault.
    ${Location},

    [Parameter(ParameterSetName='Purge', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.Management.Automation.SwitchParameter]
    # Signals that the given deleted vault should be purged.
    ${InRemovedState},

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

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

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

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

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

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

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

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

    [Parameter(ParameterSetName='Purge')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Run the command as a job
    ${AsJob}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            Delete = 'Az.KeyVault.private\Remove-AzKeyVault_Delete';
            DeleteViaIdentity = 'Az.KeyVault.private\Remove-AzKeyVault_DeleteViaIdentity';
            Purge = 'Az.KeyVault.custom\Remove-AzKeyVault_Purge';
        }
        if (('Delete', 'Purge') -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
Restores a backed up certificate, and all its versions, to a vault.
This operation requires the certificates/restore permission.
.Description
Restores a backed up certificate, and all its versions, to a vault.
This operation requires the certificates/restore permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azkeyvaultcertificate
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.ICertificateRestoreParameters
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.ICertificateBundle
.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 <ICertificateRestoreParameters>: The certificate restore parameters.
  CertificateBundleBackup <Byte[]>: The backup blob associated with a certificate bundle.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azkeyvaultcertificate
#>

function Restore-AzKeyVaultCertificate {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.ICertificateBundle])]
[CmdletBinding(DefaultParameterSetName='RestoreExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Restore', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.ICertificateRestoreParameters]
    # The certificate restore parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='RestoreExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for CertificateBundleBackup (The backup blob associated with a certificate bundle.)
    ${CertificateBundleBackupInputFile},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Restore = 'Az.KeyVault.private\Restore-AzKeyVaultCertificate_Restore';
            RestoreExpanded = 'Az.KeyVault.private\Restore-AzKeyVaultCertificate_RestoreExpanded';
        }
        $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
Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies.
The RESTORE operation may be used to import a previously backed up key.
Individual versions of a key cannot be restored.
The key is restored in its entirety with the same key name as it had when it was backed up.
If the key name is not available in the target Key Vault, the RESTORE operation will be rejected.
While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault.
Restore will restore all versions and preserve version identifiers.
The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault.
This operation requires the keys/restore permission.
.Description
Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies.
The RESTORE operation may be used to import a previously backed up key.
Individual versions of a key cannot be restored.
The key is restored in its entirety with the same key name as it had when it was backed up.
If the key name is not available in the target Key Vault, the RESTORE operation will be rejected.
While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault.
Restore will restore all versions and preserve version identifiers.
The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault.
This operation requires the keys/restore permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyRestoreParameters
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle
.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 <IKeyRestoreParameters>: The key restore parameters.
  KeyBundleBackup <Byte[]>: The backup blob associated with a key bundle.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azkeyvaultkey
#>

function Restore-AzKeyVaultKey {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle])]
[CmdletBinding(DefaultParameterSetName='RestoreExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Restore', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyRestoreParameters]
    # The key restore parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='RestoreExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for KeyBundleBackup (The backup blob associated with a key bundle.)
    ${KeyBundleBackupInputFile},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Restore = 'Az.KeyVault.private\Restore-AzKeyVaultKey_Restore';
            RestoreExpanded = 'Az.KeyVault.private\Restore-AzKeyVaultKey_RestoreExpanded';
        }
        $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
Restores a backed up secret, and all its versions, to a vault.
This operation requires the secrets/restore permission.
.Description
Restores a backed up secret, and all its versions, to a vault.
This operation requires the secrets/restore permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azkeyvaultsecret
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretRestoreParameters
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle
.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 <ISecretRestoreParameters>: The secret restore parameters.
  SecretBundleBackup <Byte[]>: The backup blob associated with a secret bundle.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azkeyvaultsecret
#>

function Restore-AzKeyVaultSecret {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle])]
[CmdletBinding(DefaultParameterSetName='RestoreExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Restore', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretRestoreParameters]
    # The secret restore parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='RestoreExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for SecretBundleBackup (The backup blob associated with a secret bundle.)
    ${SecretBundleBackupInputFile},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Restore = 'Az.KeyVault.private\Restore-AzKeyVaultSecret_Restore';
            RestoreExpanded = 'Az.KeyVault.private\Restore-AzKeyVaultSecret_RestoreExpanded';
        }
        $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
Restores a backed up storage account to a vault.
This operation requires the storage/restore permission.
.Description
Restores a backed up storage account to a vault.
This operation requires the storage/restore permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azkeyvaultstorageaccount
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IStorageRestoreParameters
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IStorageBundle
.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 <IStorageRestoreParameters>: The secret restore parameters.
  StorageBundleBackup <Byte[]>: The backup blob associated with a storage account.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azkeyvaultstorageaccount
#>

function Restore-AzKeyVaultStorageAccount {
[Alias('Restore-AzKeyVaultManagedStorageAccount', 'Undo-AzKeyVaultManagedStorageAccountRemoval')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IStorageBundle])]
[CmdletBinding(DefaultParameterSetName='RestoreExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Restore', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IStorageRestoreParameters]
    # The secret restore parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='RestoreExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for StorageBundleBackup (The backup blob associated with a storage account.)
    ${StorageBundleBackupInputFile},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Restore = 'Az.KeyVault.private\Restore-AzKeyVaultStorageAccount_Restore';
            RestoreExpanded = 'Az.KeyVault.private\Restore-AzKeyVaultStorageAccount_RestoreExpanded';
        }
        $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
Update access policies in a key vault in the specified subscription.
.Description
Update access policies in a key vault in the specified subscription.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultaccesspolicy
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultAccessPolicyParameters
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultAccessPolicyParameters
.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.
 
ACCESSPOLICY <IAccessPolicyEntry[]>: An array of 0 to 16 identities that have access to the key vault. All identities in the array must use the same tenant ID as the key vault's tenant ID.
  ObjectId <String>: The object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies.
  TenantId <String>: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
  [ApplicationId <String>]: Application ID of the client making request on behalf of a principal
  [PermissionCertificate <CertificatePermissions[]>]: Permissions to certificates
  [PermissionKey <KeyPermissions[]>]: Permissions to keys
  [PermissionSecret <SecretPermissions[]>]: Permissions to secrets
  [PermissionStorage <StoragePermissions[]>]: Permissions to storage accounts
 
PARAMETER <IVaultAccessPolicyParameters>: Parameters for updating the access policy in a vault
  AccessPolicy <IAccessPolicyEntry[]>: An array of 0 to 16 identities that have access to the key vault. All identities in the array must use the same tenant ID as the key vault's tenant ID.
    ObjectId <String>: The object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies.
    TenantId <String>: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
    [ApplicationId <String>]: Application ID of the client making request on behalf of a principal
    [PermissionCertificate <CertificatePermissions[]>]: Permissions to certificates
    [PermissionKey <KeyPermissions[]>]: Permissions to keys
    [PermissionSecret <SecretPermissions[]>]: Permissions to secrets
    [PermissionStorage <StoragePermissions[]>]: Permissions to storage accounts
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultaccesspolicy
#>

function Set-AzKeyVaultAccessPolicy {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultAccessPolicyParameters])]
[CmdletBinding(DefaultParameterSetName='Update1', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter(Mandatory)]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.AccessPolicyUpdateKind])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.AccessPolicyUpdateKind]
    # Name of the operation
    ${OperationKind},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the Resource Group to which the vault belongs.
    ${ResourceGroupName},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # Name of the vault
    ${VaultName},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String]
    # Subscription credentials which uniquely identify Microsoft Azure subscription.
    # The subscription ID forms part of the URI for every service call.
    ${SubscriptionId},

    [Parameter(ParameterSetName='Update1', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultAccessPolicyParameters]
    # Parameters for updating the access policy in a vault
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='UpdateExpanded1', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IAccessPolicyEntry[]]
    # An array of 0 to 16 identities that have access to the key vault.
    # All identities in the array must use the same tenant ID as the key vault's tenant ID.
    # To construct, see NOTES section for ACCESSPOLICY properties and create a hash table.
    ${AccessPolicy},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Update1 = 'Az.KeyVault.private\Set-AzKeyVaultAccessPolicy_Update1';
            UpdateExpanded1 = 'Az.KeyVault.private\Set-AzKeyVaultAccessPolicy_UpdateExpanded1';
        }
        if (('Update1', 'UpdateExpanded1') -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
The SetCertificateIssuer operation adds or updates the specified certificate issuer.
This operation requires the certificates/setissuers permission.
.Description
The SetCertificateIssuer operation adds or updates the specified certificate issuer.
This operation requires the certificates/setissuers permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultcertificateissuer
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateIssuerSetParameters
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IIssuerBundle
.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.
 
ORGDETAILADMINDETAIL <IAdministratorDetails[]>: Details of the organization administrator.
  [EmailAddress <String>]: Email address.
  [FirstName <String>]: First name.
  [LastName <String>]: Last name.
  [Phone <String>]: Phone number.
 
PARAMETER <ICertificateIssuerSetParameters>: The certificate issuer set parameters.
  Provider <String>: The issuer provider.
  [AttributeEnabled <Boolean?>]: Determines whether the issuer is enabled.
  [CredentialsAccountId <String>]: The user name/account name/account id.
  [CredentialsPassword <String>]: The password/secret/account key.
  [OrgDetailAdminDetail <IAdministratorDetails[]>]: Details of the organization administrator.
    [EmailAddress <String>]: Email address.
    [FirstName <String>]: First name.
    [LastName <String>]: Last name.
    [Phone <String>]: Phone number.
  [OrgDetailId <String>]: Id of the organization.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultcertificateissuer
#>

function Set-AzKeyVaultCertificateIssuer {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IIssuerBundle])]
[CmdletBinding(DefaultParameterSetName='SetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the issuer.
    ${IssuerName},

    [Parameter(ParameterSetName='Set', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateIssuerSetParameters]
    # The certificate issuer set parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='SetExpanded', Mandatory)]
    [Alias('IssuerProvider')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The issuer provider.
    ${Provider},

    [Parameter(ParameterSetName='SetExpanded')]
    [Alias('AccountId')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The user name/account name/account id.
    ${CredentialsAccountId},

    [Parameter(ParameterSetName='SetExpanded')]
    [Alias('ApiKey')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The password/secret/account key.
    ${CredentialsPassword},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the issuer is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IAdministratorDetails[]]
    # Details of the organization administrator.
    # To construct, see NOTES section for ORGDETAILADMINDETAIL properties and create a hash table.
    ${OrgDetailAdminDetail},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Id of the organization.
    ${OrgDetailId},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Set = 'Az.KeyVault.private\Set-AzKeyVaultCertificateIssuer_Set';
            SetExpanded = 'Az.KeyVault.private\Set-AzKeyVaultCertificateIssuer_SetExpanded';
        }
        $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 SET operation adds a secret to the Azure Key Vault.
If the named secret already exists, Azure Key Vault creates a new version of that secret.
This operation requires the secrets/set permission.
.Description
The SET operation adds a secret to the Azure Key Vault.
If the named secret already exists, Azure Key Vault creates a new version of that secret.
This operation requires the secrets/set permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultsecret
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretSetParameters
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle
.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 <ISecretSetParameters>: The secret set parameters.
  Value <String>: The value of the secret.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [ContentType <String>]: Type of the secret value such as a password.
  [Tag <ISecretSetParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultsecret
#>

function Set-AzKeyVaultSecret {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle])]
[CmdletBinding(DefaultParameterSetName='SetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(Mandatory)]
    [Alias('SecretName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the secret.
    ${Name},

    [Parameter(ParameterSetName='Set', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretSetParameters]
    # The secret set parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='SetExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The value of the secret.
    ${SecretValue},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Type of the secret value such as a password.
    ${ContentType},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretSetParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Set = 'Az.KeyVault.private\Set-AzKeyVaultSecret_Set';
            SetExpanded = 'Az.KeyVault.private\Set-AzKeyVaultSecret_SetExpanded';
        }
        $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
Creates or updates a new storage account.
This operation requires the storage/set permission.
.Description
Creates or updates a new storage account.
This operation requires the storage/set permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultstorageaccount
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountCreateParameters
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle
.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 <IStorageAccountCreateParameters>: The storage account create parameters.
  ActiveKeyName <String>: Current active storage account key name.
  AutoRegenerateKey <Boolean>: whether keyvault should manage the storage account for the user.
  ResourceId <String>: Storage account resource id.
  [AttributeEnabled <Boolean?>]: the enabled state of the object.
  [RegenerationPeriod <String>]: The key regeneration time duration specified in ISO-8601 format.
  [Tag <IStorageAccountCreateParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultstorageaccount
#>

function Set-AzKeyVaultStorageAccount {
[Alias('Add-AzKeyVaultManagedStorageAccount')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle])]
[CmdletBinding(DefaultParameterSetName='SetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(Mandatory)]
    [Alias('StorageAccountName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${Name},

    [Parameter(ParameterSetName='Set', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountCreateParameters]
    # The storage account create parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='SetExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Current active storage account key name.
    ${ActiveKeyName},

    [Parameter(ParameterSetName='SetExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # whether keyvault should manage the storage account for the user.
    ${AutoRegenerateKey},

    [Parameter(ParameterSetName='SetExpanded', Mandatory)]
    [Alias('AccountResourceId')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Storage account resource id.
    ${ResourceId},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # the enabled state of the object.
    ${Enabled},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The key regeneration time duration specified in ISO-8601 format.
    ${RegenerationPeriod},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountCreateParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Set = 'Az.KeyVault.private\Set-AzKeyVaultStorageAccount_Set';
            SetExpanded = 'Az.KeyVault.private\Set-AzKeyVaultStorageAccount_SetExpanded';
        }
        $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
Creates or updates a new SAS definition for the specified storage account.
This operation requires the storage/setsas permission.
.Description
Creates or updates a new SAS definition for the specified storage account.
This operation requires the storage/setsas permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultstoragesasdefinition
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionCreateParameters
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionBundle
.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 <ISasDefinitionCreateParameters>: The SAS definition create parameters.
  Parameter <ISasDefinitionCreateParameters1>: Sas definition creation metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
  [AttributeEnabled <Boolean?>]: the enabled state of the object.
  [Tag <ISasDefinitionCreateParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultstoragesasdefinition
#>

function Set-AzKeyVaultStorageSasDefinition {
[Alias('Set-AzKeyVaultManagedStorageSasDefinition')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionBundle])]
[CmdletBinding(DefaultParameterSetName='SetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the SAS definition.
    ${SasDefinitionName},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${StorageAccountName},

    [Parameter(ParameterSetName='Set', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionCreateParameters]
    # The SAS definition create parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='SetExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(Required, PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionCreateParameters1]))]
    [System.Collections.Hashtable]
    # Sas definition creation metadata in the form of key-value pairs.
    ${DefinitionMetadata},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # the enabled state of the object.
    ${Enabled},

    [Parameter(ParameterSetName='SetExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionCreateParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Set = 'Az.KeyVault.private\Set-AzKeyVaultStorageSasDefinition_Set';
            SetExpanded = 'Az.KeyVault.private\Set-AzKeyVaultStorageSasDefinition_SetExpanded';
        }
        $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 VERIFY operation is applicable to symmetric keys stored in Azure Key Vault.
VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key.
This operation requires the keys/verify permission.
.Description
The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault.
VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key.
This operation requires the keys/verify permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/test-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyVerifyParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <IKeyVerifyParameters>: The key verify parameters.
  Algorithm <JsonWebKeySignatureAlgorithm>: The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm.
  Digest <Byte[]>: The digest used for signing.
  Signature <Byte[]>: The signature to be verified.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/test-azkeyvaultkey
#>

function Test-AzKeyVaultKey {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='VerifyExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Verify', Mandatory)]
    [Parameter(ParameterSetName='VerifyExpanded', Mandatory)]
    [Alias('KeyName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the key.
    ${Name},

    [Parameter(ParameterSetName='Verify', Mandatory)]
    [Parameter(ParameterSetName='VerifyExpanded', Mandatory)]
    [Alias('KeyVersion')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The version of the key.
    ${Version},

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

    [Parameter(ParameterSetName='Verify', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='VerifyViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyVerifyParameters]
    # The key verify parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='VerifyExpanded', Mandatory)]
    [Parameter(ParameterSetName='VerifyViaIdentityExpanded', Mandatory)]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeySignatureAlgorithm])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeySignatureAlgorithm]
    # The signing/verification algorithm.
    # For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm.
    ${Algorithm},

    [Parameter(ParameterSetName='VerifyExpanded', Mandatory)]
    [Parameter(ParameterSetName='VerifyViaIdentityExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for Digest (The digest used for signing.)
    ${DigestInputFile},

    [Parameter(ParameterSetName='VerifyExpanded', Mandatory)]
    [Parameter(ParameterSetName='VerifyViaIdentityExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for Signature (The signature to be verified.)
    ${SignatureInputFile},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Verify = 'Az.KeyVault.private\Test-AzKeyVaultKey_Verify';
            VerifyExpanded = 'Az.KeyVault.private\Test-AzKeyVaultKey_VerifyExpanded';
            VerifyViaIdentity = 'Az.KeyVault.private\Test-AzKeyVaultKey_VerifyViaIdentity';
            VerifyViaIdentityExpanded = 'Az.KeyVault.private\Test-AzKeyVaultKey_VerifyViaIdentityExpanded';
        }
        $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
Checks that the vault name is valid and is not already in use.
.Description
Checks that the vault name is valid and is not already in use.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/test-azkeyvault
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultCheckNameAvailabilityParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.ICheckNameAvailabilityResult
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
VAULTNAME <IVaultCheckNameAvailabilityParameters>: The parameters used to check the availability of the vault name.
  Name <String>: The vault name.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/test-azkeyvault
#>

function Test-AzKeyVault {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.ICheckNameAvailabilityResult])]
[CmdletBinding(DefaultParameterSetName='CheckExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='CheckExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String]
    # Subscription credentials which uniquely identify Microsoft Azure subscription.
    # The subscription ID forms part of the URI for every service call.
    ${SubscriptionId},

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

    [Parameter(ParameterSetName='CheckExpanded', Mandatory)]
    [Parameter(ParameterSetName='CheckViaIdentityExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The vault name.
    ${Name},

    [Parameter(ParameterSetName='CheckViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultCheckNameAvailabilityParameters]
    # The parameters used to check the availability of the vault name.
    # To construct, see NOTES section for VAULTNAME properties and create a hash table.
    ${VaultName},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            CheckExpanded = 'Az.KeyVault.private\Test-AzKeyVault_CheckExpanded';
            CheckViaIdentity = 'Az.KeyVault.private\Test-AzKeyVault_CheckViaIdentity';
            CheckViaIdentityExpanded = 'Az.KeyVault.private\Test-AzKeyVault_CheckViaIdentityExpanded';
        }
        if (('CheckExpanded') -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
The RecoverDeletedCertificate operation performs the reversal of the Delete operation.
The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes).
This operation requires the certificates/recover permission.
.Description
The RecoverDeletedCertificate operation performs the reversal of the Delete operation.
The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes).
This operation requires the certificates/recover permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultcertificateremoval
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultcertificateremoval
#>

function Undo-AzKeyVaultCertificateRemoval {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle])]
[CmdletBinding(DefaultParameterSetName='Recover', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Recover', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the deleted certificate
    ${CertificateName},

    [Parameter(ParameterSetName='RecoverViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Recover = 'Az.KeyVault.private\Undo-AzKeyVaultCertificateRemoval_Recover';
            RecoverViaIdentity = 'Az.KeyVault.private\Undo-AzKeyVaultCertificateRemoval_RecoverViaIdentity';
        }
        $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 Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults.
It recovers the deleted key back to its latest version under /keys.
An attempt to recover an non-deleted key will return an error.
Consider this the inverse of the delete operation on soft-delete enabled vaults.
This operation requires the keys/recover permission.
.Description
The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults.
It recovers the deleted key back to its latest version under /keys.
An attempt to recover an non-deleted key will return an error.
Consider this the inverse of the delete operation on soft-delete enabled vaults.
This operation requires the keys/recover permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultkeyremoval
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultkeyremoval
#>

function Undo-AzKeyVaultKeyRemoval {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle])]
[CmdletBinding(DefaultParameterSetName='Recover', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Recover', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the deleted key.
    ${KeyName},

    [Parameter(ParameterSetName='RecoverViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Recover = 'Az.KeyVault.private\Undo-AzKeyVaultKeyRemoval_Recover';
            RecoverViaIdentity = 'Az.KeyVault.private\Undo-AzKeyVaultKeyRemoval_RecoverViaIdentity';
        }
        $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
Recovers the deleted secret in the specified vault.
This operation can only be performed on a soft-delete enabled vault.
This operation requires the secrets/recover permission.
.Description
Recovers the deleted secret in the specified vault.
This operation can only be performed on a soft-delete enabled vault.
This operation requires the secrets/recover permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultsecretremoval
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultsecretremoval
#>

function Undo-AzKeyVaultSecretRemoval {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle])]
[CmdletBinding(DefaultParameterSetName='Recover', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Recover', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the deleted secret.
    ${SecretName},

    [Parameter(ParameterSetName='RecoverViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Recover = 'Az.KeyVault.private\Undo-AzKeyVaultSecretRemoval_Recover';
            RecoverViaIdentity = 'Az.KeyVault.private\Undo-AzKeyVaultSecretRemoval_RecoverViaIdentity';
        }
        $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
Recovers the deleted storage account in the specified vault.
This operation can only be performed on a soft-delete enabled vault.
This operation requires the storage/recover permission.
.Description
Recovers the deleted storage account in the specified vault.
This operation can only be performed on a soft-delete enabled vault.
This operation requires the storage/recover permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultstorageaccountremoval
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IStorageBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultstorageaccountremoval
#>

function Undo-AzKeyVaultStorageAccountRemoval {
[Alias('Undo-AzKeyVaultManagedStorageAccountRemoval')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.IStorageBundle])]
[CmdletBinding(DefaultParameterSetName='Recover', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Recover', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${StorageAccountName},

    [Parameter(ParameterSetName='RecoverViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Recover = 'Az.KeyVault.private\Undo-AzKeyVaultStorageAccountRemoval_Recover';
            RecoverViaIdentity = 'Az.KeyVault.private\Undo-AzKeyVaultStorageAccountRemoval_RecoverViaIdentity';
        }
        $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
Recovers the deleted SAS definition for the specified storage account.
This operation can only be performed on a soft-delete enabled vault.
This operation requires the storage/recover permission.
.Description
Recovers the deleted SAS definition for the specified storage account.
This operation can only be performed on a soft-delete enabled vault.
This operation requires the storage/recover permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultstoragesasdefinitionremoval
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.ISasDefinitionBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultstoragesasdefinitionremoval
#>

function Undo-AzKeyVaultStorageSasDefinitionRemoval {
[Alias('Undo-AzKeyVaultManagedStorageSasDefinitionRemoval')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.ISasDefinitionBundle])]
[CmdletBinding(DefaultParameterSetName='Recover', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Recover', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the SAS definition.
    ${SasDefinitionName},

    [Parameter(ParameterSetName='Recover', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${StorageAccountName},

    [Parameter(ParameterSetName='RecoverViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity]
    # 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.KeyVault.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Recover = 'Az.KeyVault.private\Undo-AzKeyVaultStorageSasDefinitionRemoval_Recover';
            RecoverViaIdentity = 'Az.KeyVault.private\Undo-AzKeyVaultStorageSasDefinitionRemoval_RecoverViaIdentity';
        }
        $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 DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm.
This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used.
The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key.
This operation requires the keys/decrypt permission.
.Description
The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm.
This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used.
The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key.
This operation requires the keys/decrypt permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/unprotect-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyOperationsParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyOperationResult
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <IKeyOperationsParameters>: The key operations parameters.
  Algorithm <JsonWebKeyEncryptionAlgorithm>: algorithm identifier
  Value <Byte[]>:
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/unprotect-azkeyvaultkey
#>

function Unprotect-AzKeyVaultKey {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyOperationResult])]
[CmdletBinding(DefaultParameterSetName='DecryptExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Decrypt', Mandatory)]
    [Parameter(ParameterSetName='DecryptExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the key.
    ${KeyName},

    [Parameter(ParameterSetName='Decrypt', Mandatory)]
    [Parameter(ParameterSetName='DecryptExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The version of the key.
    ${KeyVersion},

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

    [Parameter(ParameterSetName='Decrypt', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='DecryptViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyOperationsParameters]
    # The key operations parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='DecryptExpanded', Mandatory)]
    [Parameter(ParameterSetName='DecryptViaIdentityExpanded', Mandatory)]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyEncryptionAlgorithm])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyEncryptionAlgorithm]
    # algorithm identifier
    ${Algorithm},

    [Parameter(ParameterSetName='DecryptExpanded', Mandatory)]
    [Parameter(ParameterSetName='DecryptViaIdentityExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Input File for Value (HELP MESSAGE MISSING)
    ${InputFile},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Decrypt = 'Az.KeyVault.private\Unprotect-AzKeyVaultKey_Decrypt';
            DecryptExpanded = 'Az.KeyVault.private\Unprotect-AzKeyVaultKey_DecryptExpanded';
            DecryptViaIdentity = 'Az.KeyVault.private\Unprotect-AzKeyVaultKey_DecryptViaIdentity';
            DecryptViaIdentityExpanded = 'Az.KeyVault.private\Unprotect-AzKeyVaultKey_DecryptViaIdentityExpanded';
        }
        $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 UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity.
This operation requires the certificates/setissuers permission.
.Description
The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity.
This operation requires the certificates/setissuers permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultcertificateissuer
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateIssuerUpdateParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IIssuerBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
ORGDETAILADMINDETAIL <IAdministratorDetails[]>: Details of the organization administrator.
  [EmailAddress <String>]: Email address.
  [FirstName <String>]: First name.
  [LastName <String>]: Last name.
  [Phone <String>]: Phone number.
 
PARAMETER <ICertificateIssuerUpdateParameters>: The certificate issuer update parameters.
  [AttributeEnabled <Boolean?>]: Determines whether the issuer is enabled.
  [CredentialsAccountId <String>]: The user name/account name/account id.
  [CredentialsPassword <String>]: The password/secret/account key.
  [OrgDetailAdminDetail <IAdministratorDetails[]>]: Details of the organization administrator.
    [EmailAddress <String>]: Email address.
    [FirstName <String>]: First name.
    [LastName <String>]: Last name.
    [Phone <String>]: Phone number.
  [OrgDetailId <String>]: Id of the organization.
  [Provider <String>]: The issuer provider.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultcertificateissuer
#>

function Update-AzKeyVaultCertificateIssuer {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IIssuerBundle])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the issuer.
    ${IssuerName},

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

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateIssuerUpdateParameters]
    # The certificate issuer update parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The user name/account name/account id.
    ${CredentialsAccountId},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The password/secret/account key.
    ${CredentialsPassword},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the issuer is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IAdministratorDetails[]]
    # Details of the organization administrator.
    # To construct, see NOTES section for ORGDETAILADMINDETAIL properties and create a hash table.
    ${OrgDetailAdminDetail},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Id of the organization.
    ${OrgDetailId},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The issuer provider.
    ${Provider},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Update-AzKeyVaultCertificateIssuer_Update';
            UpdateExpanded = 'Az.KeyVault.private\Update-AzKeyVaultCertificateIssuer_UpdateExpanded';
            UpdateViaIdentity = 'Az.KeyVault.private\Update-AzKeyVaultCertificateIssuer_UpdateViaIdentity';
            UpdateViaIdentityExpanded = 'Az.KeyVault.private\Update-AzKeyVaultCertificateIssuer_UpdateViaIdentityExpanded';
        }
        $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
Updates a certificate creation operation that is already in progress.
This operation requires the certificates/update permission.
.Description
Updates a certificate creation operation that is already in progress.
This operation requires the certificates/update permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultcertificateoperation
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperationUpdateParameter
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperation
.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.
 
CERTIFICATEOPERATION <ICertificateOperationUpdateParameter>: The certificate operation update parameters.
  CancellationRequested <Boolean>: Indicates if cancellation was requested on the certificate operation.
 
INPUTOBJECT <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultcertificateoperation
#>

function Update-AzKeyVaultCertificateOperation {
[Alias('Stop-AzKeyVaultCertificateOperation')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperation])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate.
    ${CertificateName},

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

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateOperationUpdateParameter]
    # The certificate operation update parameters.
    # To construct, see NOTES section for CERTIFICATEOPERATION properties and create a hash table.
    ${CertificateOperation},

    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Indicates if cancellation was requested on the certificate operation.
    ${CancellationRequested},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Update-AzKeyVaultCertificateOperation_Update';
            UpdateExpanded = 'Az.KeyVault.private\Update-AzKeyVaultCertificateOperation_UpdateExpanded';
            UpdateViaIdentity = 'Az.KeyVault.private\Update-AzKeyVaultCertificateOperation_UpdateViaIdentity';
            UpdateViaIdentityExpanded = 'Az.KeyVault.private\Update-AzKeyVaultCertificateOperation_UpdateViaIdentityExpanded';
        }
        $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
Set specified members in the certificate policy.
Leave others as null.
This operation requires the certificates/update permission.
.Description
Set specified members in the certificate policy.
Leave others as null.
This operation requires the certificates/update permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultcertificatepolicy
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificatePolicy
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificatePolicy
.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.
 
CERTIFICATEPOLICY <ICertificatePolicy>: Management policy for a certificate.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [IssuerCertificateType <String>]: Type of certificate to be requested from the issuer provider.
  [IssuerName <String>]: Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.
  [KeyPropExportable <Boolean?>]: Indicates if the private key can be exported.
  [KeyPropKeySize <Int32?>]: The key size in bits. For example: 2048, 3072, or 4096 for RSA.
  [KeyPropKeyType <String>]: The key type.
  [KeyPropReuseKey <Boolean?>]: Indicates if the same key pair will be used on certificate renewal.
  [LifetimeAction <ILifetimeAction[]>]: Actions that will be performed by Key Vault over the lifetime of a certificate.
    [ActionType <ActionType?>]: The type of the action.
    [TriggerDaysBeforeExpiry <Int32?>]: Days before expiry to attempt renewal. Value should be between 1 and validity_in_months multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 * 27).
    [TriggerLifetimePercentage <Int32?>]: Percentage of lifetime at which to trigger. Value should be between 1 and 99.
  [SanDnsName <String[]>]: Domain names.
  [SanEmail <String[]>]: Email addresses.
  [SanUpn <String[]>]: User principal names.
  [SecretPropContentType <String>]: The media type (MIME type).
  [X509PropEku <String[]>]: The enhanced key usage.
  [X509PropKeyUsage <KeyUsageType[]>]: List of key usages.
  [X509PropSubject <String>]: The subject name. Should be a valid X509 distinguished Name.
  [X509PropValidityInMonth <Int32?>]: The duration that the certificate is valid in months.
 
INPUTOBJECT <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
LIFETIMEACTION <ILifetimeAction[]>: Actions that will be performed by Key Vault over the lifetime of a certificate.
  [ActionType <ActionType?>]: The type of the action.
  [TriggerDaysBeforeExpiry <Int32?>]: Days before expiry to attempt renewal. Value should be between 1 and validity_in_months multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 * 27).
  [TriggerLifetimePercentage <Int32?>]: Percentage of lifetime at which to trigger. Value should be between 1 and 99.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultcertificatepolicy
#>

function Update-AzKeyVaultCertificatePolicy {
[Alias('Set-AzKeyVaultCertificatePolicy')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificatePolicy])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate in the given vault.
    ${CertificateName},

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

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificatePolicy]
    # Management policy for a certificate.
    # To construct, see NOTES section for CERTIFICATEPOLICY properties and create a hash table.
    ${CertificatePolicy},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Type of certificate to be requested from the issuer provider.
    ${CertificateType},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String[]]
    # Domain names.
    ${DnsName},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String[]]
    # The enhanced key usage.
    ${Eku},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Indicates if the private key can be exported.
    ${Exportable},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.
    ${IssuerName},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Int32]
    # The key size in bits.
    # For example: 2048, 3072, or 4096 for RSA.
    ${KeySize},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The key type.
    ${KeyType},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.KeyUsageType])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.KeyUsageType[]]
    # List of key usages.
    ${KeyUsage},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api70.ILifetimeAction[]]
    # Actions that will be performed by Key Vault over the lifetime of a certificate.
    # To construct, see NOTES section for LIFETIMEACTION properties and create a hash table.
    ${LifetimeAction},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Indicates if the same key pair will be used on certificate renewal.
    ${ReuseKey},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String[]]
    # Email addresses.
    ${SanEmail},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String[]]
    # User principal names.
    ${SanUpn},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The media type (MIME type).
    ${SecretContentType},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The subject name.
    # Should be a valid X509 distinguished Name.
    ${SubjectName},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Int32]
    # The duration that the certificate is valid in months.
    ${ValidityInMonth},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Update-AzKeyVaultCertificatePolicy_Update';
            UpdateExpanded = 'Az.KeyVault.private\Update-AzKeyVaultCertificatePolicy_UpdateExpanded';
            UpdateViaIdentity = 'Az.KeyVault.private\Update-AzKeyVaultCertificatePolicy_UpdateViaIdentity';
            UpdateViaIdentityExpanded = 'Az.KeyVault.private\Update-AzKeyVaultCertificatePolicy_UpdateViaIdentityExpanded';
        }
        $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 UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes.
This operation requires the certificates/update permission.
.Description
The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes.
This operation requires the certificates/update permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultcertificate
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateUpdateParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <ICertificateUpdateParameters>: The certificate update parameters.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [Policy <ICertificatePolicy>]: The management policy for the certificate.
    [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
    [AttributeExpire <DateTime?>]: Expiry date in UTC.
    [AttributeNotBefore <DateTime?>]: Not before date in UTC.
    [IssuerCertificateType <String>]: Type of certificate to be requested from the issuer provider.
    [IssuerName <String>]: Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.
    [KeyPropExportable <Boolean?>]: Indicates if the private key can be exported.
    [KeyPropKeySize <Int32?>]: The key size in bits. For example: 2048, 3072, or 4096 for RSA.
    [KeyPropKeyType <String>]: The key type.
    [KeyPropReuseKey <Boolean?>]: Indicates if the same key pair will be used on certificate renewal.
    [LifetimeAction <ILifetimeAction[]>]: Actions that will be performed by Key Vault over the lifetime of a certificate.
      [ActionType <ActionType?>]: The type of the action.
      [TriggerDaysBeforeExpiry <Int32?>]: Days before expiry to attempt renewal. Value should be between 1 and validity_in_months multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 * 27).
      [TriggerLifetimePercentage <Int32?>]: Percentage of lifetime at which to trigger. Value should be between 1 and 99.
    [SanDnsName <String[]>]: Domain names.
    [SanEmail <String[]>]: Email addresses.
    [SanUpn <String[]>]: User principal names.
    [SecretPropContentType <String>]: The media type (MIME type).
    [X509PropEku <String[]>]: The enhanced key usage.
    [X509PropKeyUsage <KeyUsageType[]>]: List of key usages.
    [X509PropSubject <String>]: The subject name. Should be a valid X509 distinguished Name.
    [X509PropValidityInMonth <Int32?>]: The duration that the certificate is valid in months.
  [Tag <ICertificateUpdateParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
 
POLICY <ICertificatePolicy>: The management policy for the certificate.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [IssuerCertificateType <String>]: Type of certificate to be requested from the issuer provider.
  [IssuerName <String>]: Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.
  [KeyPropExportable <Boolean?>]: Indicates if the private key can be exported.
  [KeyPropKeySize <Int32?>]: The key size in bits. For example: 2048, 3072, or 4096 for RSA.
  [KeyPropKeyType <String>]: The key type.
  [KeyPropReuseKey <Boolean?>]: Indicates if the same key pair will be used on certificate renewal.
  [LifetimeAction <ILifetimeAction[]>]: Actions that will be performed by Key Vault over the lifetime of a certificate.
    [ActionType <ActionType?>]: The type of the action.
    [TriggerDaysBeforeExpiry <Int32?>]: Days before expiry to attempt renewal. Value should be between 1 and validity_in_months multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 * 27).
    [TriggerLifetimePercentage <Int32?>]: Percentage of lifetime at which to trigger. Value should be between 1 and 99.
  [SanDnsName <String[]>]: Domain names.
  [SanEmail <String[]>]: Email addresses.
  [SanUpn <String[]>]: User principal names.
  [SecretPropContentType <String>]: The media type (MIME type).
  [X509PropEku <String[]>]: The enhanced key usage.
  [X509PropKeyUsage <KeyUsageType[]>]: List of key usages.
  [X509PropSubject <String>]: The subject name. Should be a valid X509 distinguished Name.
  [X509PropValidityInMonth <Int32?>]: The duration that the certificate is valid in months.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultcertificate
#>

function Update-AzKeyVaultCertificate {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateBundle])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Alias('CertificateName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the certificate in the given key vault.
    ${Name},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Alias('CertificateVersion')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The version of the certificate.
    ${Version},

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

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateUpdateParameters]
    # The certificate update parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificatePolicy]
    # The management policy for the certificate.
    # To construct, see NOTES section for POLICY properties and create a hash table.
    ${Policy},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ICertificateUpdateParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Update-AzKeyVaultCertificate_Update';
            UpdateExpanded = 'Az.KeyVault.private\Update-AzKeyVaultCertificate_UpdateExpanded';
            UpdateViaIdentity = 'Az.KeyVault.private\Update-AzKeyVaultCertificate_UpdateViaIdentity';
            UpdateViaIdentityExpanded = 'Az.KeyVault.private\Update-AzKeyVaultCertificate_UpdateViaIdentityExpanded';
        }
        $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
In order to perform this operation, the key must already exist in the Key Vault.
Note: The cryptographic material of a key itself cannot be changed.
This operation requires the keys/update permission.
.Description
In order to perform this operation, the key must already exist in the Key Vault.
Note: The cryptographic material of a key itself cannot be changed.
This operation requires the keys/update permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultkey
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyUpdateParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <IKeyUpdateParameters>: The key update parameters.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [KeyOp <JsonWebKeyOperation[]>]: Json web key operations. For more information on possible key operations, see JsonWebKeyOperation.
  [Tag <IKeyUpdateParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultkey
#>

function Update-AzKeyVaultKey {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyBundle])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Alias('KeyName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of key to update.
    ${Name},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Alias('KeyVersion')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The version of the key to update.
    ${Version},

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

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyUpdateParameters]
    # The key update parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyOperation])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.JsonWebKeyOperation[]]
    # Json web key operations.
    # For more information on possible key operations, see JsonWebKeyOperation.
    ${KeyOp},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IKeyUpdateParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Update-AzKeyVaultKey_Update';
            UpdateExpanded = 'Az.KeyVault.private\Update-AzKeyVaultKey_UpdateExpanded';
            UpdateViaIdentity = 'Az.KeyVault.private\Update-AzKeyVaultKey_UpdateViaIdentity';
            UpdateViaIdentityExpanded = 'Az.KeyVault.private\Update-AzKeyVaultKey_UpdateViaIdentityExpanded';
        }
        $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 UPDATE operation changes specified attributes of an existing stored secret.
Attributes that are not specified in the request are left unchanged.
The value of a secret itself cannot be changed.
This operation requires the secrets/set permission.
.Description
The UPDATE operation changes specified attributes of an existing stored secret.
Attributes that are not specified in the request are left unchanged.
The value of a secret itself cannot be changed.
This operation requires the secrets/set permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultsecret
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretUpdateParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <ISecretUpdateParameters>: The secret update parameters.
  [AttributeEnabled <Boolean?>]: Determines whether the object is enabled.
  [AttributeExpire <DateTime?>]: Expiry date in UTC.
  [AttributeNotBefore <DateTime?>]: Not before date in UTC.
  [ContentType <String>]: Type of the secret value such as a password.
  [Tag <ISecretUpdateParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultsecret
#>

function Update-AzKeyVaultSecret {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretBundle])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Alias('SecretName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the secret.
    ${Name},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Alias('SecretVersion')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The version of the secret.
    ${Version},

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

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretUpdateParameters]
    # The secret update parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Type of the secret value such as a password.
    ${ContentType},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Determines whether the object is enabled.
    ${Enabled},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Expiry date in UTC.
    ${Expire},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.DateTime]
    # Not before date in UTC.
    ${NotBefore},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISecretUpdateParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Update-AzKeyVaultSecret_Update';
            UpdateExpanded = 'Az.KeyVault.private\Update-AzKeyVaultSecret_UpdateExpanded';
            UpdateViaIdentity = 'Az.KeyVault.private\Update-AzKeyVaultSecret_UpdateViaIdentity';
            UpdateViaIdentityExpanded = 'Az.KeyVault.private\Update-AzKeyVaultSecret_UpdateViaIdentityExpanded';
        }
        $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
Updates the specified attributes associated with the given storage account.
This operation requires the storage/set/update permission.
.Description
Updates the specified attributes associated with the given storage account.
This operation requires the storage/set/update permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultstorageaccount
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountUpdateParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <IStorageAccountUpdateParameters>: The storage account update parameters.
  [ActiveKeyName <String>]: The current active storage account key name.
  [AttributeEnabled <Boolean?>]: the enabled state of the object.
  [AutoRegenerateKey <Boolean?>]: whether keyvault should manage the storage account for the user.
  [RegenerationPeriod <String>]: The key regeneration time duration specified in ISO-8601 format.
  [Tag <IStorageAccountUpdateParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultstorageaccount
#>

function Update-AzKeyVaultStorageAccount {
[Alias('Update-AzKeyVaultManagedStorageAccount')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageBundle])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Alias('StorageAccountName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${Name},

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

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountUpdateParameters]
    # The storage account update parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The current active storage account key name.
    ${ActiveKeyName},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # whether keyvault should manage the storage account for the user.
    ${AutoRegenerateKey},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # the enabled state of the object.
    ${Enabled},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The key regeneration time duration specified in ISO-8601 format.
    ${RegenerationPeriod},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IStorageAccountUpdateParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Update-AzKeyVaultStorageAccount_Update';
            UpdateExpanded = 'Az.KeyVault.private\Update-AzKeyVaultStorageAccount_UpdateExpanded';
            UpdateViaIdentity = 'Az.KeyVault.private\Update-AzKeyVaultStorageAccount_UpdateViaIdentity';
            UpdateViaIdentityExpanded = 'Az.KeyVault.private\Update-AzKeyVaultStorageAccount_UpdateViaIdentityExpanded';
        }
        $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
Updates the specified attributes associated with the given SAS definition.
This operation requires the storage/setsas permission.
.Description
Updates the specified attributes associated with the given SAS definition.
This operation requires the storage/setsas permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultstoragesasdefinition
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionUpdateParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionBundle
.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 <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
PARAMETER <ISasDefinitionUpdateParameters>: The SAS definition update parameters.
  [AttributeEnabled <Boolean?>]: the enabled state of the object.
  [Parameter <ISasDefinitionUpdateParameters1>]: Sas definition update metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
  [Tag <ISasDefinitionUpdateParametersTags>]: Application specific metadata in the form of key-value pairs.
    [(Any) <String>]: This indicates any property can be added to this object.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvaultstoragesasdefinition
#>

function Update-AzKeyVaultStorageSasDefinition {
[Alias('Update-AzKeyVaultManagedStorageSasDefinition')]
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionBundle])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The URI used as the base for all key vault requests.
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # The name of the vault to execute operations on.
    ${VaultName},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the SAS definition.
    ${SasDefinitionName},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the storage account.
    ${StorageAccountName},

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

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionUpdateParameters]
    # The SAS definition update parameters.
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionUpdateParameters1]))]
    [System.Collections.Hashtable]
    # Sas definition update metadata in the form of key-value pairs.
    ${DefinitionMetadata},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # the enabled state of the object.
    ${Enabled},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.ISasDefinitionUpdateParametersTags]))]
    [System.Collections.Hashtable]
    # Application specific metadata in the form of key-value pairs.
    ${Tag},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Update-AzKeyVaultStorageSasDefinition_Update';
            UpdateExpanded = 'Az.KeyVault.private\Update-AzKeyVaultStorageSasDefinition_UpdateExpanded';
            UpdateViaIdentity = 'Az.KeyVault.private\Update-AzKeyVaultStorageSasDefinition_UpdateViaIdentity';
            UpdateViaIdentityExpanded = 'Az.KeyVault.private\Update-AzKeyVaultStorageSasDefinition_UpdateViaIdentityExpanded';
        }
        $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
Update a key vault in the specified subscription.
.Description
Update a key vault in the specified subscription.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvault
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultPatchParameters
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.IKeyVaultIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVault
.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.
 
ACCESSPOLICY <IAccessPolicyEntry[]>: An array of 0 to 16 identities that have access to the key vault. All identities in the array must use the same tenant ID as the key vault's tenant ID.
  ObjectId <String>: The object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies.
  TenantId <String>: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
  [ApplicationId <String>]: Application ID of the client making request on behalf of a principal
  [PermissionCertificate <CertificatePermissions[]>]: Permissions to certificates
  [PermissionKey <KeyPermissions[]>]: Permissions to keys
  [PermissionSecret <SecretPermissions[]>]: Permissions to secrets
  [PermissionStorage <StoragePermissions[]>]: Permissions to storage accounts
 
INPUTOBJECT <IKeyVaultIdentity>: Identity Parameter
  [CertificateName <String>]: The name of the certificate.
  [CertificateVersion <String>]: The version of the certificate.
  [Id <String>]: Resource identity path
  [IssuerName <String>]: The name of the issuer.
  [KeyName <String>]: The name for the new key. The system will generate the version name for the new key.
  [KeyVersion <String>]: The version of the key to update.
  [Location <String>]: The location of the deleted vault.
  [OperationKind <AccessPolicyUpdateKind?>]: Name of the operation
  [ResourceGroupName <String>]: The name of the Resource Group to which the server belongs.
  [SasDefinitionName <String>]: The name of the SAS definition.
  [SecretName <String>]: The name of the secret.
  [SecretVersion <String>]: The version of the secret.
  [StorageAccountName <String>]: The name of the storage account.
  [SubscriptionId <String>]: Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
  [VaultName <String>]: Name of the vault
 
NETWORKACLSIPRULE <IIPRule[]>: The list of IP address rules.
  Value <String>: An IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that start with 124.56.78).
 
NETWORKACLSVIRTUALNETWORKRULE <IVirtualNetworkRule[]>: The list of virtual network rules.
  Id <String>: Full resource id of a vnet subnet, such as '/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1'.
 
PARAMETER <IVaultPatchParameters>: Parameters for creating or updating a vault
  SkuName <SkuName>: SKU name to specify whether the key vault is a standard vault or a premium vault.
  [AccessPolicy <IAccessPolicyEntry[]>]: An array of 0 to 16 identities that have access to the key vault. All identities in the array must use the same tenant ID as the key vault's tenant ID.
    ObjectId <String>: The object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies.
    TenantId <String>: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
    [ApplicationId <String>]: Application ID of the client making request on behalf of a principal
    [PermissionCertificate <CertificatePermissions[]>]: Permissions to certificates
    [PermissionKey <KeyPermissions[]>]: Permissions to keys
    [PermissionSecret <SecretPermissions[]>]: Permissions to secrets
    [PermissionStorage <StoragePermissions[]>]: Permissions to storage accounts
  [CreateMode <CreateMode?>]: The vault's create mode to indicate whether the vault need to be recovered or not.
  [EnablePurgeProtection <Boolean?>]: Property specifying whether protection against purge is enabled for this vault. Setting this property to true activates protection against purge for this vault and its content - only the Key Vault service may initiate a hard, irrecoverable deletion. The setting is effective only if soft delete is also enabled. Enabling this functionality is irreversible - that is, the property does not accept false as its value.
  [EnableSoftDelete <Boolean?>]: Property to specify whether the 'soft delete' functionality is enabled for this key vault. It does not accept false value.
  [EnabledForDeployment <Boolean?>]: Property to specify whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.
  [EnabledForDiskEncryption <Boolean?>]: Property to specify whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.
  [EnabledForTemplateDeployment <Boolean?>]: Property to specify whether Azure Resource Manager is permitted to retrieve secrets from the key vault.
  [NetworkAclsBypass <NetworkRuleBypassOptions?>]: Tells what traffic can bypass network rules. This can be 'AzureServices' or 'None'. If not specified the default is 'AzureServices'.
  [NetworkAclsDefaultAction <NetworkRuleAction?>]: The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated.
  [NetworkAclsIPRule <IIPRule[]>]: The list of IP address rules.
    Value <String>: An IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that start with 124.56.78).
  [NetworkAclsVirtualNetworkRule <IVirtualNetworkRule[]>]: The list of virtual network rules.
    Id <String>: Full resource id of a vnet subnet, such as '/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1'.
  [Tag <IVaultPatchParametersTags>]: The tags that will be assigned to the key vault.
    [(Any) <String>]: This indicates any property can be added to this object.
  [TenantId <String>]: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azkeyvault
#>

function Update-AzKeyVault {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVault])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Alias('VaultName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # Name of the vault
    ${Name},

    [Parameter(ParameterSetName='Update', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # The name of the Resource Group to which the server belongs.
    ${ResourceGroupName},

    [Parameter(ParameterSetName='Update')]
    [Parameter(ParameterSetName='UpdateExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String]
    # Subscription credentials which uniquely identify Microsoft Azure subscription.
    # The subscription ID forms part of the URI for every service call.
    ${SubscriptionId},

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

    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentity', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVaultPatchParameters]
    # Parameters for creating or updating a vault
    # To construct, see NOTES section for PARAMETER properties and create a hash table.
    ${Parameter},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IAccessPolicyEntry[]]
    # An array of 0 to 16 identities that have access to the key vault.
    # All identities in the array must use the same tenant ID as the key vault's tenant ID.
    # To construct, see NOTES section for ACCESSPOLICY properties and create a hash table.
    ${AccessPolicy},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.CreateMode])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.CreateMode]
    # The vault's create mode to indicate whether the vault need to be recovered or not.
    ${CreateMode},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property specifying whether protection against purge is enabled for this vault.
    # Setting this property to true activates protection against purge for this vault and its content - only the Key Vault service may initiate a hard, irrecoverable deletion.
    # The setting is effective only if soft delete is also enabled.
    # Enabling this functionality is irreversible - that is, the property does not accept false as its value.
    ${EnablePurgeProtection},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property to specify whether the 'soft delete' functionality is enabled for this key vault.
    # It does not accept false value.
    ${EnableSoftDelete},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property to specify whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.
    ${EnabledForDeployment},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property to specify whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.
    ${EnabledForDiskEncryption},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Property to specify whether Azure Resource Manager is permitted to retrieve secrets from the key vault.
    ${EnabledForTemplateDeployment},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.NetworkRuleBypassOptions])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.NetworkRuleBypassOptions]
    # Tells what traffic can bypass network rules.
    # This can be 'AzureServices' or 'None'.
    # If not specified the default is 'AzureServices'.
    ${NetworkAclsBypass},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.NetworkRuleAction])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.NetworkRuleAction]
    # The default action when no rule from ipRules and from virtualNetworkRules match.
    # This is only used after the bypass property has been evaluated.
    ${NetworkAclsDefaultAction},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IIPRule[]]
    # The list of IP address rules.
    # To construct, see NOTES section for NETWORKACLSIPRULE properties and create a hash table.
    ${NetworkAclsIPRule},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVirtualNetworkRule[]]
    # The list of virtual network rules.
    # To construct, see NOTES section for NETWORKACLSVIRTUALNETWORKRULE properties and create a hash table.
    ${NetworkAclsVirtualNetworkRule},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.SkuName])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.SkuName]
    # SKU name to specify whether the key vault is a standard vault or a premium vault.
    ${SkuName},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IVaultPatchParametersTags]))]
    [System.Collections.Hashtable]
    # The tags that will be assigned to the key vault.
    ${Tag},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
    ${TenantId},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.private\Update-AzKeyVault_Update';
            UpdateExpanded = 'Az.KeyVault.private\Update-AzKeyVault_UpdateExpanded';
            UpdateViaIdentity = 'Az.KeyVault.private\Update-AzKeyVault_UpdateViaIdentity';
            UpdateViaIdentityExpanded = 'Az.KeyVault.private\Update-AzKeyVault_UpdateViaIdentityExpanded';
        }
        if (('Update', 'UpdateExpanded') -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
Sets the certificate contacts for the specified key vault.
This operation requires the certificates/managecontacts permission.
.Description
Sets the certificate contacts for the specified key vault.
This operation requires the certificates/managecontacts permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/add-azkeyvaultcertificatecontact
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IContact
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/add-azkeyvaultcertificatecontact
#>

function Add-AzKeyVaultCertificateContact {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IContact])]
[CmdletBinding(DefaultParameterSetName='Add', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # MISSING DESCRIPTION 06
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # MISSING DESCRIPTION 06
    ${VaultName},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The email address of the contact to add.
    ${EmailAddress},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The name of the contact to add.
    ${Name},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The phone number of the contact to add.
    ${PhoneNumber},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Add = 'Az.KeyVault.custom\Add-AzKeyVaultCertificateContact';
        }
        $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 GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault.
This operation requires the certificates/managecontacts permission.
.Description
The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault.
This operation requires the certificates/managecontacts permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificatecontact
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IContact
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azkeyvaultcertificatecontact
#>

function Get-AzKeyVaultCertificateContact {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IContact])]
[CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # MISSING DESCRIPTION 06
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # MISSING DESCRIPTION 06
    ${VaultName},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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.KeyVault.custom\Get-AzKeyVaultCertificateContact';
        }
        $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
Deletes the certificate contacts for a specified key vault certificate.
This operation requires the certificates/managecontacts permission.
.Description
Deletes the certificate contacts for a specified key vault certificate.
This operation requires the certificates/managecontacts permission.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultcertificatecontact
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IContact
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvaultcertificatecontact
#>

function Remove-AzKeyVaultCertificateContact {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IContact])]
[CmdletBinding(DefaultParameterSetName='DeleteContact', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # MISSING DESCRIPTION 06
    ${KeyVaultDnsSuffix},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Uri')]
    [System.String]
    # MISSING DESCRIPTION 06
    ${VaultName},

    [Parameter(ParameterSetName='DeleteContact', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The email address of the contact to remove.
    ${EmailAddress},

    [Parameter(ParameterSetName='DeleteAllContacts', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # If set, signals that all contacts should be removed.
    ${DeleteAll},

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

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

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

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

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            DeleteContact = 'Az.KeyVault.custom\Remove-AzKeyVaultCertificateContact';
            DeleteAllContacts = 'Az.KeyVault.custom\Remove-AzKeyVaultCertificateContact';
        }
        $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
Create or update a key vault in the specified subscription.
.Description
Create or update a key vault in the specified subscription.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultremoval
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVault
.Link
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azkeyvaultremoval
#>

function Undo-AzKeyVaultRemoval {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20180214.IVault])]
[CmdletBinding(DefaultParameterSetName='Undo', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Profile('latest-2019-04-30')]
param(
    [Parameter(Mandatory)]
    [Alias('VaultName')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # Name of the deleted vault.
    ${Name},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [System.String]
    # Name of the deleted vault resource group.
    ${ResourceGroupName},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String]
    # Subscription credentials which uniquely identify Microsoft Azure subscription.
    # The subscription ID forms part of the URI for every service call.
    ${SubscriptionId},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # Original Azure region of the deleted vault.
    ${Location},

    [Parameter(Mandatory)]
    [Alias('Sku')]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.SkuName])]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Support.SkuName]
    # SKU name to specify whether the key vault is a standard vault or a premium vault.
    ${SkuName},

    [Parameter(Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [System.String]
    # The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.
    ${TenantId},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Models.Api20161001.IVaultCreateOrUpdateParametersTags]))]
    [System.Collections.Hashtable]
    # The tags that will be assigned to the key vault.
    ${Tag},

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

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Run the command as a job
    ${AsJob},

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

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

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

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Run the command asynchronously
    ${NoWait},

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

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

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.KeyVault.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 = @{
            Undo = 'Az.KeyVault.custom\Undo-AzKeyVaultRemoval';
        }
        if (('Undo') -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
    }
}
}

# SIG # Begin signature block
# MIIkcAYJKoZIhvcNAQcCoIIkYTCCJF0CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB5u7btWA4iEA7j
# Lv0cWstiqWj4dtcjWsPUrOO0KuxYV6CCDYEwggX/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/BvW1taslScxMNelDNMYIWRTCCFkECAQEwgZUwfjELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z
# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAVGejY9AcaMOQQAAAAABUTAN
# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgRDZM9E7g
# VuvAZp/eCosT6BTLljO3BfE287kbTrVTz0gwQgYKKwYBBAGCNwIBDDE0MDKgFIAS
# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN
# BgkqhkiG9w0BAQEFAASCAQBVkxDWyHcgkY3SFLuvnuXBK3HdcuvAuswRe7VWykm1
# xfkmc3g2du57xLzikfM0HUxTodzZIIiL6YjNN9VcP/eMhb0QT9PcaVQjpjC30qBM
# LSKZOYUGo5HaNuz34Ve+tRMy7+TNx28nk8YfODwBowhsjh8GjNUH4HcdRpzo+6IG
# YluO7a1udlz/bQVIOcfK6MgJY8dlFYupniLvm+B0TvTp9pRRbE2JqNrhAhZ3WiBp
# 3HyFq7b66pKez2/cTAvfIooIBI5lrvwgmV7kAGOrYhtwL0Z8v8X/Ty+91911gF9g
# XOKw7pkkpLGRjPbi7LHyX7UF93S3RhTWYrLs8OjukGXMoYITzzCCE8sGCisGAQQB
# gjcDAwExghO7MIITtwYJKoZIhvcNAQcCoIITqDCCE6QCAQMxDzANBglghkgBZQME
# AgEFADCCAVgGCyqGSIb3DQEJEAEEoIIBRwSCAUMwggE/AgEBBgorBgEEAYRZCgMB
# MDEwDQYJYIZIAWUDBAIBBQAEIG8aVHrmifeW0luBKfdkk7DLuQL2L/VLFR8fS4gR
# Gb+6AgZd+kRQn8cYEzIwMTkxMjIwMDkyODEzLjQwN1owBwIBAYACAfSggdSkgdEw
# gc4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsT
# IE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFs
# ZXMgVFNTIEVTTjo5OEZELUM2MUUtRTY0MTElMCMGA1UEAxMcTWljcm9zb2Z0IFRp
# bWUtU3RhbXAgU2VydmljZaCCDx8wggT1MIID3aADAgECAhMzAAAA++CUDxRBhNvF
# AAAAAAD7MA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX
# YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
# Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAy
# MDEwMB4XDTE5MDkwNjIwNDEwNloXDTIwMTIwNDIwNDEwNlowgc4xCzAJBgNVBAYT
# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBP
# cGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjo5
# OEZELUM2MUUtRTY0MTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy
# dmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKAhY+5J8HXlmAVU
# +70WH7Tm4GcoAWQzzKyzLYgQjL+mViTGe5p0zbwF49ZJcdXgwQkDM/uA2j8xj0or
# y2Uh5CefDW/AUHz9R2qkIe5AbjbjLADgCKg6U3SAlWfz8NoKNE8xu2Uy/8zpLDcV
# c0jw4B36Kq6Yjm8xXcsyxjObbaVzIicl23bsuJgkkCD1sathSBFrwDVEYQHk8R1Y
# wgFE8NB/ngp+4P02rAmuNpcc1wBOyvTyEbS8l1mirMFhT9VbDftN6s1zd0Mlp+Hr
# p5U0NGPwS+mEHilvjabY67LBK3BZLYgmUcitV46XontBCBv9K+5oPtpRrdbPVu2g
# e2THNecCAwEAAaOCARswggEXMB0GA1UdDgQWBBSQPADvO9LEi5oW6lyRMkqJD6tN
# jDAfBgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEug
# SaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9N
# aWNUaW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsG
# AQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Rp
# bVN0YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoG
# CCsGAQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQBD2sGnRfoXWNGCeqAhw+SMyp8z
# SS7zFkOoGnH8IQtXLY2wMezdaD3O8NVB2+1J4jfygw7XiBkFQt40i+85x8ig+oUn
# Zl1F+f3l6TKbCLIeAlpvfRT2USLHO+4PIUX9wYViqOF7FXlP2DJC/1ga/bGhF5mc
# KxlcPo4BWk8cuO3BCjXabNCs5oHbNHVfxUI9xVKYUBN3GNDl+72j50bE11Jg8ZgV
# wI2Syw1j7UiC7ZHYzZ7GCNyuH3z9qGIXWgr6Nb/il5pPfsOWRI1bQbL0/oc/Q4TP
# 9tqhvCi57T+59NYz+33KAGx0SghLBcg6grUKyI6cgNf+fOUb/FQR+8Ph2SAyMIIG
# cTCCBFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UE
# BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
# BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0
# IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1
# WhcNMjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu
# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
# cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCC
# ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9p
# lGt0VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEw
# WbEwRA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeG
# MoQedGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJ
# UGKxXf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw
# 2k4GkbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0C
# AwEAAaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ
# 80N7fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8E
# BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2U
# kFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5j
# b20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmww
# WgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29m
# dC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYD
# VR0gAQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6
# Ly93d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYI
# KwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0
# AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9
# naOhIW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtR
# gkQS+7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzy
# mXlKkVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCf
# Mkon/VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3D
# nKOiPPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs
# 9/S/fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110
# mCIIYdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL
# 2IK0cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffI
# rE7aKLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxE
# PJdQcdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc
# 1bN+NR4Iuto229Nfj950iEkSoYIDrTCCApUCAQEwgf6hgdSkgdEwgc4xCzAJBgNV
# BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
# HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29m
# dCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVT
# Tjo5OEZELUM2MUUtRTY0MTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAg
# U2VydmljZaIlCgEBMAkGBSsOAwIaBQADFQAV9O+PCUZ4KHTCMuuXBK/6zr9CMaCB
# 3jCB26SB2DCB1TELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEp
# MCcGA1UECxMgTWljcm9zb2Z0IE9wZXJhdGlvbnMgUHVlcnRvIFJpY28xJzAlBgNV
# BAsTHm5DaXBoZXIgTlRTIEVTTjo0REU5LTBDNUUtM0UwOTErMCkGA1UEAxMiTWlj
# cm9zb2Z0IFRpbWUgU291cmNlIE1hc3RlciBDbG9jazANBgkqhkiG9w0BAQUFAAIF
# AOGm0wMwIhgPMjAxOTEyMjAxMjU2MzVaGA8yMDE5MTIyMTEyNTYzNVowdDA6Bgor
# BgEEAYRZCgQBMSwwKjAKAgUA4abTAwIBADAHAgEAAgIBXzAHAgEAAgIXKTAKAgUA
# 4agkgwIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMBoAowCAIBAAID
# FuNgoQowCAIBAAIDB6EgMA0GCSqGSIb3DQEBBQUAA4IBAQAA+1PFjhoxJ6PBxxQs
# IXlUzBCHK2MnZbODEKwzhOVwg9zd4tGoln/238q13AnB+P8ftH5kGvZSxtyN3AxA
# X602z/F+K78vy2lVXs2Ipxj9DHhZtUE2ulMy4YdMpe4sHhAWKIVr0bum63/WxjRk
# 3MaDBo9GDWw8pa9BMWvzcqqHbqo/GhTqe/D6ihRlsWyLJsDapUjbpBiWJ6uYV3t9
# CO8RgpfhDhKt4HYC/KvsOKCBrpHYQZLhM3m4ATuRFBxq14OqelFGHzW0KYyLtLJZ
# 2M9UhtYV4Oxda2Y+3mNQ7mY/QWIsgdMS0PYX5Fd5jyINMqvbDM8looO0ByYQy/Er
# 9YWVMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAC
# EzMAAAD74JQPFEGE28UAAAAAAPswDQYJYIZIAWUDBAIBBQCgggFKMBoGCSqGSIb3
# DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgFbg2wGA2DpDQiBVW
# 8udhE89WfrNTBVc7Ej/+VLfZcDIwgfoGCyqGSIb3DQEJEAIvMYHqMIHnMIHkMIG9
# BCBu8fQjDOJ6yHyR/w+/uqCScFrrBeJLrXDO9BpMK7r+3TCBmDCBgKR+MHwxCzAJ
# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jv
# c29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAA++CUDxRBhNvFAAAAAAD7MCIE
# INajdDfPQddQ6P6+2uPS+hJmG7Dy4g2xvVrAlhUFPAdPMA0GCSqGSIb3DQEBCwUA
# BIIBAAcU4rEttP0Id/Ww+r68slby9pHHI3a3f0aXtgoiGNUVCscg05pqIMYWgKoX
# M+uzTGZK+WJx38Iyc7NQcF/ArjPXMwhAU7/XdkWj3wcOi1C35Md9ADUz90u+xOYQ
# 60vYLFvgXrP2pM72FL+atw7VeRTXtAXhY9Yd7khiVeAqT4dosXw4VSz8MH5UDbif
# 8YS7gm/4gCoNfCVtYWTMpdAZMPcwJr8Hp3mRnR1DY5KLoJ9ubLJ98mhU83EiPhTg
# IZeqATujgHOTUYX5FXaXJBc7aHcDpL4ERw3tQ8IpYkYSRw1K24VwQWbHEBsD5IoE
# IIYS7LP/pfazlvD9tep/UGrgHp4=
# SIG # End signature block