Functions/UserMangement/New-PVLocation.ps1

Function New-PVLocation {

    <#
    .SYNOPSIS
    Adds a location to the Vault.

    .DESCRIPTION
    Exposes the PACLI Function: "ADDLOCATION"

    .PARAMETER vault
    The defined Vault name

    .PARAMETER user
    The Username of the authenticated User.

    .PARAMETER location
    The name of the location to add.
    Note: Add a backslash ‘\’ before the name of the location

    .PARAMETER quota
    The size of the quota to allocate to the location in MB.
    The specification ‘-1’ indicates an unlimited quota allocation.

    .PARAMETER sessionID
    The ID number of the session. Use this parameter when working
    with multiple scripts simultaneously. The default is ‘0’.

    .EXAMPLE
    New-PVLocation -vault Lab -user administrator -location \x51

    Adds location x51 to Vault root

    .NOTES
    AUTHOR: Pete Maan

    #>


    [CmdLetBinding(SupportsShouldProcess)]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSShouldProcess", "", Justification = "ShouldProcess handling is in Invoke-PACLICommand")]
    param(

        [Parameter(
            Mandatory = $True,
            ValueFromPipelineByPropertyName = $True)]
        [string]$vault,

        [Parameter(
            Mandatory = $True,
            ValueFromPipelineByPropertyName = $True)]
        [string]$user,

        [Parameter(
            Mandatory = $True,
            ValueFromPipelineByPropertyName = $True)]
        [string]$location,

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

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

    PROCESS {

        $Return = Invoke-PACLICommand $Script:PV.ClientPath ADDLOCATION $($PSBoundParameters.getEnumerator() |
                ConvertTo-ParameterString -donotQuote quota)

        if($Return.ExitCode -eq 0) {

            Write-Verbose "Added Location $location"

            [PSCustomObject] @{

                "vault"     = $vault
                "user"      = $user
                "sessionID" = $sessionID

            } | Add-ObjectDetail -TypeName pacli.PoShPACLI

        }

    }

}