Toolkit/Public/Remove-RscNasShare.ps1

#Requires -Version 3
function Remove-RscNasShare {
    <#
    .SYNOPSIS
    Use this cmdlet to bulk delete multiple NAS shares.

    .DESCRIPTION
    This cmdlet initiates the delete operation for the specified NAS shares.

    .LINK
    Schema reference:
    https://rubrikinc.github.io/rubrik-api-documentation/schema/reference

    .PARAMETER Ids
    The list of NAS shares to be deleted.

    .PARAMETER NasShares
    The objects representing NAS shares to be deleted.

    .PARAMETER AsQuery
    Return the query object instead of running the query.
    Preliminary read-only queries may still run to gather IDs or
    other data needed to build the main query.

    .EXAMPLE
    Remove-RscNasShare -Ids @("b951f770-4519-5820-a451-5b2ff4a50f26", "b951f770-4519-5820-a451-5b2ff4a50f27")

    .EXAMPLE
    Use the powershell pipe to delete the NAS shares.

    $nasShares = Get-RscNasShare -Id "d93ddffc-5a70-53f4-9cfa-be54ebeaa5cb"
    $nasShares | Remove-RscNasShare
    #>


    [CmdletBinding(DefaultParameterSetName = "Id")]
    Param(
        # The IDs of NAS shares to be deleted.
        [Parameter(
            Mandatory = $true,
            HelpMessage = "The IDs of NAS shares to be deleted",
            ParameterSetName = "Id"
        )]
        [ValidateNotNullOrEmpty()]
        [String[]]$Ids,

        # The objects representing NAS shares to be deleted.
        [Parameter(
            ParameterSetName = "NasShare",
            Mandatory = $true,
            ValueFromPipeline = $true,
            HelpMessage = "The objects representing NAS shares to be deleted"
        )]
        [RubrikSecurityCloud.Types.NasShare[]]$NasShares,

        # Should Cmdlet return the query object instead of running it.
        [Parameter(
            Mandatory = $false,
            ValueFromPipeline = $false,
            HelpMessage = "Return the query object instead of running the query"
        )]
        [Switch]$AsQuery
    )

    Process {
        $mutation = New-RscMutation -Gql bulkDeleteNasShares

        if ($PsCmdlet.ParameterSetName -eq "NasShare") {
            $Ids = $NasShares | ForEach-Object { $_.Id }
        }
        $mutation.Var.Input =
            New-Object -TypeName RubrikSecurityCloud.Types.BulkDeleteNasSharesInput
        $mutation.Var.Input.BulkDeleteNasShareRequest =
            New-Object -TypeName RubrikSecurityCloud.Types.BulkDeleteNasSharesRequestInput
        $mutation.Var.Input.BulkDeleteNasShareRequest.Ids = $Ids

        if ($AsQuery) {
            return $mutation
        }

        $result = Invoke-Rsc -Query $mutation
        $result
    }
}