Functions/IsilonPlatformGet.ps1

# The MIT License
#
# Copyright (c) 2016 Christopher Banck.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

#Build using Isilon OneFS build: B_MR_8_0_1_1_112(RELEASE)

Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"


function Get-isiAntivirusPolicies{
<#
.SYNOPSIS
    Get Antivirus Policies

.DESCRIPTION
    List antivirus scan policies.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/antivirus/policies" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.policies,$ISIObject.resume
            }else{
                return $ISIObject.policies
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusPolicies

function Get-isiAntivirusPolicy{
<#
.SYNOPSIS
    Get Antivirus Policy

.DESCRIPTION
    Retrieve one antivirus scan policy.
 
.PARAMETER id
    Name id

.PARAMETER name
    Name name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/antivirus/policies/$parameter1" -Cluster $Cluster
            return $ISIObject.policies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusPolicy

function Get-isiAntivirusQuarantine{
<#
.SYNOPSIS
    Get Antivirus Quarantine

.DESCRIPTION
    Retrieve the quarantine status of the file at the specified path.
 
.PARAMETER id
    Path id

.PARAMETER name
    Path name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/antivirus/quarantine/$parameter1" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusQuarantine

function Get-isiAntivirusReportsScans{
<#
.SYNOPSIS
    Get Antivirus Reports Scans

.DESCRIPTION
    List antivirus scan reports.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER policy_id
    If present, only reports for scans associated with this policy will be returned.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER status
    If present, only scan reports with this status will be returned.
    Valid inputs: Finish,Succeeded,Failed,Cancelled,Started,Paused,Resumed,Pending

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$policy_id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('Finish','Succeeded','Failed','Cancelled','Started','Paused','Resumed','Pending')][string]$status,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($policy_id){
                $queryArguments += 'policy_id=' + $policy_id
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($status){
                $queryArguments += 'status=' + $status
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/antivirus/reports/scans" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusReportsScans

function Get-isiAntivirusReportsScan{
<#
.SYNOPSIS
    Get Antivirus Reports Scan

.DESCRIPTION
    Retrieve one antivirus scan report.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/antivirus/reports/scans/$parameter1" -Cluster $Cluster
            return $ISIObject.reports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusReportsScan

function Get-isiAntivirusReportsThreats{
<#
.SYNOPSIS
    Get Antivirus Reports Threats

.DESCRIPTION
    List antivirus threat reports.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER file
    If present, only returns threat reports for the given file.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER remediation
    If present, only returns threat reports with the given remediation.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER scan_id
    If present, only returns threat reports associated with the given scan report.

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$file,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$remediation,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$scan_id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($file){
                $queryArguments += 'file=' + $file
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($remediation){
                $queryArguments += 'remediation=' + $remediation
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($scan_id){
                $queryArguments += 'scan_id=' + $scan_id
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/antivirus/reports/threats" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusReportsThreats

function Get-isiAntivirusReportsThreat{
<#
.SYNOPSIS
    Get Antivirus Reports Threat

.DESCRIPTION
    Retrieve one antivirus threat report.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/antivirus/reports/threats/$parameter1" -Cluster $Cluster
            return $ISIObject.reports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusReportsThreat

function Get-isiAntivirusServers{
<#
.SYNOPSIS
    Get Antivirus Servers

.DESCRIPTION
    List antivirus servers.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/antivirus/servers" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.servers,$ISIObject.resume
            }else{
                return $ISIObject.servers
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusServers

function Get-isiAntivirusServer{
<#
.SYNOPSIS
    Get Antivirus Server

.DESCRIPTION
    Retrieve one antivirus server entry.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/antivirus/servers/$parameter1" -Cluster $Cluster
            return $ISIObject.servers
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusServer

function Get-isiAntivirusSettings{
<#
.SYNOPSIS
    Get Antivirus Settings

.DESCRIPTION
    Retrieve the Antivirus settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/antivirus/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAntivirusSettings

function Get-isiAuditProgress{
<#
.SYNOPSIS
    Get Audit Progress

.DESCRIPTION
    View current audit log time.
 
.PARAMETER lnn
    lnn of the node.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$lnn,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($lnn){
                $queryArguments += 'lnn=' + $lnn
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/audit/progress" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.progress
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuditProgress

function Get-isiAuditProgressGlobal{
<#
.SYNOPSIS
    Get Audit Progress Global

.DESCRIPTION
    View the global audit log time.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/audit/progress/global" -Cluster $Cluster
            return $ISIObject.progress
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuditProgressGlobal

function Get-isiAuditSettingsGlobalv1{
<#
.SYNOPSIS
    Get Audit Global Settings

.DESCRIPTION
    View Global Audit settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/audit/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuditSettingsGlobalv1
Set-Alias Get-isiAuditSettingsGlobal -Value Get-isiAuditSettingsGlobalv1
Export-ModuleMember -Alias Get-isiAuditSettingsGlobal

function Get-isiAuditSettingsv3{
<#
.SYNOPSIS
    Get Audit Settings

.DESCRIPTION
    View per-Access Zone Audit settings.
 
.PARAMETER access_zone
    Access zone which contains audit settings.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/audit/settings" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuditSettingsv3

function Get-isiAuditSettingsGlobal{
<#
.SYNOPSIS
    Get Audit Settings Global

.DESCRIPTION
    View Global Audit settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/audit/settings/global" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuditSettingsGlobal

function Get-isiAuditTopics{
<#
.SYNOPSIS
    Get Audit Topics

.DESCRIPTION
    Retrieve a list of audit topics.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/audit/topics" -Cluster $Cluster
            return $ISIObject.topics
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuditTopics

function Get-isiAuditTopic{
<#
.SYNOPSIS
    Get Audit Topic

.DESCRIPTION
    Retrieve the audit topic information.
 
.PARAMETER id
    Topic id

.PARAMETER name
    Topic name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/audit/topics/$parameter1" -Cluster $Cluster
            return $ISIObject.topics
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuditTopic

function Get-isiAuthAccess{
<#
.SYNOPSIS
    Get Auth Access

.DESCRIPTION
    Determine user's access rights to a file
 
.PARAMETER id
    User id

.PARAMETER name
    User name

.PARAMETER numeric
    Show the user's numeric identifier.

.PARAMETER path
    Path to the file. Must be within /ifs.

.PARAMETER share
    SMB share name

.PARAMETER access_zone
    Access zone the user is in.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$numeric,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$path,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$share,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($numeric){
                $queryArguments += 'numeric=' + $numeric
            }
            if ($path){
                $queryArguments += 'path=' + $path
            }
            if ($share){
                $queryArguments += 'share=' + $share
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/access/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.access
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthAccess

function Get-isiAuthGroups{
<#
.SYNOPSIS
    Get Auth Groups

.DESCRIPTION
    List all groups.
 
.PARAMETER cached
    If true, only return cached objects.

.PARAMETER domain
    Filter groups by domain.

.PARAMETER filter
    Filter groups by name prefix.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER provider
    Filter groups by provider.

.PARAMETER query_member_of
    Enumerate all groups that a group is a member of.

.PARAMETER resolve_names
    Resolve names of personas.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER access_zone
    Filter groups by zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$cached,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$domain,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$provider,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][bool]$query_member_of,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($cached){
                $queryArguments += 'cached=' + $cached
            }
            if ($domain){
                $queryArguments += 'domain=' + $domain
            }
            if ($filter){
                $queryArguments += 'filter=' + $filter
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($provider){
                $queryArguments += 'provider=' + $provider
            }
            if ($query_member_of){
                $queryArguments += 'query_member_of=' + $query_member_of
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/groups" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.groups,$ISIObject.resume
            }else{
                return $ISIObject.groups
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthGroups

function Get-isiAuthGroup{
<#
.SYNOPSIS
    Get Auth Group

.DESCRIPTION
    Retrieve the group information.
 
.PARAMETER id
    Group id

.PARAMETER name
    Group name

.PARAMETER cached
    If true, only return cached objects.

.PARAMETER provider
    Filter groups by provider.

.PARAMETER resolve_names
    Resolve names of personas.

.PARAMETER access_zone
    Filter groups by zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$cached,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$provider,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($cached){
                $queryArguments += 'cached=' + $cached
            }
            if ($provider){
                $queryArguments += 'provider=' + $provider
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/groups/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.groups
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthGroup

function Get-isiAuthGroupMembers{
<#
.SYNOPSIS
    Get Auth Group Members

.DESCRIPTION
    List all the members of the group.
 
.PARAMETER group_id
    Group group_id

.PARAMETER group_name
    Group group_name

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER provider
    Filter group members by provider.

.PARAMETER resolve_names
    Resolve names of personas.

.PARAMETER access_zone
    Filter group members by zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$group_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$group_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$provider,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('group_id')){
                $parameter1 = $group_id
            } else {
                $parameter1 = $group_name
            }
            $queryArguments = @()
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($provider){
                $queryArguments += 'provider=' + $provider
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/groups/$parameter1/members" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.members
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthGroupMembers

function Get-isiAuthId{
<#
.SYNOPSIS
    Get Auth Id

.DESCRIPTION
    Retrieve the current security token.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/id" -Cluster $Cluster
            return $ISIObject.ntoken
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthId

function Get-isiAuthLdapTemplates{
<#
.SYNOPSIS
    Get Auth Ldap Templates

.DESCRIPTION
    List all LDAP provider templates.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/auth/ldap-templates" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ldap_configuration_templates
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthLdapTemplates

function Get-isiAuthLdapTemplate{
<#
.SYNOPSIS
    Get Auth Ldap Template

.DESCRIPTION
    Retrieve the LDAP provider template.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/auth/ldap-templates/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ldap_field_template
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthLdapTemplate

function Get-isiAuthLogLevel{
<#
.SYNOPSIS
    Get Auth Log Level

.DESCRIPTION
    Get the current authentications service and netlogon logging level.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/auth/log-level" -Cluster $Cluster
            return $ISIObject.level
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthLogLevel

function Get-isiAuthMappingDump{
<#
.SYNOPSIS
    Get Auth Mapping Dump

.DESCRIPTION
    Retrieve all identity mappings (uid, gid, sid, and on-disk) for the supplied source persona.
 
.PARAMETER nocreate
    Idmap should attempt to create missing identity mappings.

.PARAMETER access_zone
    Optional zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$nocreate,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($nocreate){
                $queryArguments += 'nocreate=' + $nocreate
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/mapping/dump" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.identities
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthMappingDump

function Get-isiAuthMappingIdentities{
<#
.SYNOPSIS
    Get Auth Mapping Identity

.DESCRIPTION
    Retrieve all identity mappings (uid, gid, sid, and on-disk) for the supplied source persona.
 
.PARAMETER id
    Source id

.PARAMETER name
    Source name

.PARAMETER nocreate
    Idmap should attempt to create missing identity mappings.

.PARAMETER access_zone
    Optional zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$nocreate,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($nocreate){
                $queryArguments += 'nocreate=' + $nocreate
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/mapping/identities/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.identities
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthMappingIdentities

function Get-isiAuthMappingUsersLookup{
<#
.SYNOPSIS
    Get Auth Mapping Users Lookup

.DESCRIPTION
    Retrieve the user information.
 
.PARAMETER gid
    The IDs of the groups that the user belongs to.

.PARAMETER kerberos_principal
    The Kerberos principal name, of the form user@realm.

.PARAMETER primary_gid
    The user's primary group ID.

.PARAMETER uid
    The user ID.

.PARAMETER user
    The user name.

.PARAMETER access_zone
    The zone the user belongs to.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][array]$gid,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$kerberos_principal,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$primary_gid,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$uid,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$user,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($gid){
                $queryArguments += 'gid=' + $gid
            }
            if ($kerberos_principal){
                $queryArguments += 'kerberos_principal=' + $kerberos_principal
            }
            if ($primary_gid){
                $queryArguments += 'primary_gid=' + $primary_gid
            }
            if ($uid){
                $queryArguments += 'uid=' + $uid
            }
            if ($user){
                $queryArguments += 'user=' + $user
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/mapping/users/lookup" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.mapping
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthMappingUsersLookup

function Get-isiAuthMappingUsersRules{
<#
.SYNOPSIS
    Get Auth Mapping Users Rules

.DESCRIPTION
    Retrieve the user mapping rules.
 
.PARAMETER access_zone
    The zone to which the user mapping applies.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/mapping/users/rules" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.rules
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthMappingUsersRules

function Get-isiAuthNetgroup{
<#
.SYNOPSIS
    Get Auth Netgroup

.DESCRIPTION
    Retrieve the user information.
 
.PARAMETER id
    Netgroup id

.PARAMETER name
    Netgroup name

.PARAMETER ignore_errors
    Ignore netgroup errors.

.PARAMETER provider
    Filter users by provider.

.PARAMETER recursive
    Perform recursive search.

.PARAMETER access_zone
    Filter users by zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$ignore_errors,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$provider,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][bool]$recursive,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($ignore_errors){
                $queryArguments += 'ignore_errors=' + $ignore_errors
            }
            if ($provider){
                $queryArguments += 'provider=' + $provider
            }
            if ($recursive){
                $queryArguments += 'recursive=' + $recursive
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/netgroups/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.netgroups
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthNetgroup

function Get-isiAuthPrivileges{
<#
.SYNOPSIS
    Get Auth Privileges

.DESCRIPTION
    List all privileges.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/privileges" -Cluster $Cluster
            return $ISIObject.privileges
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthPrivileges

function Get-isiAuthProvidersAdsv1{
<#
.SYNOPSIS
    Get Auth Providers Ads

.DESCRIPTION
    List all ADS providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/ads" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ads
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersAdsv1
Set-Alias Get-isiAuthProvidersAds -Value Get-isiAuthProvidersAdsv1
Export-ModuleMember -Alias Get-isiAuthProvidersAds

function Get-isiAuthProvidersAdsv3{
<#
.SYNOPSIS
    Get Auth Providers Ads

.DESCRIPTION
    List all ADS providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/providers/ads" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ads
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersAdsv3

function Get-isiAuthProviderAdsv1{
<#
.SYNOPSIS
    Get Auth Provider Ads

.DESCRIPTION
    Retrieve the ADS provider.
 
.PARAMETER id
    Provider id

.PARAMETER name
    Provider name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/ads/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ads
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderAdsv1
Set-Alias Get-isiAuthProviderAds -Value Get-isiAuthProviderAdsv1
Export-ModuleMember -Alias Get-isiAuthProviderAds

function Get-isiAuthProviderAdsv3{
<#
.SYNOPSIS
    Get Auth Provider Ads

.DESCRIPTION
    Retrieve the ADS provider.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/providers/ads/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ads
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderAdsv3

function Get-isiAuthProviderAdsControllers{
<#
.SYNOPSIS
    Get Auth Provider Ads Controllers

.DESCRIPTION
    List all ADS controllers.
 
.PARAMETER id
    Provider id

.PARAMETER name
    Provider name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/providers/ads/$parameter1/controllers" -Cluster $Cluster
            return $ISIObject.controllers
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderAdsControllers

function Get-isiAuthProviderAdsDomainsv1{
<#
.SYNOPSIS
    Get Auth Provider Ads Domains

.DESCRIPTION
    List all ADS domains.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/ads/$parameter1/domains" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.domains
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderAdsDomainsv1
Set-Alias Get-isiAuthProviderAdsDomains -Value Get-isiAuthProviderAdsDomainsv1
Export-ModuleMember -Alias Get-isiAuthProviderAdsDomains

function Get-isiAuthProviderAdsDomainsv3{
<#
.SYNOPSIS
    Get Auth Provider Ads Domains

.DESCRIPTION
    List all ADS domains.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/providers/ads/$parameter1/domains" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.domains
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderAdsDomainsv3

function Get-isiAuthProviderAdsDomainv1{
<#
.SYNOPSIS
    Get Auth Provider Ads Domain

.DESCRIPTION
    Retrieve the ADS domain information.
 
.PARAMETER ads_id
    Provider ads_id

.PARAMETER ads_name
    Provider ads_name

.PARAMETER id
     id

.PARAMETER name
     name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$ads_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$ads_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('ads_id')){
                $parameter1 = $ads_id
            } else {
                $parameter1 = $ads_name
            }
            if ($psBoundParameters.ContainsKey('id')){
                $parameter2 = $id
            } else {
                $parameter2 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/providers/ads/$parameter1/domains/$parameter2" -Cluster $Cluster
            return $ISIObject.domains
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderAdsDomainv1
Set-Alias Get-isiAuthProviderAdsDomain -Value Get-isiAuthProviderAdsDomainv1
Export-ModuleMember -Alias Get-isiAuthProviderAdsDomain

function Get-isiAuthProviderAdsDomainv3{
<#
.SYNOPSIS
    Get Auth Provider Ads Domain

.DESCRIPTION
    Retrieve the ADS domain information.
 
.PARAMETER ads_id
    Provider ads_id

.PARAMETER ads_name
    Provider ads_name

.PARAMETER id
     id

.PARAMETER name
     name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$ads_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$ads_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('ads_id')){
                $parameter1 = $ads_id
            } else {
                $parameter1 = $ads_name
            }
            if ($psBoundParameters.ContainsKey('id')){
                $parameter2 = $id
            } else {
                $parameter2 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/auth/providers/ads/$parameter1/domains/$parameter2" -Cluster $Cluster
            return $ISIObject.domains
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderAdsDomainv3

function Get-isiAuthProviderAdsSearch{
<#
.SYNOPSIS
    Get Auth Provider Ads Search

.DESCRIPTION
    Retrieve search results.
 
.PARAMETER id
    Provider id

.PARAMETER name
    Provider name

.PARAMETER description
    The user or group description to search for.

.PARAMETER domain
    The domain to search in.

.PARAMETER filter
    The LDAP filter to apply to the search.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER password
    The password for the domain if untrusted.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER search_groups
    If true, search for groups.

.PARAMETER search_users
    If true, search for users.

.PARAMETER user
    The user name for the domain if untrusted.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$description,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$domain,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$password,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][bool]$search_groups,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][bool]$search_users,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][string]$user,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=10)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($description){
                $queryArguments += 'description=' + $description
            }
            if ($domain){
                $queryArguments += 'domain=' + $domain
            }
            if ($filter){
                $queryArguments += 'filter=' + $filter
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($password){
                $queryArguments += 'password=' + $password
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($search_groups){
                $queryArguments += 'search_groups=' + $search_groups
            }
            if ($search_users){
                $queryArguments += 'search_users=' + $search_users
            }
            if ($user){
                $queryArguments += 'user=' + $user
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/ads/$parameter1/search" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.objects,$ISIObject.resume
            }else{
                return $ISIObject.objects
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderAdsSearch

function Get-isiAuthProvidersFile{
<#
.SYNOPSIS
    Get Auth Providers File

.DESCRIPTION
    List all file providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/file" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.file
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersFile

function Get-isiAuthProviderFile{
<#
.SYNOPSIS
    Get Auth Provider File

.DESCRIPTION
    Retrieve the file provider.
 
.PARAMETER id
    Provider id

.PARAMETER name
    Provider name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/file/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.file
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderFile

function Get-isiAuthProvidersKrb5v1{
<#
.SYNOPSIS
    Get Auth Providers Krb5

.DESCRIPTION
    List all KRB5 providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/krb5" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.krb5
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersKrb5v1
Set-Alias Get-isiAuthProvidersKrb5 -Value Get-isiAuthProvidersKrb5v1
Export-ModuleMember -Alias Get-isiAuthProvidersKrb5

function Get-isiAuthProvidersKrb5v3{
<#
.SYNOPSIS
    Get Auth Providers Krb5

.DESCRIPTION
    List all KRB5 providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/providers/krb5" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.krb5
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersKrb5v3

function Get-isiAuthProviderKrb5v1{
<#
.SYNOPSIS
    Get Auth Provider Krb5

.DESCRIPTION
    Retrieve the KRB5 provider.
 
.PARAMETER id
    Provider id

.PARAMETER name
    Provider name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/krb5/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.krb5
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderKrb5v1
Set-Alias Get-isiAuthProviderKrb5 -Value Get-isiAuthProviderKrb5v1
Export-ModuleMember -Alias Get-isiAuthProviderKrb5

function Get-isiAuthProviderKrb5v3{
<#
.SYNOPSIS
    Get Auth Provider Krb5

.DESCRIPTION
    Retrieve the KRB5 provider.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/providers/krb5/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.krb5
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderKrb5v3

function Get-isiAuthProvidersLdapv1{
<#
.SYNOPSIS
    Get Auth Providers Ldap

.DESCRIPTION
    List all LDAP providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/ldap" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ldap
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersLdapv1
Set-Alias Get-isiAuthProvidersLdap -Value Get-isiAuthProvidersLdapv1
Export-ModuleMember -Alias Get-isiAuthProvidersLdap

function Get-isiAuthProvidersLdapv3{
<#
.SYNOPSIS
    Get Auth Providers Ldap

.DESCRIPTION
    List all LDAP providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/providers/ldap" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ldap
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersLdapv3

function Get-isiAuthProvidersLdapv4{
<#
.SYNOPSIS
    Get Auth Providers Ldap

.DESCRIPTION
    List all LDAP providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/auth/providers/ldap" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ldap
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersLdapv4

function Get-isiAuthProviderLdapv1{
<#
.SYNOPSIS
    Get Auth Provider Ldap

.DESCRIPTION
    Retrieve the LDAP provider.
 
.PARAMETER id
    Provider id

.PARAMETER name
    Provider name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/ldap/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ldap
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderLdapv1
Set-Alias Get-isiAuthProviderLdap -Value Get-isiAuthProviderLdapv1
Export-ModuleMember -Alias Get-isiAuthProviderLdap

function Get-isiAuthProviderLdapv3{
<#
.SYNOPSIS
    Get Auth Provider Ldap

.DESCRIPTION
    Retrieve the LDAP provider.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/providers/ldap/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ldap
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderLdapv3

function Get-isiAuthProvidersLdapv4{
<#
.SYNOPSIS
    Get Auth Providers Ldap

.DESCRIPTION
    Retrieve the LDAP provider.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/auth/providers/ldap/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.ldap
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersLdapv4

function Get-isiAuthProvidersLocal{
<#
.SYNOPSIS
    Get Auth Providers Local

.DESCRIPTION
    List all local providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/local" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.local
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersLocal

function Get-isiAuthProviderLocal{
<#
.SYNOPSIS
    Get Auth Provider Local

.DESCRIPTION
    Retrieve the local provider.
 
.PARAMETER id
    Provider id

.PARAMETER name
    Provider name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/local/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.local
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderLocal

function Get-isiAuthProvidersNisv1{
<#
.SYNOPSIS
    Get Auth Providers Nis

.DESCRIPTION
    List all NIS providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/nis" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.nis
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersNisv1
Set-Alias Get-isiAuthProvidersNis -Value Get-isiAuthProvidersNisv1
Export-ModuleMember -Alias Get-isiAuthProvidersNis

function Get-isiAuthProvidersNisv3{
<#
.SYNOPSIS
    Get Auth Providers Nis

.DESCRIPTION
    List all NIS providers.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/providers/nis" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.nis
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersNisv3

function Get-isiAuthProviderNisv1{
<#
.SYNOPSIS
    Get Auth Provider Nis

.DESCRIPTION
    Retrieve the NIS provider.
 
.PARAMETER id
    Provider id

.PARAMETER name
    Provider name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/nis/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.nis
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderNisv1
Set-Alias Get-isiAuthProviderNis -Value Get-isiAuthProviderNisv1
Export-ModuleMember -Alias Get-isiAuthProviderNis

function Get-isiAuthProviderNisv3{
<#
.SYNOPSIS
    Get Auth Provider Nis

.DESCRIPTION
    Retrieve the NIS provider.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/providers/nis/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.nis
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProviderNisv3

function Get-isiAuthProvidersSummaryv1{
<#
.SYNOPSIS
    Get Auth Providers Summary

.DESCRIPTION
    Retrieve the summary information.
 
.PARAMETER access_zone
    Filter providers by zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/providers/summary" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.provider_instances
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersSummaryv1
Set-Alias Get-isiAuthProvidersSummary -Value Get-isiAuthProvidersSummaryv1
Export-ModuleMember -Alias Get-isiAuthProvidersSummary

function Get-isiAuthProvidersSummaryv3{
<#
.SYNOPSIS
    Get Auth Providers Summary

.DESCRIPTION
    Retrieve the summary information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/auth/providers/summary" -Cluster $Cluster
            return $ISIObject.provider_instances
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthProvidersSummaryv3

function Get-isiAuthRoles{
<#
.SYNOPSIS
    Get Auth Roles

.DESCRIPTION
    List all roles.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resolve_names
    Filter users by zone.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/roles" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.roles,$ISIObject.resume
            }else{
                return $ISIObject.roles
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthRoles

function Get-isiAuthRole{
<#
.SYNOPSIS
    Get Auth Role

.DESCRIPTION
    Retrieve the role information.
 
.PARAMETER id
    Role id

.PARAMETER name
    Role name

.PARAMETER resolve_names
    Resolve names of personas.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/roles/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.roles
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthRole

function Get-isiAuthRoleMembers{
<#
.SYNOPSIS
    Get Auth Role Members

.DESCRIPTION
    List all the members of the role.
 
.PARAMETER role_id
    Role role_id

.PARAMETER role_name
    Role role_name

.PARAMETER resolve_names
    Resolve names of personas.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$role_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$role_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('role_id')){
                $parameter1 = $role_id
            } else {
                $parameter1 = $role_name
            }
            $queryArguments = @()
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/roles/$parameter1/members" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.members
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthRoleMembers

function Get-isiAuthRolePrivileges{
<#
.SYNOPSIS
    Get Auth Role Privileges

.DESCRIPTION
    List all privileges in the role.
 
.PARAMETER role_id
    Role role_id

.PARAMETER role_name
    Role role_name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$role_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$role_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('role_id')){
                $parameter1 = $role_id
            } else {
                $parameter1 = $role_name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/roles/$parameter1/privileges" -Cluster $Cluster
            return $ISIObject.privileges
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthRolePrivileges

function Get-isiAuthSettingsAcls{
<#
.SYNOPSIS
    Get Auth Settings Acls

.DESCRIPTION
    Retrieve the ACL policy settings and preset configurations.
 
.PARAMETER preset
    If specified the preset configuration values for all applicable ACL policies are returned.
    Valid inputs: balanced,unix,windows

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('balanced','unix','windows')][string]$preset,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($preset){
                $queryArguments += 'preset=' + $preset
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/settings/acls" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.acl_policy_settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthSettingsAcls

function Get-isiAuthSettingsGlobal{
<#
.SYNOPSIS
    Get Auth Settings Global

.DESCRIPTION
    Retrieve the global settings.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER access_zone
    Zone which contains any per-zone settings.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/settings/global" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.global_settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthSettingsGlobal

function Get-isiAuthSettingsKrb5Defaults{
<#
.SYNOPSIS
    Get Auth Settings Krb5 Defaults

.DESCRIPTION
    Retrieve the krb5 settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/settings/krb5/defaults" -Cluster $Cluster
            return $ISIObject.krb5_settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthSettingsKrb5Defaults

function Get-isiAuthSettingsKrb5Domains{
<#
.SYNOPSIS
    Get Auth Settings Krb5 Domains

.DESCRIPTION
    Retrieve the krb5 settings for domains.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/settings/krb5/domains" -Cluster $Cluster
            return $ISIObject.domain
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthSettingsKrb5Domains

function Get-isiAuthSettingsKrb5Domain{
<#
.SYNOPSIS
    Get Auth Settings Krb5 Domain

.DESCRIPTION
    View the krb5 domain settings.
 
.PARAMETER id
    Domain id

.PARAMETER name
    Domain name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/settings/krb5/domains/$parameter1" -Cluster $Cluster
            return $ISIObject.domain
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthSettingsKrb5Domain

function Get-isiAuthSettingsKrb5Realms{
<#
.SYNOPSIS
    Get Auth Settings Krb5 Realms

.DESCRIPTION
    Retrieve the krb5 settings for realms.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/settings/krb5/realms" -Cluster $Cluster
            return $ISIObject.realm
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthSettingsKrb5Realms

function Get-isiAuthSettingsKrb5Realm{
<#
.SYNOPSIS
    Get Auth Settings Krb5 Realm

.DESCRIPTION
    Retrieve the krb5 settings for realms.
 
.PARAMETER id
    Realm id

.PARAMETER name
    Realm name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/settings/krb5/realms/$parameter1" -Cluster $Cluster
            return $ISIObject.realm
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthSettingsKrb5Realm

function Get-isiAuthSettingsMapping{
<#
.SYNOPSIS
    Get Auth Settings Mapping

.DESCRIPTION
    Retrieve the mapping settings.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER access_zone
    Access zone which contains mapping settings.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/settings/mapping" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.mapping_settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthSettingsMapping

function Get-isiAuthShells{
<#
.SYNOPSIS
    Get Auth Shells

.DESCRIPTION
    List all shells.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/shells" -Cluster $Cluster
            return $ISIObject.shells
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthShells

function Get-isiAuthUsers{
<#
.SYNOPSIS
    Get Auth Users

.DESCRIPTION
    List all users.
 
.PARAMETER cached
    If true, only return cached objects.

.PARAMETER domain
    Filter users by domain.

.PARAMETER filter
    Filter users by name prefix.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER provider
    Filter users by provider.

.PARAMETER query_member_of
    Enumerate all users that a group is a member of.

.PARAMETER resolve_names
    Resolve names of personas.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER access_zone
    Filter users by zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$cached,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$domain,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$provider,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][bool]$query_member_of,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($cached){
                $queryArguments += 'cached=' + $cached
            }
            if ($domain){
                $queryArguments += 'domain=' + $domain
            }
            if ($filter){
                $queryArguments += 'filter=' + $filter
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($provider){
                $queryArguments += 'provider=' + $provider
            }
            if ($query_member_of){
                $queryArguments += 'query_member_of=' + $query_member_of
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/users" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.users,$ISIObject.resume
            }else{
                return $ISIObject.users
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthUsers

function Get-isiAuthUser{
<#
.SYNOPSIS
    Get Auth User

.DESCRIPTION
    Retrieve the user information.
 
.PARAMETER id
    User id

.PARAMETER name
    User name

.PARAMETER cached
    If true, only return cached objects.

.PARAMETER provider
    Filter users by provider.

.PARAMETER resolve_names
    Resolve names of personas.

.PARAMETER access_zone
    Filter users by zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$cached,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$provider,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($cached){
                $queryArguments += 'cached=' + $cached
            }
            if ($provider){
                $queryArguments += 'provider=' + $provider
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/users/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.users
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthUser

function Get-isiAuthUserMemberOfGroupsv3{
<#
.SYNOPSIS
    Get Auth User Member Of Groups

.DESCRIPTION
    List all groups the user is a member of.
 
.PARAMETER user_id
    User user_id

.PARAMETER user_name
    User user_name

.PARAMETER provider
    Filter groups by provider.

.PARAMETER resolve_names
    Resolve names of personas.

.PARAMETER access_zone
    Filter groups by zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$user_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$user_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$provider,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('user_id')){
                $parameter1 = $user_id
            } else {
                $parameter1 = $user_name
            }
            $queryArguments = @()
            if ($provider){
                $queryArguments += 'provider=' + $provider
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/auth/users/$parameter1/member-of" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.member_of
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthUserMemberOfGroupsv3

function Get-isiAuthUserMemberOfGroupsv1{
<#
.SYNOPSIS
    Get Auth User Member Of Groups

.DESCRIPTION
    List all groups the user is a member of.
 
.PARAMETER user_id
    User user_id

.PARAMETER user_name
    User user_name

.PARAMETER provider
    Filter groups by provider.

.PARAMETER resolve_names
    Resolve names of personas.

.PARAMETER access_zone
    Filter groups by zone.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$user_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$user_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$provider,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('user_id')){
                $parameter1 = $user_id
            } else {
                $parameter1 = $user_name
            }
            $queryArguments = @()
            if ($provider){
                $queryArguments += 'provider=' + $provider
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/users/$parameter1/member_of" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.member_of
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthUserMemberOfGroupsv1

function Get-isiAuthWellknowns{
<#
.SYNOPSIS
    Get Auth Wellknowns

.DESCRIPTION
    List all wellknown personas.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/auth/wellknowns" -Cluster $Cluster
            return $ISIObject.wellknowns
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthWellknowns

function Get-isiAuthWellknown{
<#
.SYNOPSIS
    Get Auth Wellknown

.DESCRIPTION
    Retrieve the wellknown persona.
 
.PARAMETER id
    Wellknown id

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $parameter1 = $id
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/auth/wellknowns/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.wellknowns
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiAuthWellknown

function Get-isiCertificateServer{
<#
.SYNOPSIS
    Get Certificate Server

.DESCRIPTION
    Retrieve a list of all configured TLS server certificates.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/certificate/server" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.certificates,$ISIObject.resume
            }else{
                return $ISIObject.certificates
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCertificateServer

function Get-isiCertificateServer{
<#
.SYNOPSIS
    Get Certificate Server

.DESCRIPTION
    Retrieve a single TLS server certificate.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/certificate/server/$parameter1" -Cluster $Cluster
            return $ISIObject.certificates
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCertificateServer

function Get-isiCloudAccess{
<#
.SYNOPSIS
    Get Cloud Access

.DESCRIPTION
    List all accessible cluster identifiers.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cloud/access" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.clusters
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudAccess

function Get-isiCloudAccess{
<#
.SYNOPSIS
    Get Cloud Access

.DESCRIPTION
    Retrieve cloud access information.
 
.PARAMETER id
    Guid id

.PARAMETER name
    Guid name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cloud/access/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.clusters
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudAccess

function Get-isiCloudAccountsv3{
<#
.SYNOPSIS
    Get Cloud Accounts

.DESCRIPTION
    List all accounts.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cloud/accounts" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.accounts
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudAccountsv3

function Get-isiCloudAccountsv4{
<#
.SYNOPSIS
    Get Cloud Accounts

.DESCRIPTION
    List all accounts.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/cloud/accounts" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.accounts
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudAccountsv4

function Get-isiCloudAccountv3{
<#
.SYNOPSIS
    Get Cloud Account

.DESCRIPTION
    Retrieve cloud account information.
 
.PARAMETER id
    Account id

.PARAMETER name
    Account name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cloud/accounts/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.accounts
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudAccountv3

function Get-isiCloudAccountv4{
<#
.SYNOPSIS
    Get Cloud Account

.DESCRIPTION
    Retrieve cloud account information.
 
.PARAMETER id
    Account id

.PARAMETER name
    Account name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/cloud/accounts/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.accounts
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudAccountv4

function Get-isiCloudJobsv3{
<#
.SYNOPSIS
    Get Cloud Jobs

.DESCRIPTION
    List all cloudpools jobs.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cloud/jobs" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.jobs
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudJobsv3

function Get-isiCloudJobsFilev3{
<#
.SYNOPSIS
    Get Cloud Jobs File

.DESCRIPTION
    Retrieve files associated with a cloudpool job.
 
.PARAMETER id
    Job id

.PARAMETER name
    Job name

.PARAMETER batch
    If true, only "limit" and "page" arguments are honored. Query will return all results, unsorted, as quickly as possible.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER page
    Works only when "batch" parameter and "limit" parameters are specified. Indicates which the page index of results to be returned

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$batch,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$page,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($batch){
                $queryArguments += 'batch=' + $batch
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($page){
                $queryArguments += 'page=' + $page
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cloud/jobs-files/$parameter1" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.files,$ISIObject.resume
            }else{
                return $ISIObject.files
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudJobsFilev3

function Get-isiCloudJobv3{
<#
.SYNOPSIS
    Get Cloud Job

.DESCRIPTION
    Retrieve cloudpool job information.
 
.PARAMETER id
    Job id

.PARAMETER name
    Job name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cloud/jobs/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.jobs
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudJobv3

function Get-isiCloudPoolsv3{
<#
.SYNOPSIS
    Get Cloud Pools

.DESCRIPTION
    List all pools.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cloud/pools" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.pools
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudPoolsv3

function Get-isiCloudPoolv3{
<#
.SYNOPSIS
    Get Cloud Pool

.DESCRIPTION
    Retrieve cloud pool information
 
.PARAMETER id
    Pool id

.PARAMETER name
    Pool name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cloud/pools/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.pools
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudPoolv3

function Get-isiCloudProxies{
<#
.SYNOPSIS
    Get Cloud Proxies

.DESCRIPTION
    List all proxies.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/cloud/proxies" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.proxies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudProxies

function Get-isiCloudProxy{
<#
.SYNOPSIS
    Get Cloud Proxy

.DESCRIPTION
    Retrieve cloud account information.
 
.PARAMETER id
    Proxy id

.PARAMETER name
    Proxy name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/cloud/proxies/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.proxies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudProxy

function Get-isiCloudSettingsv3{
<#
.SYNOPSIS
    Get Cloud Settings

.DESCRIPTION
    List all cloud settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cloud/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudSettingsv3

function Get-isiCloudSettingsReportingEula{
<#
.SYNOPSIS
    Get Cloud Settings Reporting Eula

.DESCRIPTION
    View telemetry collection EULA acceptance and content URI.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cloud/settings/reporting-eula" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiCloudSettingsReportingEula

function Get-isiClusterConfigv1{
<#
.SYNOPSIS
    Get Cluster Config

.DESCRIPTION
    Retrieve the cluster information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/cluster/config" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterConfigv1
Set-Alias Get-isiClusterConfig -Value Get-isiClusterConfigv1
Export-ModuleMember -Alias Get-isiClusterConfig

function Get-isiClusterConfigv3{
<#
.SYNOPSIS
    Get Cluster Config

.DESCRIPTION
    Retrieve the cluster information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/config" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterConfigv3

function Get-isiClusterDiagnosticsGather{
<#
.SYNOPSIS
    Get Cluster Diagnostics Gather

.DESCRIPTION
    Get the status of isi_gather_info.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/diagnostics/gather" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterDiagnosticsGather

function Get-isiClusterDiagnosticsGatherSettings{
<#
.SYNOPSIS
    Get Cluster Diagnostics Gather Settings

.DESCRIPTION
    Get the default options for isi_gather_info.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/diagnostics/gather/settings" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterDiagnosticsGatherSettings

function Get-isiClusterDiagnosticsGatherStatus{
<#
.SYNOPSIS
    Get Cluster Diagnostics Gather Status

.DESCRIPTION
    Get the status of isi_gather_info.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/diagnostics/gather/status" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterDiagnosticsGatherStatus

function Get-isiClusterDiagnosticsNetlogger{
<#
.SYNOPSIS
    Get Cluster Diagnostics Netlogger

.DESCRIPTION
    Get the status of isi_netlogger.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/diagnostics/netlogger" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterDiagnosticsNetlogger

function Get-isiClusterDiagnosticsNetloggerSettings{
<#
.SYNOPSIS
    Get Cluster Diagnostics Netlogger Settings

.DESCRIPTION
    Get the default options for isi_netlogger.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/diagnostics/netlogger/settings" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterDiagnosticsNetloggerSettings

function Get-isiClusterDiagnosticsNetloggerStatus{
<#
.SYNOPSIS
    Get Cluster Diagnostics Netlogger Status

.DESCRIPTION
    Get the status of isi_netlogger.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/diagnostics/netlogger/status" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterDiagnosticsNetloggerStatus

function Get-isiClusterEmail{
<#
.SYNOPSIS
    Get Cluster Email

.DESCRIPTION
    Get the cluster email notification settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/cluster/email" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterEmail

function Get-isiClusterEmailDefaultTemplate{
<#
.SYNOPSIS
    Get Cluster Email Default Template

.DESCRIPTION
    Get the default template for event notification emails.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/email/default-template" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterEmailDefaultTemplate

function Get-isiClusterExternalIPsv1{
<#
.SYNOPSIS
    Get Cluster External IPs

.DESCRIPTION
    Retrieve the cluster IP addresses.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/cluster/external-ips" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterExternalIPsv1

function Get-isiClusterExternalIPsv2{
<#
.SYNOPSIS
    Get Cluster External IPs

.DESCRIPTION
    Retrieve the cluster IP addresses including IPV4 and IPV6.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/2/cluster/external-ips" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterExternalIPsv2
Set-Alias Get-isiClusterExternalIPs -Value Get-isiClusterExternalIPsv2
Export-ModuleMember -Alias Get-isiClusterExternalIPs

function Get-isiClusterIdentityv1{
<#
.SYNOPSIS
    Get Cluster Identity

.DESCRIPTION
    Retrieve the login information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/cluster/identity" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterIdentityv1
Set-Alias Get-isiClusterIdentity -Value Get-isiClusterIdentityv1
Export-ModuleMember -Alias Get-isiClusterIdentity

function Get-isiClusterIdentityv3{
<#
.SYNOPSIS
    Get Cluster Identity

.DESCRIPTION
    Retrieve the login information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/identity" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterIdentityv3

function Get-isiClusterNodes{
<#
.SYNOPSIS
    Get Cluster Nodes

.DESCRIPTION
    List the nodes on this cluster.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodes

function Get-isiClusterNodesAvailable{
<#
.SYNOPSIS
    Get Cluster Nodes Available

.DESCRIPTION
    List all nodes that are available to add to this cluster.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes-available" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodesAvailable

function Get-isiClusterNode{
<#
.SYNOPSIS
    Get Cluster Node

.DESCRIPTION
    Retrieve node information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNode

function Get-isiClusterNodeDrives{
<#
.SYNOPSIS
    Get Cluster Node Drives

.DESCRIPTION
    List the drives on this node.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/drives" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeDrives

function Get-isiClusterNodeDrivesPurposelist{
<#
.SYNOPSIS
    Get Cluster Node Drives Purposelist

.DESCRIPTION
    Lists the available purposes for drives in this node.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/drives-purposelist" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeDrivesPurposelist

function Get-isiClusterNodeDrive{
<#
.SYNOPSIS
    Get Cluster Node Drive

.DESCRIPTION
    Retrieve drive information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER driveidid2
     driveidid2

.PARAMETER driveidname2
     driveidname2

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$driveidid2,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$driveidname2,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            if ($psBoundParameters.ContainsKey('driveidid2')){
                $parameter2 = $driveidid2
            } else {
                $parameter2 = $driveidname2
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/drives/$parameter2" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeDrive

function Get-isiClusterNodeDriveFirmware{
<#
.SYNOPSIS
    Get Cluster Node Drive Firmware

.DESCRIPTION
    Retrieve drive firmware information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER driveidid2
     driveidid2

.PARAMETER driveidname2
     driveidname2

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$driveidid2,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$driveidname2,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            if ($psBoundParameters.ContainsKey('driveidid2')){
                $parameter2 = $driveidid2
            } else {
                $parameter2 = $driveidname2
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/drives/$parameter2" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeDriveFirmware

function Get-isiClusterNodeDriveFirmwareUpdate{
<#
.SYNOPSIS
    Get Cluster Node Drive Firmware Update

.DESCRIPTION
    Retrieve firmware update information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER driveidid2
     driveidid2

.PARAMETER driveidname2
     driveidname2

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$driveidid2,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$driveidname2,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            if ($psBoundParameters.ContainsKey('driveidid2')){
                $parameter2 = $driveidid2
            } else {
                $parameter2 = $driveidname2
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/drives/$parameter2" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeDriveFirmwareUpdate

function Get-isiClusterNodeHardware{
<#
.SYNOPSIS
    Get Cluster Node Hardware

.DESCRIPTION
    Retrieve node hardware identity information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/hardware" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeHardware

function Get-isiClusterNodeHardwareFast{
<#
.SYNOPSIS
    Get Cluster Node Hardware Fast

.DESCRIPTION
    Quickly retrieve a subset of node hardware identity information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/hardware-fast" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeHardwareFast

function Get-isiClusterNodePartitions{
<#
.SYNOPSIS
    Get Cluster Node Partitions

.DESCRIPTION
    Retrieve node partition information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/partitions" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodePartitions

function Get-isiClusterNodeSensors{
<#
.SYNOPSIS
    Get Cluster Node Sensors

.DESCRIPTION
    Retrieve node sensor information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/sensors" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeSensors

function Get-isiClusterNodeState{
<#
.SYNOPSIS
    Get Cluster Node State

.DESCRIPTION
    Retrieve node state information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/state" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeState

function Get-isiClusterNodeStateReadonly{
<#
.SYNOPSIS
    Get Cluster Node State Readonly

.DESCRIPTION
    Retrieve node readonly state information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/state/readonly" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeStateReadonly

function Get-isiClusterNodeStateServicelight{
<#
.SYNOPSIS
    Get Cluster Node State Servicelight

.DESCRIPTION
    Retrieve node service light state information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/state/servicelight" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeStateServicelight

function Get-isiClusterNodeStateSmartfail{
<#
.SYNOPSIS
    Get Cluster Node State Smartfail

.DESCRIPTION
    Retrieve node smartfail state information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/state/smartfail" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeStateSmartfail

function Get-isiClusterNodeStatus{
<#
.SYNOPSIS
    Get Cluster Node Status

.DESCRIPTION
    Retrieve node status information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/status" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeStatus

function Get-isiClusterNodeStatusBatterystatus{
<#
.SYNOPSIS
    Get Cluster Node Status Batterystatus

.DESCRIPTION
    Retrieve node battery status information.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/nodes/$parameter1/status/batterystatus" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterNodeStatusBatterystatus

function Get-isiClusterOwner{
<#
.SYNOPSIS
    Get Cluster Owner

.DESCRIPTION
    Get the cluster contact info settings
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/cluster/owner" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterOwner

function Get-isiClusterFsStats{
<#
.SYNOPSIS
    Get Cluster FS Stats

.DESCRIPTION
    Retrieve the filesystem statistics.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/cluster/statfs" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterFsStats

function Get-isiClusterTimev1{
<#
.SYNOPSIS
    Get Cluster Time

.DESCRIPTION
    Retrieve the current cluster time.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/cluster/time" -Cluster $Cluster
            return $ISIObject.time
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterTimev1
Set-Alias Get-isiClusterTime -Value Get-isiClusterTimev1
Export-ModuleMember -Alias Get-isiClusterTime

function Get-isiClusterTimev3{
<#
.SYNOPSIS
    Get Cluster Time

.DESCRIPTION
    Retrieve the current time as reported by each node.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/time" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterTimev3

function Get-isiClusterTimezone{
<#
.SYNOPSIS
    Get Cluster Timezone

.DESCRIPTION
    Get the cluster timezone.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/timezone" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterTimezone

function Get-isiClusterTimezoneRegion{
<#
.SYNOPSIS
    Get Cluster Timezone Region

.DESCRIPTION
    List timezone regions.
 
.PARAMETER id
    Region id

.PARAMETER name
    Region name

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER dst_reset
    This query arg is not needed in normal use cases.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER show_all
    Show all timezones within the region specified in the URI.

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$dst_reset,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][bool]$show_all,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($dst_reset){
                $queryArguments += 'dst_reset=' + $dst_reset
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($show_all){
                $queryArguments += 'show_all=' + $show_all
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/cluster/timezone/regions/$parameter1" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.regions,$ISIObject.resume
            }else{
                return $ISIObject.regions
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterTimezoneRegion

function Get-isiClusterTimezoneSettings{
<#
.SYNOPSIS
    Get Cluster Timezone Settings

.DESCRIPTION
    Retrieve the cluster timezone.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/timezone/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterTimezoneSettings

function Get-isiClusterVersion{
<#
.SYNOPSIS
    Get Cluster Version

.DESCRIPTION
    Retrieve the OneFS version as reported by each node.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/cluster/version" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiClusterVersion

function Get-isiDebugStats{
<#
.SYNOPSIS
    Get Debug Stats

.DESCRIPTION
    List cumulative call statistics for each resource.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/debug/stats" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiDebugStats

function Get-isiDedupeDedupeSummary{
<#
.SYNOPSIS
    Get Dedupe Summary

.DESCRIPTION
    Return summary information about dedupe.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/dedupe/dedupe-summary" -Cluster $Cluster
            return $ISIObject.summary
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiDedupeDedupeSummary

function Get-isiDedupeReports{
<#
.SYNOPSIS
    Get Dedupe Reports

.DESCRIPTION
    List dedupe reports.
 
.PARAMETER begin
    Restrict the query to reports at or after the given time, in seconds since the Epoch.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER end
    Restrict the query to reports at or before the given time, in seconds since the Epoch.

.PARAMETER job_id
    Restrict the query to the given job ID.

.PARAMETER job_type
    Restrict the query to the given job type.
    Valid inputs: Dedupe,DedupeAssessment

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.
    Valid inputs: id,start_time,end_time

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$job_id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('Dedupe','DedupeAssessment')][string]$job_type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][ValidateSet('id','start_time','end_time')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($job_id){
                $queryArguments += 'job_id=' + $job_id
            }
            if ($job_type){
                $queryArguments += 'job_type=' + $job_type
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/dedupe/reports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiDedupeReports

function Get-isiDedupeReport{
<#
.SYNOPSIS
    Get Dedupe Report

.DESCRIPTION
    Retrieve a report for a single dedupe job.
 
.PARAMETER id
    Report id

.PARAMETER name
    Report name

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/dedupe/reports/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.reports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiDedupeReport

function Get-isiDedupeSettings{
<#
.SYNOPSIS
    Get Dedupe Settings

.DESCRIPTION
    Retrieve the dedupe settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/dedupe/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiDedupeSettings

function Get-isiEventAlertConditionsv3{
<#
.SYNOPSIS
    Get Event Alert Conditions

.DESCRIPTION
    List all alert conditions.
 
.PARAMETER channel_ids
    Return only conditions for the specified channel:

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$channel_ids,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($channel_ids){
                $queryArguments += 'channel_ids=' + $channel_ids
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/event/alert-conditions" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.'alert-conditions',$ISIObject.resume
            }else{
                return $ISIObject.'alert-conditions'
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventAlertConditionsv3

function Get-isiEventAlertConditionsv4{
<#
.SYNOPSIS
    Get Event Alert Conditions

.DESCRIPTION
    List all alert conditions.
 
.PARAMETER channel_ids
    Return only conditions for the specified channel:

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$channel_ids,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($channel_ids){
                $queryArguments += 'channel_ids=' + $channel_ids
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/event/alert-conditions" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.'alert-conditions',$ISIObject.resume
            }else{
                return $ISIObject.'alert-conditions'
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventAlertConditionsv4

function Get-isiEventAlertConditionv3{
<#
.SYNOPSIS
    Get Event Alert Condition

.DESCRIPTION
    Retrieve the alert-condition.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/event/alert-conditions/$parameter1" -Cluster $Cluster
            return $ISIObject.'alert-conditions'
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventAlertConditionv3

function Get-isiEventAlertConditionv4{
<#
.SYNOPSIS
    Get Event Alert Condition

.DESCRIPTION
    Retrieve the alert-condition.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/event/alert-conditions/$parameter1" -Cluster $Cluster
            return $ISIObject.'alert-conditions'
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventAlertConditionv4

function Get-isiEventCategories{
<#
.SYNOPSIS
    Get Event Categories

.DESCRIPTION
    List all eventgroup categories.
 
.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/event/categories" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.categories,$ISIObject.resume
            }else{
                return $ISIObject.categories
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventCategories

function Get-isiEventCategory{
<#
.SYNOPSIS
    Get Event Category

.DESCRIPTION
    Retrieve the eventgroup category.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/event/categories/$parameter1" -Cluster $Cluster
            return $ISIObject.categories
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventCategory

function Get-isiEventChannels{
<#
.SYNOPSIS
    Get Event Channels

.DESCRIPTION
    List all channels.
 
.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/event/channels" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.channels,$ISIObject.resume
            }else{
                return $ISIObject.channels
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventChannels

function Get-isiEventChannel{
<#
.SYNOPSIS
    Get Event Channel

.DESCRIPTION
    Retrieve the channel.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/event/channels/$parameter1" -Cluster $Cluster
            return $ISIObject.channels
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventChannel

function Get-isiEventEventgroupDefinitionsv3{
<#
.SYNOPSIS
    Get Event Eventgroup Definitions

.DESCRIPTION
    List all eventgroup definitions.
 
.PARAMETER category
    Return eventgroups in the specified category

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$category,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($category){
                $queryArguments += 'category=' + $category
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/event/eventgroup-definitions" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.'eventgroup-definitions',$ISIObject.resume
            }else{
                return $ISIObject.'eventgroup-definitions'
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventEventgroupDefinitionsv3

function Get-isiEventEventgroupDefinitionsv4{
<#
.SYNOPSIS
    Get Event Eventgroup Definitions

.DESCRIPTION
    List all eventgroup definitions.
 
.PARAMETER category
    Return eventgroups in the specified category

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$category,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($category){
                $queryArguments += 'category=' + $category
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/event/eventgroup-definitions" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.'eventgroup-definitions',$ISIObject.resume
            }else{
                return $ISIObject.'eventgroup-definitions'
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventEventgroupDefinitionsv4

function Get-isiEventEventgroupDefinitionv3{
<#
.SYNOPSIS
    Get Event Eventgroup Definition

.DESCRIPTION
    Retrieve the eventgroup definition.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/event/eventgroup-definitions/$parameter1" -Cluster $Cluster
            return $ISIObject.'eventgroup-definitions'
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventEventgroupDefinitionv3

function Get-isiEventEventgroupDefinitionv4{
<#
.SYNOPSIS
    Get Event Eventgroup Definition

.DESCRIPTION
    Retrieve the eventgroup definition.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/event/eventgroup-definitions/$parameter1" -Cluster $Cluster
            return $ISIObject.'eventgroup-definitions'
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventEventgroupDefinitionv4

function Get-isiEventEventgroupOccurrences{
<#
.SYNOPSIS
    Get Event Eventgroup Occurrences

.DESCRIPTION
    List all eventgroup occurrences.
 
.PARAMETER begin
    events that are in progress after this time

.PARAMETER cause
    Filter for cause

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER end
    events that were in progress before this time

.PARAMETER event_count
    events for which event_count > this

.PARAMETER fixer
    Filter for eventgroup fixer

.PARAMETER ignore
    Filter for ignored eventgroups

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resolved
    Filter for resolved eventgroups

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$cause,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$event_count,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$fixer,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][bool]$ignore,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][bool]$resolved,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=10)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=11)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($cause){
                $queryArguments += 'cause=' + $cause
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($event_count){
                $queryArguments += 'event_count=' + $event_count
            }
            if ($fixer){
                $queryArguments += 'fixer=' + $fixer
            }
            if ($ignore){
                $queryArguments += 'ignore=' + $ignore
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resolved){
                $queryArguments += 'resolved=' + $resolved
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/event/eventgroup-occurrences" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.eventgroups,$ISIObject.resume
            }else{
                return $ISIObject.eventgroups
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventEventgroupOccurrences

function Get-isiEventEventgroupOccurrence{
<#
.SYNOPSIS
    Get Event Eventgroup Occurrence

.DESCRIPTION
    Retrieve individual eventgroup occurrence.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/event/eventgroup-occurrences/$parameter1" -Cluster $Cluster
            return $ISIObject.eventgroups
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventEventgroupOccurrence

function Get-isiEventEventlists{
<#
.SYNOPSIS
    Get Event Eventlists

.DESCRIPTION
    List all event occurrences grouped by eventgroup occurrence.
 
.PARAMETER event_instance
    Return only this event occurrence

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$event_instance,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($event_instance){
                $queryArguments += 'event_instance=' + $event_instance
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/event/eventlists" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.eventlists,$ISIObject.resume
            }else{
                return $ISIObject.eventlists
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventEventlists

function Get-isiEventEventlist{
<#
.SYNOPSIS
    Get Event Eventlist

.DESCRIPTION
    Retrieve the list of events for a eventgroup occureence.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/event/eventlists/$parameter1" -Cluster $Cluster
            return $ISIObject.eventlist
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventEventlist

function Get-isiEventSettings{
<#
.SYNOPSIS
    Get Event Settings

.DESCRIPTION
    Retrieve the settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/event/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEventSettings

function Get-isiFileFilterSettings{
<#
.SYNOPSIS
    Get File Filter Settings

.DESCRIPTION
    View File Filtering settings of an access zone
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/file-filter/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFileFilterSettings

function Get-isiFilepoolDefaultPolicyv1{
<#
.SYNOPSIS
    Get Filepool Default Policy

.DESCRIPTION
    List default file pool policy.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/filepool/default-policy" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.'default-policy'
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolDefaultPolicyv1
Set-Alias Get-isiFilepoolDefaultPolicy -Value Get-isiFilepoolDefaultPolicyv1
Export-ModuleMember -Alias Get-isiFilepoolDefaultPolicy

function Get-isiFilepoolDefaultPolicyv4{
<#
.SYNOPSIS
    Get Filepool Default Policy

.DESCRIPTION
    List default file pool policy.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/filepool/default-policy" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.'default-policy'
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolDefaultPolicyv4

function Get-isiFilepoolPoliciesv1{
<#
.SYNOPSIS
    Get Filepool Policies

.DESCRIPTION
    List all policies.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/filepool/policies" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.policies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolPoliciesv1
Set-Alias Get-isiFilepoolPolicies -Value Get-isiFilepoolPoliciesv1
Export-ModuleMember -Alias Get-isiFilepoolPolicies

function Get-isiFilepoolPoliciesv4{
<#
.SYNOPSIS
    Get Filepool Policies

.DESCRIPTION
    List all policies.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/filepool/policies" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.policies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolPoliciesv4

function Get-isiFilepoolPolicyv1{
<#
.SYNOPSIS
    Get Filepool Policy

.DESCRIPTION
    Retrieve file pool policy information.
 
.PARAMETER id
    Policy id

.PARAMETER name
    Policy name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/filepool/policies/$parameter1" -Cluster $Cluster
            return $ISIObject.policies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolPolicyv1
Set-Alias Get-isiFilepoolPolicy -Value Get-isiFilepoolPolicyv1
Export-ModuleMember -Alias Get-isiFilepoolPolicy

function Get-isiFilepoolPolicyv4{
<#
.SYNOPSIS
    Get Filepool Policy

.DESCRIPTION
    Retrieve file pool policy information.
 
.PARAMETER id
    Polname id

.PARAMETER name
    Polname name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/filepool/policies/$parameter1" -Cluster $Cluster
            return $ISIObject.policies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolPolicyv4

function Get-isiFilepoolTemplatesv1{
<#
.SYNOPSIS
    Get Filepool Templates

.DESCRIPTION
    List all templates.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/filepool/templates" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.templates
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolTemplatesv1
Set-Alias Get-isiFilepoolTemplates -Value Get-isiFilepoolTemplatesv1
Export-ModuleMember -Alias Get-isiFilepoolTemplates

function Get-isiFilepoolTemplatesv4{
<#
.SYNOPSIS
    Get Filepool Templates

.DESCRIPTION
    List all templates.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/filepool/templates" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.templates
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolTemplatesv4

function Get-isiFilepoolTemplatev1{
<#
.SYNOPSIS
    Get Filepool Template

.DESCRIPTION
    List all templates.
 
.PARAMETER id
    Template id

.PARAMETER name
    Template name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/filepool/templates/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.templates
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolTemplatev1
Set-Alias Get-isiFilepoolTemplate -Value Get-isiFilepoolTemplatev1
Export-ModuleMember -Alias Get-isiFilepoolTemplate

function Get-isiFilepoolTemplatev4{
<#
.SYNOPSIS
    Get Filepool Template

.DESCRIPTION
    List all templates.
 
.PARAMETER id
    Name id

.PARAMETER name
    Name name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/filepool/templates/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.templates
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilepoolTemplatev4

function Get-isiFilesystemAccessTime{
<#
.SYNOPSIS
    Get Filesystem Access Time

.DESCRIPTION
    Retrieve settings for access time.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/filesystem/settings/access-time" -Cluster $Cluster
            return $ISIObject.access_time
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilesystemAccessTime

function Get-isiFilesystemCharacterEncoding{
<#
.SYNOPSIS
    Get Filesystem Character Encoding

.DESCRIPTION
    Retrieve current cluster character encoding settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/filesystem/settings/character-encodings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFilesystemCharacterEncoding

function Get-isiFsaPath{
<#
.SYNOPSIS
    Get Fsa Path

.DESCRIPTION
    Return export path as plain text.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET_JSON -Resource "/platform/1/fsa/path" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaPath

function Get-isiFsaResultsv1{
<#
.SYNOPSIS
    Get Fsa Results

.DESCRIPTION
    List all results.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/fsa/results" -Cluster $Cluster
            return $ISIObject.results
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultsv1
Set-Alias Get-isiFsaResults -Value Get-isiFsaResultsv1
Export-ModuleMember -Alias Get-isiFsaResults

function Get-isiFsaResultsv3{
<#
.SYNOPSIS
    Get Fsa Results

.DESCRIPTION
    List all results.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/fsa/results" -Cluster $Cluster
            return $ISIObject.results
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultsv3

function Get-isiFsaResultv1{
<#
.SYNOPSIS
    Get Fsa Result

.DESCRIPTION
    Retrieve result set information.
 
.PARAMETER id
    Result id

.PARAMETER name
    Result name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/fsa/results/$parameter1" -Cluster $Cluster
            return $ISIObject.results
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultv1
Set-Alias Get-isiFsaResult -Value Get-isiFsaResultv1
Export-ModuleMember -Alias Get-isiFsaResult

function Get-isiFsaResultv3{
<#
.SYNOPSIS
    Get Fsa Result

.DESCRIPTION
    Retrieve result set information.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/fsa/results/$parameter1" -Cluster $Cluster
            return $ISIObject.results
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultv3

function Get-isiFsaResultDirectories{
<#
.SYNOPSIS
    Get Fsa Result Directories

.DESCRIPTION
    This resource retrieves directory information. ID in the resource path is the result set ID.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER comp_report
    Result set identifier for comparison of database results.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Limit the number of reported subdirectories.

.PARAMETER path
    Primary directory path to report usage information, which may be specified instead of a LIN.

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$comp_report,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$path,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($comp_report){
                $queryArguments += 'comp_report=' + $comp_report
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($path){
                $queryArguments += 'path=' + $path
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/fsa/results/$parameter1/directories" + "$queryArguments") -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultDirectories

function Get-isiFsaResultDirectory{
<#
.SYNOPSIS
    Get Fsa Result Directory

.DESCRIPTION
    This resource retrieves directory information. ID in the resource path is the result set ID.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER linid2
     linid2

.PARAMETER linname2
     linname2

.PARAMETER comp_report
    Result set identifier for comparison of database results.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Limit the number of reported subdirectories.

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$linid2,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$linname2,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$comp_report,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            if ($psBoundParameters.ContainsKey('linid2')){
                $parameter2 = $linid2
            } else {
                $parameter2 = $linname2
            }
            $queryArguments = @()
            if ($comp_report){
                $queryArguments += 'comp_report=' + $comp_report
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/fsa/results/$parameter1/directories/$parameter2" + "$queryArguments") -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultDirectory

function Get-isiFsaResultHistogram{
<#
.SYNOPSIS
    Get Fsa Result Histogram

.DESCRIPTION
    This resource retrieves a histogram of file counts for an individual FSA result set. ID in the resource path is the result set ID.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/fsa/results/$parameter1/histogram" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultHistogram

function Get-isiFsaResultHistogram{
<#
.SYNOPSIS
    Get Fsa Result Histogram

.DESCRIPTION
    This resource retrieves a histogram of file counts for an individual FSA result set. ID in the resource path is the result set ID.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER statid2
     statid2

.PARAMETER statname2
     statname2

.PARAMETER atime_filter
    Filter according to file accessed time, where the filter value specifies a negative number of seconds representing a time before the begin time of the report. The list of valid atime filter values may be found by performing a histogram breakout by atime and viewing the resulting key values.

.PARAMETER attribute_filter
    Filter according to the name of a file user attribute.

.PARAMETER comp_report
    Result set identifier for comparison of database results.

.PARAMETER ctime_filter
    Filter according to file modified time, where the filter value specifies a negative number of seconds representing a time before the begin time of the report. The list of valid ctime filter values may be found by performing a histogram breakout by ctime and viewing the resulting key values.

.PARAMETER directory_filter
    Filter according to a specific directory, which includes all of its subdirectories.

.PARAMETER disk_pool_filter
    Filter according to the name of a disk pool, which is a set of drives that represent an independent failure domain.

.PARAMETER log_size_filter
    Filter according to file logical size, where the filter value specifies the lower bound in bytes to a set of files that have been grouped by logical size. The list of valid log_size filter values may be found by performing a histogram breakout by log_size and viewing the resulting key values.

.PARAMETER node_pool_filter
    Filter according to the name of a node pool, which is a set of disk pools that belong to nodes of the same equivalence class.

.PARAMETER path_ext_filter
    Filter according to the name of a single file extension.

.PARAMETER phys_size_filter
    Filter according to file physical size, where the filter value specifies the lower bound in bytes to a set of files that have been grouped by physical size. The list of valid phys_size filter values may be found by performing a histogram breakout by phys_size and viewing the resulting key values.

.PARAMETER tier_filter
    Filter according to the name of a storage tier, which is a user-created set of node pools.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$statid2,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$statname2,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$atime_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$attribute_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$comp_report,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][int]$ctime_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$directory_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$disk_pool_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][int]$log_size_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][string]$node_pool_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=10)][ValidateNotNullOrEmpty()][string]$path_ext_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=11)][ValidateNotNullOrEmpty()][int]$phys_size_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=12)][ValidateNotNullOrEmpty()][string]$tier_filter,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=13)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            if ($psBoundParameters.ContainsKey('statid2')){
                $parameter2 = $statid2
            } else {
                $parameter2 = $statname2
            }
            $queryArguments = @()
            if ($atime_filter){
                $queryArguments += 'atime_filter=' + $atime_filter
            }
            if ($attribute_filter){
                $queryArguments += 'attribute_filter=' + $attribute_filter
            }
            if ($comp_report){
                $queryArguments += 'comp_report=' + $comp_report
            }
            if ($ctime_filter){
                $queryArguments += 'ctime_filter=' + $ctime_filter
            }
            if ($directory_filter){
                $queryArguments += 'directory_filter=' + $directory_filter
            }
            if ($disk_pool_filter){
                $queryArguments += 'disk_pool_filter=' + $disk_pool_filter
            }
            if ($log_size_filter){
                $queryArguments += 'log_size_filter=' + $log_size_filter
            }
            if ($node_pool_filter){
                $queryArguments += 'node_pool_filter=' + $node_pool_filter
            }
            if ($path_ext_filter){
                $queryArguments += 'path_ext_filter=' + $path_ext_filter
            }
            if ($phys_size_filter){
                $queryArguments += 'phys_size_filter=' + $phys_size_filter
            }
            if ($tier_filter){
                $queryArguments += 'tier_filter=' + $tier_filter
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/fsa/results/$parameter1/histogram/$parameter2" + "$queryArguments") -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultHistogram

function Get-isiFsaResultHistogramBy{
<#
.SYNOPSIS
    Get Fsa Result Histogram By

.DESCRIPTION
    This resource retrieves a histogram breakout for an individual FSA result set. ID in the resource path is the result set ID.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER statid2
     statid2

.PARAMETER statname2
     statname2

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$statid2,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$statname2,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            if ($psBoundParameters.ContainsKey('statid2')){
                $parameter2 = $statid2
            } else {
                $parameter2 = $statname2
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/fsa/results/$parameter1/histogram/$parameter2" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultHistogramBy

function Get-isiFsaResultTopDirs{
<#
.SYNOPSIS
    Get Fsa Result Top Dirs

.DESCRIPTION
    This resource retrieves the top directories. ID in the resource path is the result set ID.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/fsa/results/$parameter1/top-dirs" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultTopDirs

function Get-isiFsaResultTopDir{
<#
.SYNOPSIS
    Get Fsa Result Top Dir

.DESCRIPTION
    This resource retrieves the top directories. ID in the resource path is the result set ID.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER statid2
     statid2

.PARAMETER statname2
     statname2

.PARAMETER comp_report
    Result set identifier for comparison of database results.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Number of results from start index. Default value of 1000.

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER start
    Starting index for results. Default value of 0.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$statid2,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$statname2,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$comp_report,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][int]$start,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            if ($psBoundParameters.ContainsKey('statid2')){
                $parameter2 = $statid2
            } else {
                $parameter2 = $statname2
            }
            $queryArguments = @()
            if ($comp_report){
                $queryArguments += 'comp_report=' + $comp_report
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($start){
                $queryArguments += 'start=' + $start
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/fsa/results/$parameter1/top-dirs/$parameter2" + "$queryArguments") -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultTopDir

function Get-isiFsaResultTopFiles{
<#
.SYNOPSIS
    Get Fsa Result Top Files

.DESCRIPTION
    This resource retrieves the top files. ID in the resource path is the result set ID.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/fsa/results/$parameter1/top-files" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultTopFiles

function Get-isiFsaResultTopFile{
<#
.SYNOPSIS
    Get Fsa Result Top File

.DESCRIPTION
    This resource retrieves the top files. ID in the resource path is the result set ID.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER statid2
     statid2

.PARAMETER statname2
     statname2

.PARAMETER comp_report
    Result set identifier for comparison of database results.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Number of results from start index. Default value of 1000.

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER start
    Starting index for results. Default value of 0.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$statid2,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$statname2,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$comp_report,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][int]$start,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            if ($psBoundParameters.ContainsKey('statid2')){
                $parameter2 = $statid2
            } else {
                $parameter2 = $statname2
            }
            $queryArguments = @()
            if ($comp_report){
                $queryArguments += 'comp_report=' + $comp_report
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($start){
                $queryArguments += 'start=' + $start
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/fsa/results/$parameter1/top-files/$parameter2" + "$queryArguments") -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaResultTopFile

function Get-isiFsaSettings{
<#
.SYNOPSIS
    Get Fsa Settings

.DESCRIPTION
    List all settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/fsa/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFsaSettings

function Get-isiHardeningState{
<#
.SYNOPSIS
    Get Hardening State

.DESCRIPTION
    Get the state of the current hardening operation, if one is happening. Note that this is different from the /status resource, which returns the overall hardening status of the cluster.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/hardening/state" -Cluster $Cluster
            return $ISIObject.state
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHardeningState

function Get-isiHardeningStatus{
<#
.SYNOPSIS
    Get Hardening Status

.DESCRIPTION
    Get a message indicating whether or not the cluster is hardened. Note that this is different from the /state resource, which returns the state of a specific hardening operation (apply or revert).
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/hardening/status" -Cluster $Cluster
            return $ISIObject.status
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHardeningStatus

function Get-isiHardwareFcports{
<#
.SYNOPSIS
    Get Hardware Fcports

.DESCRIPTION
    Get list of fibre-channel ports
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/hardware/fcports" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHardwareFcports

function Get-isiHardwareFcport{
<#
.SYNOPSIS
    Get Hardware Fcport

.DESCRIPTION
    Get one fibre-channel port
 
.PARAMETER id
    Port id

.PARAMETER name
    Port name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/hardware/fcports/$parameter1" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHardwareFcport

function Get-isiHardwareTapes{
<#
.SYNOPSIS
    Get Hardware Tapes

.DESCRIPTION
    Get list Tape and Changer devices
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/hardware/tapes" -Cluster $Cluster
            return $ISIObject.devices
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHardwareTapes

function Get-isiJobEventsv1{
<#
.SYNOPSIS
    Get Job Events

.DESCRIPTION
    List job events.
 
.PARAMETER begin
    Restrict the query to events at or after the given time, in seconds since the Epoch.

.PARAMETER end
    Restrict the query to events before the given time, in seconds since the Epoch.

.PARAMETER job_id
    Restrict the query to the given job ID.

.PARAMETER job_type
    Restrict the query to the given job type.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER state
    Restrict the query to events containing the given state.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$job_id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$job_type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][array]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($job_id){
                $queryArguments += 'job_id=' + $job_id
            }
            if ($job_type){
                $queryArguments += 'job_type=' + $job_type
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/job/events" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.events,$ISIObject.resume
            }else{
                return $ISIObject.events
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobEventsv1
Set-Alias Get-isiJobEvents -Value Get-isiJobEventsv1
Export-ModuleMember -Alias Get-isiJobEvents

function Get-isiJobEventsv3{
<#
.SYNOPSIS
    Get Job Events

.DESCRIPTION
    List job events.
 
.PARAMETER begin
    Restrict the query to events at or after the given time, in seconds since the Epoch.

.PARAMETER end
    Restrict the query to events before the given time, in seconds since the Epoch.

.PARAMETER job_id
    Restrict the query to the given job ID.

.PARAMETER job_type
    Restrict the query to the given job type.

.PARAMETER key
    Restrict the query to the given key name.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER state
    Restrict the query to events containing the given state.
    Valid inputs: running,paused_user,paused_system,paused_policy,paused_priority,cancelled_user,cancelled_system,failed,succeeded,unknown

.PARAMETER timeout_ms
    Query timeout in milliseconds. The default is 10000 ms.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$job_id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$job_type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$key,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][ValidateSet('running','paused_user','paused_system','paused_policy','paused_priority','cancelled_user','cancelled_system','failed','succeeded','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][int]$timeout_ms,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($job_id){
                $queryArguments += 'job_id=' + $job_id
            }
            if ($job_type){
                $queryArguments += 'job_type=' + $job_type
            }
            if ($key){
                $queryArguments += 'key=' + $key
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($timeout_ms){
                $queryArguments += 'timeout_ms=' + $timeout_ms
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/job/events" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.events,$ISIObject.resume
            }else{
                return $ISIObject.events
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobEventsv3

function Get-isiJobSummary{
<#
.SYNOPSIS
    Get Job Summary

.DESCRIPTION
    View job engine status.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/job/job-summary" -Cluster $Cluster
            return $ISIObject.summary
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobSummary

function Get-isiJobsv1{
<#
.SYNOPSIS
    Get Jobs

.DESCRIPTION
    List running and paused jobs.
 
.PARAMETER batch
    If true, other arguments are ignored, and the query will return all results, unsorted, as quickly as possible.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Limit the results to jobs in the specified state.
    Valid inputs: running,paused_user,paused_system,paused_policy,paused_priority

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$batch,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('running','paused_user','paused_system','paused_policy','paused_priority')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($batch){
                $queryArguments += 'batch=' + $batch
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/job/jobs" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.jobs,$ISIObject.resume
            }else{
                return $ISIObject.jobs
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobsv1
Set-Alias Get-isiJobs -Value Get-isiJobsv1
Export-ModuleMember -Alias Get-isiJobs

function Get-isiJobsv3{
<#
.SYNOPSIS
    Get Job Jobs

.DESCRIPTION
    List running and paused jobs.
 
.PARAMETER batch
    If true, other arguments are ignored, and the query will return all results, unsorted, as quickly as possible.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Limit the results to jobs in the specified state.
    Valid inputs: running,paused_user,paused_system,paused_policy,paused_priority

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$batch,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('running','paused_user','paused_system','paused_policy','paused_priority')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($batch){
                $queryArguments += 'batch=' + $batch
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/job/jobs" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.jobs,$ISIObject.resume
            }else{
                return $ISIObject.jobs
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobsv3

function Get-isiJob{
<#
.SYNOPSIS
    Get Job

.DESCRIPTION
    View a single job instance.
 
.PARAMETER id
    Job id

.PARAMETER name
    Job name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/job/jobs/$parameter1" -Cluster $Cluster
            return $ISIObject.jobs
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJob

function Get-isiJobPolicies{
<#
.SYNOPSIS
    Get Job Policies

.DESCRIPTION
    List job impact policies.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/job/policies" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.policies,$ISIObject.resume
            }else{
                return $ISIObject.policies
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobPolicies

function Get-isiJobPolicy{
<#
.SYNOPSIS
    Get Job Policy

.DESCRIPTION
    View a single job impact policy.
 
.PARAMETER id
    Policy id

.PARAMETER name
    Policy name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/job/policies/$parameter1" -Cluster $Cluster
            return $ISIObject.types
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobPolicy

function Get-isiJobRecent{
<#
.SYNOPSIS
    Get Job Recent

.DESCRIPTION
    List recently completed jobs.
 
.PARAMETER limit
    Max number of recent jobs to return. The default is 8, the max is 100.

.PARAMETER timeout_ms
    Query timeout in milliseconds. The default is 10000 ms.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$timeout_ms,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($timeout_ms){
                $queryArguments += 'timeout_ms=' + $timeout_ms
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/job/recent" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.recent
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobRecent

function Get-isiJobReportsv1{
<#
.SYNOPSIS
    Get Job Reports

.DESCRIPTION
    List job reports.
 
.PARAMETER begin
    Restrict the query to reports at or after the given time, in seconds since the Epoch.

.PARAMETER end
    Restrict the query to reports before the given time, in seconds since the Epoch.

.PARAMETER job_id
    Restrict the query to the given job ID.

.PARAMETER job_type
    Restrict the query to the given job type.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$job_id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$job_type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($job_id){
                $queryArguments += 'job_id=' + $job_id
            }
            if ($job_type){
                $queryArguments += 'job_type=' + $job_type
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/job/reports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobReportsv1
Set-Alias Get-isiJobReports -Value Get-isiJobReportsv1
Export-ModuleMember -Alias Get-isiJobReports

function Get-isiJobReportsv3{
<#
.SYNOPSIS
    Get Job Reports

.DESCRIPTION
    List job reports.
 
.PARAMETER begin
    Restrict the query to reports at or after the given time, in seconds since the Epoch.

.PARAMETER end
    Restrict the query to reports before the given time, in seconds since the Epoch.

.PARAMETER job_id
    Restrict the query to the given job ID.

.PARAMETER job_type
    Restrict the query to the given job type.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER timeout_ms
    Query timeout in milliseconds. The default is 10000 ms.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$job_id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$job_type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][int]$timeout_ms,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($job_id){
                $queryArguments += 'job_id=' + $job_id
            }
            if ($job_type){
                $queryArguments += 'job_type=' + $job_type
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($timeout_ms){
                $queryArguments += 'timeout_ms=' + $timeout_ms
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/job/reports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobReportsv3

function Get-isiJobStatistics{
<#
.SYNOPSIS
    Get Job Statistics

.DESCRIPTION
    View job engine statistics.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/job/statistics" -Cluster $Cluster
            return $ISIObject.jobs
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobStatistics

function Get-isiJobTypes{
<#
.SYNOPSIS
    Get Job Types

.DESCRIPTION
    List job types.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER show_all
    Whether to show all job types, including hidden ones. Defaults to false.

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$show_all,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($show_all){
                $queryArguments += 'show_all=' + $show_all
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/job/types" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.types
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobTypes

function Get-isiJobType{
<#
.SYNOPSIS
    Get Job Type

.DESCRIPTION
    Retrieve job type information.
 
.PARAMETER id
    Type id

.PARAMETER name
    Type name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/job/types/$parameter1" -Cluster $Cluster
            return $ISIObject.types
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiJobType

function Get-isiEula{
<#
.SYNOPSIS
    Get Eula

.DESCRIPTION
    Retrieve the EULA as plain text.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET_JSON -Resource "/platform/1/license/eula" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiEula

function Get-isiLicenses{
<#
.SYNOPSIS
    Get Licenses

.DESCRIPTION
    Retrieve license information for all licensable products.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/license/licenses" -Cluster $Cluster
            return $ISIObject.licenses
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiLicenses

function Get-isiLicense{
<#
.SYNOPSIS
    Get License

.DESCRIPTION
    Retrieve license information for the feature.
 
.PARAMETER id
    License id

.PARAMETER name
    License name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/license/licenses/$parameter1" -Cluster $Cluster
            return $ISIObject.licenses
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiLicense

function Get-isiLocalClusterTime{
<#
.SYNOPSIS
    Get Local Cluster Time

.DESCRIPTION
    Get the current time on the local node.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/local/cluster/time" -Cluster $Cluster
            return $ISIObject.time
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiLocalClusterTime

function Get-isiLocalClusterVersion{
<#
.SYNOPSIS
    Get Local Cluster Version

.DESCRIPTION
    This method has no description because it is unsupported.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET_JSON -Resource "/platform/3/local/cluster/version" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiLocalClusterVersion

function Get-isiNetworkDnscache{
<#
.SYNOPSIS
    Get Network Dnscache

.DESCRIPTION
    View network dns cache settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/network/dnscache" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkDnscache

function Get-isiNetworkExternal{
<#
.SYNOPSIS
    Get Network External

.DESCRIPTION
    View external network settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/network/external" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkExternal

function Get-isiNetworkGroupnets{
<#
.SYNOPSIS
    Get Network Groupnets

.DESCRIPTION
    Get a list of groupnets.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/network/groupnets" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.groupnets,$ISIObject.resume
            }else{
                return $ISIObject.groupnets
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkGroupnets

function Get-isiNetworkGroupnet{
<#
.SYNOPSIS
    Get Network Groupnet

.DESCRIPTION
    View a network groupnet.
 
.PARAMETER id
    Groupnet id

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $parameter1 = $id
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/network/groupnets/$parameter1" -Cluster $Cluster
            return $ISIObject.groupnets
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkGroupnet

function Get-isiNetworkGroupnetSubnets{
<#
.SYNOPSIS
    Get Network Groupnet Subnets

.DESCRIPTION
    Get a list of subnets.
 
.PARAMETER id
    Groupnet id

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $parameter1 = $id
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/network/groupnets/$parameter1/subnets" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.subnets,$ISIObject.resume
            }else{
                return $ISIObject.subnets
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkGroupnetSubnets

function Get-isiNetworkGroupnetSubnet{
<#
.SYNOPSIS
    Get Network Groupnet Subnet

.DESCRIPTION
    View a network subnet.
 
.PARAMETER groupnet_id
    Groupnet groupnet_id

.PARAMETER groupnet_name
    Groupnet groupnet_name

.PARAMETER id
     id

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$groupnet_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$groupnet_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('groupnet_id')){
                $parameter1 = $groupnet_id
            } else {
                $parameter1 = $groupnet_name
            }
            $parameter2 = $id
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/network/groupnets/$parameter1/subnets/$parameter2" -Cluster $Cluster
            return $ISIObject.subnets
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkGroupnetSubnet

function Get-isiNetworkGroupnetSubnetPools{
<#
.SYNOPSIS
    Get Network Groupnet Subnet Pools

.DESCRIPTION
    Get a list of network pools.
 
.PARAMETER groupnet_id
    Groupnet groupnet_id

.PARAMETER groupnet_name
    Groupnet groupnet_name

.PARAMETER id
     id

.PARAMETER access_zone
    If specified, only pools with this zone name will be returned.

.PARAMETER alloc_method
    If specified, only pools with this allocation type will be returned.
    Valid inputs: static,dynamic

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$groupnet_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$groupnet_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][ValidateSet('static','dynamic')][string]$alloc_method,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('groupnet_id')){
                $parameter1 = $groupnet_id
            } else {
                $parameter1 = $groupnet_name
            }
            $parameter2 = $id
            $queryArguments = @()
            if ($access_zone){
                $queryArguments += 'access_zone=' + $access_zone
            }
            if ($alloc_method){
                $queryArguments += 'alloc_method=' + $alloc_method
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/network/groupnets/$parameter1/subnets/$parameter2" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.pools,$ISIObject.resume
            }else{
                return $ISIObject.pools
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkGroupnetSubnetPools

function Get-isiNetworkInterfacesv3{
<#
.SYNOPSIS
    Get Network Interfaces

.DESCRIPTION
    Get a list of interfaces.
 
.PARAMETER alloc_method
    Filter addresses and owners by pool address allocation method.
    Valid inputs: dynamic,static

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER lnns
    Get a list of interfaces for the specified lnn.

.PARAMETER network
    Show interfaces associated with external and/or internal networks. Default is 'external'
    Valid inputs: all,external,internal

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('dynamic','static')][string]$alloc_method,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$lnns,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('all','external','internal')][string]$network,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($alloc_method){
                $queryArguments += 'alloc_method=' + $alloc_method
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($lnns){
                $queryArguments += 'lnns=' + $lnns
            }
            if ($network){
                $queryArguments += 'network=' + $network
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/network/interfaces" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.interfaces,$ISIObject.resume
            }else{
                return $ISIObject.interfaces
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkInterfacesv3

function Get-isiNetworkInterfacesv4{
<#
.SYNOPSIS
    Get Network Interfaces

.DESCRIPTION
    Get a list of interfaces.
 
.PARAMETER alloc_method
    Filter addresses and owners by pool address allocation method.
    Valid inputs: dynamic,static

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER lnns
    Get a list of interfaces for the specified lnn.

.PARAMETER network
    Show interfaces associated with external and/or internal networks. Default is 'external'
    Valid inputs: all,external,internal

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('dynamic','static')][string]$alloc_method,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$lnns,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('all','external','internal')][string]$network,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($alloc_method){
                $queryArguments += 'alloc_method=' + $alloc_method
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($lnns){
                $queryArguments += 'lnns=' + $lnns
            }
            if ($network){
                $queryArguments += 'network=' + $network
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/network/interfaces" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.interfaces,$ISIObject.resume
            }else{
                return $ISIObject.interfaces
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkInterfacesv4

function Get-isiNetworkPools{
<#
.SYNOPSIS
    Get Network Pools

.DESCRIPTION
    Get a list of flexnet pools.
 
.PARAMETER access_zone
    If specified, only pools with this zone name will be returned.

.PARAMETER alloc_method
    If specified, only pools with this allocation type will be returned.
    Valid inputs: static,dynamic

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER groupnet
    If specified, only pools for this groupnet will be returned.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER subnet
    If specified, only pools for this subnet will be returned.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('static','dynamic')][string]$alloc_method,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$groupnet,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$subnet,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($access_zone){
                $queryArguments += 'access_zone=' + $access_zone
            }
            if ($alloc_method){
                $queryArguments += 'alloc_method=' + $alloc_method
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($groupnet){
                $queryArguments += 'groupnet=' + $groupnet
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($subnet){
                $queryArguments += 'subnet=' + $subnet
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/network/pools" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.pools,$ISIObject.resume
            }else{
                return $ISIObject.pools
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkPools

function Get-isiNetworkRules{
<#
.SYNOPSIS
    Get Network Rules

.DESCRIPTION
    Get a list of network rules.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER groupnet
    Name of the groupnet to list rules from.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER pool
    Name of the pool to list rules from.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER subnet
    Name of the subnet to list rules from.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$groupnet,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$pool,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$subnet,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($groupnet){
                $queryArguments += 'groupnet=' + $groupnet
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($pool){
                $queryArguments += 'pool=' + $pool
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($subnet){
                $queryArguments += 'subnet=' + $subnet
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/network/rules" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.rules,$ISIObject.resume
            }else{
                return $ISIObject.rules
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkRules

function Get-isiNetworkSubnetsv3{
<#
.SYNOPSIS
    Get Network Subnets

.DESCRIPTION
    Get a list of subnets.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER groupnet
    If specified, only subnets for this groupnet will be returned.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$groupnet,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($groupnet){
                $queryArguments += 'groupnet=' + $groupnet
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/network/subnets" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.subnets,$ISIObject.resume
            }else{
                return $ISIObject.subnets
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkSubnetsv3

function Get-isiNetworkSubnetsv4{
<#
.SYNOPSIS
    Get Network Subnets

.DESCRIPTION
    Get a list of subnets.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER groupnet
    If specified, only subnets for this groupnet will be returned.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$groupnet,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($groupnet){
                $queryArguments += 'groupnet=' + $groupnet
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/network/subnets" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.subnets,$ISIObject.resume
            }else{
                return $ISIObject.subnets
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNetworkSubnetsv4

function Get-isiFtpSettings{
<#
.SYNOPSIS
    Get Protocols Ftp Settings

.DESCRIPTION
    Retrieve the FTP settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ftp/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiFtpSettings

function Get-isiHdfsLogLevel{
<#
.SYNOPSIS
    Get Protocols Hdfs Log Level

.DESCRIPTION
    Retrieve the HDFS service log-level.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/hdfs/log-level" -Cluster $Cluster
            return $ISIObject.level
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHdfsLogLevel

function Get-isiHdfsProxyUsers{
<#
.SYNOPSIS
    Get Hdfs Proxyusers

.DESCRIPTION
    List all proxyusers.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/hdfs/proxyusers" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.proxyusers
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHdfsProxyUsers

function Get-isiHdfsProxyUser{
<#
.SYNOPSIS
    Get Hdfs Proxyuser

.DESCRIPTION
    List all proxyusers.
 
.PARAMETER id
    Proxyuser id

.PARAMETER name
    Proxyuser name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/hdfs/proxyusers/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.proxyusers
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHdfsProxyUser

function Get-isiHdfsProxyUserMembers{
<#
.SYNOPSIS
    Get Hdfs Proxyuser Members

.DESCRIPTION
    List all the members of the HDFS proxyuser.
 
.PARAMETER proxyuser_id
    Proxyuser proxyuser_id

.PARAMETER proxyuser_name
    Proxyuser proxyuser_name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$proxyuser_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$proxyuser_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('proxyuser_id')){
                $parameter1 = $proxyuser_id
            } else {
                $parameter1 = $proxyuser_name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/protocols/hdfs/proxyusers/$parameter1/members" -Cluster $Cluster
            return $ISIObject.members
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHdfsProxyUserMembers

function Get-isiHdfsRacks{
<#
.SYNOPSIS
    Get Hdfs Racks

.DESCRIPTION
    List all racks.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/hdfs/racks" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.racks
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHdfsRacks

function Get-isiHdfsRack{
<#
.SYNOPSIS
    Get Hdfs Rack

.DESCRIPTION
    Retrieve the HDFS rack.
 
.PARAMETER id
    Rack id

.PARAMETER name
    Rack name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/protocols/hdfs/racks/$parameter1" -Cluster $Cluster
            return $ISIObject.racks
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHdfsRack

function Get-isiHdfsRangerPluginSettings{
<#
.SYNOPSIS
    Get Protocols Hdfs Ranger Plugin Settings

.DESCRIPTION
    Retrieve HDFS ranger-plugin properties.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/protocols/hdfs/ranger-plugin/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHdfsRangerPluginSettings

function Get-isiHdfsSettingsv3{
<#
.SYNOPSIS
    Get Protocols Hdfs Settings

.DESCRIPTION
    Retrieve HDFS properties.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/hdfs/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHdfsSettingsv3

function Get-isiHdfsSettingsv4{
<#
.SYNOPSIS
    Get Protocols Hdfs Settings

.DESCRIPTION
    Retrieve HDFS properties.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/protocols/hdfs/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHdfsSettingsv4

function Get-isiHttpSettings{
<#
.SYNOPSIS
    Get Protocols Http Settings

.DESCRIPTION
    Retrieve HTTP properties.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/http/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiHttpSettings

function Get-isiNdmpContextsBackup{
<#
.SYNOPSIS
    Get Protocols Ndmp Contexts Backup

.DESCRIPTION
    Get List of NDMP Backup Contexts.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/contexts/backup" -Cluster $Cluster
            return $ISIObject.contexts
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpContextsBackup

function Get-isiNdmpContextsBackup{
<#
.SYNOPSIS
    Get Protocols Ndmp Contexts Backup

.DESCRIPTION
    View a NDMP backup context
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/contexts/backup/$parameter1" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpContextsBackup

function Get-isiNdmpContextsBre{
<#
.SYNOPSIS
    Get Protocols Ndmp Contexts Bre

.DESCRIPTION
    Get list of NDMP BRE Contexts.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/contexts/bre" -Cluster $Cluster
            return $ISIObject.contexts
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpContextsBre

function Get-isiNdmpContextsBre{
<#
.SYNOPSIS
    Get Protocols Ndmp Contexts Bre

.DESCRIPTION
    View a NDMP BRE context
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/contexts/bre/$parameter1" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpContextsBre

function Get-isiNdmpContextsRestore{
<#
.SYNOPSIS
    Get Protocols Ndmp Contexts Restore

.DESCRIPTION
    Get List of NDMP Restore Contexts.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/contexts/restore" -Cluster $Cluster
            return $ISIObject.contexts
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpContextsRestore

function Get-isiNdmpContextsRestore{
<#
.SYNOPSIS
    Get Protocols Ndmp Contexts Restore

.DESCRIPTION
    View a NDMP restore context
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/contexts/restore/$parameter1" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpContextsRestore

function Get-isiNdmpDiagnostics{
<#
.SYNOPSIS
    Get Protocols Ndmp Diagnostics

.DESCRIPTION
    List ndmp diagnostics settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/diagnostics" -Cluster $Cluster
            return $ISIObject.diagnostics
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpDiagnostics

function Get-isiNdmpDumpdate{
<#
.SYNOPSIS
    Get Protocols Ndmp Dumpdate

.DESCRIPTION
    List of dumpdates entries.
 
.PARAMETER id
    Path id

.PARAMETER name
    Path name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/dumpdates/$parameter1" -Cluster $Cluster
            return $ISIObject.dumpdates
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpDumpdate

function Get-isiNdmpLogs{
<#
.SYNOPSIS
    Get Protocols Ndmp Logs

.DESCRIPTION
    Get NDMP logs
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/logs" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpLogs

function Get-isiNdmpSessions{
<#
.SYNOPSIS
    Get Protocols Ndmp Sessions

.DESCRIPTION
    List all ndmp sessions.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/sessions" -Cluster $Cluster
            return $ISIObject.sessions
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpSessions

function Get-isiNdmpSession{
<#
.SYNOPSIS
    Get Protocols Ndmp Session

.DESCRIPTION
    Retrieve the ndmp session.
 
.PARAMETER id
    Session id

.PARAMETER name
    Session name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/sessions/$parameter1" -Cluster $Cluster
            return $ISIObject.sessions
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpSession

function Get-isiNdmpSettingsDmas{
<#
.SYNOPSIS
    Get Protocols Ndmp Settings Dmas

.DESCRIPTION
    List of supported dma vendors.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/settings/dmas" -Cluster $Cluster
            return $ISIObject.dmavendors
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpSettingsDmas

function Get-isiNdmpSettingsGlobal{
<#
.SYNOPSIS
    Get Protocols Ndmp Settings Global

.DESCRIPTION
    List global ndmp settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/settings/global" -Cluster $Cluster
            return $ISIObject.global
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpSettingsGlobal

function Get-isiNdmpSettingsPreferredIps{
<#
.SYNOPSIS
    Get Protocols Ndmp Settings Preferred Ips

.DESCRIPTION
    Get list of preferences.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/protocols/ndmp/settings/preferred-ips" -Cluster $Cluster
            return $ISIObject.preferences
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpSettingsPreferredIps

function Get-isiNdmpSettingsPreferredIp{
<#
.SYNOPSIS
    Get Protocols Ndmp Settings Preferred Ip

.DESCRIPTION
    Get one preference by id.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/protocols/ndmp/settings/preferred-ips/$parameter1" -Cluster $Cluster
            return $ISIObject.preferences
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpSettingsPreferredIp

function Get-isiNdmpSettingsVariable{
<#
.SYNOPSIS
    Get Protocols Ndmp Settings Variable

.DESCRIPTION
    List of preferred environment variables.
 
.PARAMETER id
    Path id

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $parameter1 = $id
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/settings/variables/$parameter1" -Cluster $Cluster
            return $ISIObject.variables
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpSettingsVariable

function Get-isiNdmpUsers{
<#
.SYNOPSIS
    Get Protocols Ndmp Users

.DESCRIPTION
    List all ndmp administrators.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/users" -Cluster $Cluster
            return $ISIObject.users
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpUsers

function Get-isiNdmpUser{
<#
.SYNOPSIS
    Get Protocols Ndmp User

.DESCRIPTION
    Retrieve the user.
 
.PARAMETER id
    Name id

.PARAMETER name
    Name name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ndmp/users/$parameter1" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNdmpUser

function Get-isiNfsAliases{
<#
.SYNOPSIS
    Get Nfs Aliases

.DESCRIPTION
    List all NFS aliases.
 
.PARAMETER check
    Check for conflicts when listing exports.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER access_zone
    Access zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$check,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($check){
                $queryArguments += 'check=' + $check
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/aliases" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.aliases,$ISIObject.resume
            }else{
                return $ISIObject.aliases
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsAliases

function Get-isiNfsAlias{
<#
.SYNOPSIS
    Get Nfs Aliase

.DESCRIPTION
    Retrieve export information.
 
.PARAMETER id
    Aid id

.PARAMETER name
    Aid name

.PARAMETER scope
    When specified as 'effective', or not specified, all fields are returned. When specified as 'user', only fields with non-default values are shown. When specified as 'default', the original values are returned.
    Valid inputs: effective,user

.PARAMETER access_zone
    Access zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('effective','user')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/aliases/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.aliases
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsAlias

function Get-isiNfsCheckv1{
<#
.SYNOPSIS
    Get Nfs Check

.DESCRIPTION
    Retrieve NFS export validation information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/protocols/nfs/check" -Cluster $Cluster
            return $ISIObject.checks
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsCheckv1

function Get-isiNfsCheckv2{
<#
.SYNOPSIS
    Get Nfs Check

.DESCRIPTION
    Retrieve NFS export validation information.
 
.PARAMETER access_zone
    Access zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/check" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.checks
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsCheckv2
Set-Alias Get-isiNfsCheck -Value Get-isiNfsCheckv2
Export-ModuleMember -Alias Get-isiNfsCheck

function Get-isiNfsExportsv1{
<#
.SYNOPSIS
    Get Nfs Exports

.DESCRIPTION
    List all NFS exports.
 
.PARAMETER check
    Check for conflicts when listing exports.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER scope
    If specified as effective or not specified, all export fields are shown. If specified as user, only fields with non-default values are shown.
    Valid inputs: effective,user

.PARAMETER sort
    The field that will be used for sorting. Default is id.
    Valid inputs: id,paths,description

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$check,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('effective','user')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('id','paths','description')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($check){
                $queryArguments += 'check=' + $check
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/nfs/exports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.exports,$ISIObject.resume
            }else{
                return $ISIObject.exports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsExportsv1

function Get-isiNfsExportsv2{
<#
.SYNOPSIS
    Get Nfs Exports

.DESCRIPTION
    List all NFS exports.
 
.PARAMETER check
    Check for conflicts when listing exports.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER paths
    If specified, only exports that explicitly reference at least one of the given paths will be returned.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER scope
    When specified as 'effective', or not specified, all fields are returned. When specified as 'user', only fields with non-default values are shown. When specified as 'default', the original values are returned.
    Valid inputs: effective,user

.PARAMETER sort
    The field that will be used for sorting. Default is id.
    Valid inputs: id,paths,description

.PARAMETER access_zone
    Access zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$check,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$paths,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('effective','user')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][ValidateSet('id','paths','description')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($check){
                $queryArguments += 'check=' + $check
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($paths){
                $queryArguments += 'paths=' + $paths
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/exports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.exports,$ISIObject.resume
            }else{
                return $ISIObject.exports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsExportsv2
Set-Alias Get-isiNfsExports -Value Get-isiNfsExportsv2
Export-ModuleMember -Alias Get-isiNfsExports

function Get-isiNfsExportsv4{
<#
.SYNOPSIS
    Get Protocols Nfs Exports

.DESCRIPTION
    List all NFS exports.
 
.PARAMETER check
    Check for conflicts when listing exports.

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER offset
    The position of the first item returned for a paginated query within the full result set.

.PARAMETER paths
    If specified, only exports that explicitly reference at least one of the given paths will be returned.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER scope
    When specified as 'effective', or not specified, all fields are returned. When specified as 'user', only fields with non-default values are shown. When specified as 'default', the original values are returned.
    Valid inputs: effective,user

.PARAMETER sort
    The field that will be used for sorting. Default is id.
    Valid inputs: id,paths,description

.PARAMETER access_zone
    Access zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$check,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$offset,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$paths,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][ValidateSet('effective','user')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][ValidateSet('id','paths','description')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($check){
                $queryArguments += 'check=' + $check
            }
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($offset){
                $queryArguments += 'offset=' + $offset
            }
            if ($paths){
                $queryArguments += 'paths=' + $paths
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/protocols/nfs/exports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.exports,$ISIObject.resume
            }else{
                return $ISIObject.exports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsExportsv4

function Get-isiNfsExportsSummaryv1{
<#
.SYNOPSIS
    Get Nfs Exports Summary

.DESCRIPTION
    Retrieve NFS export summary information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/protocols/nfs/exports-summary" -Cluster $Cluster
            return $ISIObject.summary
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsExportsSummaryv1

function Get-isiNfsExportsSummaryv2{
<#
.SYNOPSIS
    Get Nfs Exports Summary

.DESCRIPTION
    Retrieve NFS export summary information.
 
.PARAMETER access_zone
    Access zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/exports-summary" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.summary
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsExportsSummaryv2
Set-Alias Get-isiNfsExportsSummary -Value Get-isiNfsExportsSummaryv2
Export-ModuleMember -Alias Get-isiNfsExportsSummary

function Get-isiNfsExportv1{
<#
.SYNOPSIS
    Get Nfs Export

.DESCRIPTION
    Retrieve export information.
 
.PARAMETER id
     id

.PARAMETER scope
    If specified as effective or not specified, all export fields are shown. If specified as user, only fields with non-default values are shown.
    Valid inputs: effective,user

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('effective','user')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $parameter1 = $id
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/nfs/exports/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.exports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsExportv1

function Get-isiNfsExportv2{
<#
.SYNOPSIS
    Get Nfs Export

.DESCRIPTION
    Retrieve export information.
 
.PARAMETER id
     id

.PARAMETER scope
    When specified as 'effective', or not specified, all fields are returned. When specified as 'user', only fields with non-default values are shown. When specified as 'default', the original values are returned.
    Valid inputs: effective,user

.PARAMETER access_zone
    Access zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('effective','user')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $parameter1 = $id
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/exports/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.exports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsExportv2
Set-Alias Get-isiNfsExport -Value Get-isiNfsExportv2
Export-ModuleMember -Alias Get-isiNfsExport

function Get-isiNfsLogLevel{
<#
.SYNOPSIS
    Get Protocols Nfs Log Level

.DESCRIPTION
    Get the current NFS service logging level.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/nfs/log-level" -Cluster $Cluster
            return $ISIObject.level
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsLogLevel

function Get-isiNfsNetgroup{
<#
.SYNOPSIS
    Get Protocols Nfs Netgroup

.DESCRIPTION
    Get the current NFS netgroup cache settings.
 
.PARAMETER host
    Host to retrieve netgroup cache settings from.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$host,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($host){
                $queryArguments += 'host=' + $host
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/protocols/nfs/netgroup" + "$queryArguments") -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsNetgroup

function Get-isiNfsNlmLocksv1{
<#
.SYNOPSIS
    Get Nfs Nlm Locks

.DESCRIPTION
    List all NLM locks.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/nfs/nlm/locks" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.locks,$ISIObject.resume
            }else{
                return $ISIObject.locks
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsNlmLocksv1

function Get-isiNfsNlmLocksv2{
<#
.SYNOPSIS
    Get Nfs Nlm Locks

.DESCRIPTION
    List all NLM locks.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/nlm/locks" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.locks,$ISIObject.resume
            }else{
                return $ISIObject.locks
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsNlmLocksv2
Set-Alias Get-isiNfsNlmLocks -Value Get-isiNfsNlmLocksv2
Export-ModuleMember -Alias Get-isiNfsNlmLocks

function Get-isiNfsNlmSessionsv1{
<#
.SYNOPSIS
    Get Nfs Nlm Sessions

.DESCRIPTION
    List all NLM sessions.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/nfs/nlm/sessions" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.sessions,$ISIObject.resume
            }else{
                return $ISIObject.sessions
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsNlmSessionsv1

function Get-isiNfsNlmSessionsv2{
<#
.SYNOPSIS
    Get Nfs Nlm Sessions

.DESCRIPTION
    List all NLM sessions.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/nlm/sessions" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.sessions,$ISIObject.resume
            }else{
                return $ISIObject.sessions
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsNlmSessionsv2
Set-Alias Get-isiNfsNlmSessions -Value Get-isiNfsNlmSessionsv2
Export-ModuleMember -Alias Get-isiNfsNlmSessions

function Get-isiNfsNlmSessionsv3{
<#
.SYNOPSIS
    Get Protocols Nfs Nlm Sessions

.DESCRIPTION
    List all NSM clients (optionally filtered by either zone or IP)
 
.PARAMETER ip
    An IP address for which NSM has client records

.PARAMETER access_zone
    Represents an extant auth zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$ip,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($ip){
                $queryArguments += 'ip=' + $ip
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/protocols/nfs/nlm/sessions" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.clients
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsNlmSessionsv3

function Get-isiNfsNlmSessionv3{
<#
.SYNOPSIS
    Get Protocols Nfs Nlm Session

.DESCRIPTION
    Retrieve all lock state for a single client.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER ip
    An IP address for which NSM has client records

.PARAMETER access_zone
    Represents an extant auth zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$ip,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($ip){
                $queryArguments += 'ip=' + $ip
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/protocols/nfs/nlm/sessions/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.sessions
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsNlmSessionv3

function Get-isiNfsNlmWaitersv1{
<#
.SYNOPSIS
    Get Nfs Nlm Waiters

.DESCRIPTION
    List all NLM lock waiters.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/nfs/nlm/waiters" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.waiters,$ISIObject.resume
            }else{
                return $ISIObject.waiters
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsNlmWaitersv1

function Get-isiNfsNlmWaitersv2{
<#
.SYNOPSIS
    Get Nfs Nlm Waiters

.DESCRIPTION
    List all NLM lock waiters.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/nlm/waiters" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.waiters,$ISIObject.resume
            }else{
                return $ISIObject.waiters
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsNlmWaitersv2
Set-Alias Get-isiNfsNlmWaiters -Value Get-isiNfsNlmWaitersv2
Export-ModuleMember -Alias Get-isiNfsNlmWaiters

function Get-isiNfsSettingsExportv1{
<#
.SYNOPSIS
    Get Nfs Settings Export

.DESCRIPTION
    Retrieve export information.
 
.PARAMETER scope
    If specified as effective or not specified, all fields are returned. If specified as user, only fields with non-default values are shown. If specified as default, the original values are returned.
    Valid inputs: effective,user,default

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('effective','user','default')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/nfs/settings/export" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsSettingsExportv1

function Get-isiNfsSettingsExportv2{
<#
.SYNOPSIS
    Get Nfs Settings Export

.DESCRIPTION
    Retrieve export information.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER access_zone
    Access zone

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/2/protocols/nfs/settings/export" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsSettingsExportv2
Set-Alias Get-isiNfsSettingsExport -Value Get-isiNfsSettingsExportv2
Export-ModuleMember -Alias Get-isiNfsSettingsExport

function Get-isiNfsSettingsGlobalv3{
<#
.SYNOPSIS
    Get Protocols Nfs Settings Global

.DESCRIPTION
    Retrieve the NFS configuration.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/nfs/settings/global" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsSettingsGlobalv3

function Get-isiNfsSettingsZone{
<#
.SYNOPSIS
    Get Nfs Settings Zone

.DESCRIPTION
    Retrieve the NFS server settings for this zone.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/2/protocols/nfs/settings/zone" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNfsSettingsZone

function Get-isiNtpServers{
<#
.SYNOPSIS
    Get Protocols Ntp Servers

.DESCRIPTION
    List all NTP servers.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/protocols/ntp/servers" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.servers,$ISIObject.resume
            }else{
                return $ISIObject.servers
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNtpServers

function Get-isiNtpServer{
<#
.SYNOPSIS
    Get Protocols Ntp Server

.DESCRIPTION
    Retrieve one NTP server.
 
.PARAMETER id
    Server id

.PARAMETER name
    Server name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ntp/servers/$parameter1" -Cluster $Cluster
            return $ISIObject.servers
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNtpServer

function Get-isiNtpSettings{
<#
.SYNOPSIS
    Get Protocols Ntp Settings

.DESCRIPTION
    Retrieve the NTP settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/ntp/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiNtpSettings

function Get-isiSmbLogLevel{
<#
.SYNOPSIS
    Get Protocols Smb Log Level

.DESCRIPTION
    Get the current SMB logging level.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/smb/log-level" -Cluster $Cluster
            return $ISIObject.level
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbLogLevel

function Get-isiSmbLogLevelFilters{
<#
.SYNOPSIS
    Get Protocols Smb Log Level Filters

.DESCRIPTION
    Get the current SMB log filters.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/smb/log-level/filters" -Cluster $Cluster
            return $ISIObject.filters
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbLogLevelFilters

function Get-isiSmbLogLevelFilter{
<#
.SYNOPSIS
    Get Protocols Smb Log Level Filter

.DESCRIPTION
    View log filter.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/smb/log-level/filters/$parameter1" -Cluster $Cluster
            return $ISIObject.filters
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbLogLevelFilter

function Get-isiSmbOpenfiles{
<#
.SYNOPSIS
    Get Smb Openfiles

.DESCRIPTION
    List open files.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    Order results by this field. Default is id.
    Valid inputs: id,file,user,locks

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][ValidateSet('id','file','user','locks')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/smb/openfiles" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.openfiles,$ISIObject.resume
            }else{
                return $ISIObject.openfiles
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbOpenfiles

function Get-isiSmbSessions{
<#
.SYNOPSIS
    Get Smb Sessions

.DESCRIPTION
    List open sessions.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    Order results by this field.
    Valid inputs: computer,user,client_type,openfiles,active_time,idle_time,guest_login,encryption

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][ValidateSet('computer','user','client_type','openfiles','active_time','idle_time','guest_login','encryption')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/smb/sessions" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.sessions,$ISIObject.resume
            }else{
                return $ISIObject.sessions
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSessions

function Get-isiSmbSettingsGlobalv1{
<#
.SYNOPSIS
    Get Smb Settings Global

.DESCRIPTION
    List all settings.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/smb/settings/global" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSettingsGlobalv1
Set-Alias Get-isiSmbSettingsGlobal -Value Get-isiSmbSettingsGlobalv1
Export-ModuleMember -Alias Get-isiSmbSettingsGlobal

function Get-isiSmbSettingsGlobalv3{
<#
.SYNOPSIS
    Get Protocols Smb Settings Global

.DESCRIPTION
    List all settings.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/protocols/smb/settings/global" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSettingsGlobalv3

function Get-isiSmbSettingsSharev1{
<#
.SYNOPSIS
    Get Smb Settings Share

.DESCRIPTION
    List all settings.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER access_zone
    Zone which contains these share settings.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/smb/settings/share" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSettingsSharev1
Set-Alias Get-isiSmbSettingsShare -Value Get-isiSmbSettingsSharev1
Export-ModuleMember -Alias Get-isiSmbSettingsShare

function Get-isiSmbSettingsSharev3{
<#
.SYNOPSIS
    Get Protocols Smb Settings Share

.DESCRIPTION
    List all settings.
 
.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER access_zone
    Zone which contains these share settings.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/protocols/smb/settings/share" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSettingsSharev3

function Get-isiSmbSharesv1{
<#
.SYNOPSIS
    Get Smb Shares

.DESCRIPTION
    List all shares.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resolve_names
    If true, resolve group and user names in personas.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER sort
    Order results by this field. Default is id.
    Valid inputs: id,name,path,description

.PARAMETER access_zone
    Zone which contains this share.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('id','name','path','description')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/smb/shares" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.shares,$ISIObject.resume
            }else{
                return $ISIObject.shares
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSharesv1
Set-Alias Get-isiSmbShares -Value Get-isiSmbSharesv1
Export-ModuleMember -Alias Get-isiSmbShares

function Get-isiSmbSharesv3{
<#
.SYNOPSIS
    Get Protocols Smb Shares

.DESCRIPTION
    List all shares.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resolve_names
    If true, resolve group and user names in personas.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER sort
    Order results by this field. Default is id.
    Valid inputs: id,name,path,description

.PARAMETER access_zone
    Zone which contains this share.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('id','name','path','description')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/protocols/smb/shares" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.shares,$ISIObject.resume
            }else{
                return $ISIObject.shares
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSharesv3

function Get-isiSmbSharesv4{
<#
.SYNOPSIS
    Get Protocols Smb Shares

.DESCRIPTION
    List all shares.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER offset
    The position of the first item returned for a paginated query within the full result set.

.PARAMETER resolve_names
    If true, resolve group and user names in personas.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER sort
    Order results by this field. Default is id.
    Valid inputs: id,name,path,description

.PARAMETER access_zone
    Zone which contains this share.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$offset,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][ValidateSet('id','name','path','description')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($offset){
                $queryArguments += 'offset=' + $offset
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/protocols/smb/shares" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.shares,$ISIObject.resume
            }else{
                return $ISIObject.shares
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSharesv4

function Get-isiSmbSharesSummary{
<#
.SYNOPSIS
    Get Smb Shares Summary

.DESCRIPTION
    Return summary information about shares.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/protocols/smb/shares-summary" -Cluster $Cluster
            return $ISIObject.summary
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSharesSummary

function Get-isiSmbSharev1{
<#
.SYNOPSIS
    Get Smb Share

.DESCRIPTION
    Retrieve share.
 
.PARAMETER id
    Share id

.PARAMETER name
    Share name

.PARAMETER resolve_names
    If true, resolve group and user names in personas.

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER access_zone
    Zone which contains this share.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/protocols/smb/shares/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.shares
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSharev1
Set-Alias Get-isiSmbShare -Value Get-isiSmbSharev1
Export-ModuleMember -Alias Get-isiSmbShare

function Get-isiSmbSharev3{
<#
.SYNOPSIS
    Get Protocols Smb Share

.DESCRIPTION
    Retrieve share.
 
.PARAMETER id
    Share id

.PARAMETER name
    Share name

.PARAMETER resolve_names
    If true, resolve group and user names in personas.

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER access_zone
    Zone which contains this share.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/protocols/smb/shares/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.shares
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSmbSharev3

function Get-isiSnmpSettings{
<#
.SYNOPSIS
    Get Protocols Snmp Settings

.DESCRIPTION
    Retrieve the SNMP settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/snmp/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnmpSettings

function Get-isiSwiftAccounts{
<#
.SYNOPSIS
    Get Protocols Swift Accounts

.DESCRIPTION
    List all swift accounts.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/swift/accounts" -Cluster $Cluster
            return $ISIObject.accounts
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSwiftAccounts

function Get-isiSwiftAccount{
<#
.SYNOPSIS
    Get Protocols Swift Account

.DESCRIPTION
    List a swift account.
 
.PARAMETER id
    Account id

.PARAMETER name
    Account name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/protocols/swift/accounts/$parameter1" -Cluster $Cluster
            return $ISIObject.accounts
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSwiftAccount

function Get-isiQuotaLicense{
<#
.SYNOPSIS
    Get Quota License

.DESCRIPTION
    Retrieve license information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/license" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaLicense

function Get-isiQuotas{
<#
.SYNOPSIS
    Get Quotas

.DESCRIPTION
    List all or matching quotas. Can also be used to retrieve quota state from existing reports. For any query argument not supplied, the default behavior is return all.
 
.PARAMETER enforced
    Only list quotas with this enforcement (non-accounting).

.PARAMETER exceeded
    Set to true to only list quotas which have exceeded one or more of their thresholds.

.PARAMETER include_snapshots
    Only list quotas with this setting for include_snapshots.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER path
    Only list quotas matching this path (see also recurse_path_*).

.PARAMETER persona
    Only list user or group quotas matching this persona (must be used with the corresponding type argument). Format is <PERSONA_TYPE>:<string/integer>, where PERSONA_TYPE is one of USER, GROUP, SID, ID, or GID.

.PARAMETER recurse_path_children
    If used with the path argument, match all quotas at that path or any descendent sub-directory.

.PARAMETER recurse_path_parents
    If used with the path argument, match all quotas at that path or any parent directory.

.PARAMETER report_id
    Use the named report as a source rather than the live quotas. See the /q/quota/reports resource for a list of valid reports.

.PARAMETER resolve_names
    If true, resolve group and user names in personas.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER type
    Only list quotas matching this type.
    Valid inputs: directory,user,group,default-user,default-group

.PARAMETER access_zone
    Optional named zone to use for user and group resolution.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$enforced,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$exceeded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$include_snapshots,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$path,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$persona,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][bool]$recurse_path_children,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][bool]$recurse_path_parents,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$report_id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=10)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=11)][ValidateNotNullOrEmpty()][ValidateSet('directory','user','group','default-user','default-group')][string]$type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=12)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=13)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($enforced){
                $queryArguments += 'enforced=' + $enforced
            }
            if ($exceeded){
                $queryArguments += 'exceeded=' + $exceeded
            }
            if ($include_snapshots){
                $queryArguments += 'include_snapshots=' + $include_snapshots
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($path){
                $queryArguments += 'path=' + $path
            }
            if ($persona){
                $queryArguments += 'persona=' + $persona
            }
            if ($recurse_path_children){
                $queryArguments += 'recurse_path_children=' + $recurse_path_children
            }
            if ($recurse_path_parents){
                $queryArguments += 'recurse_path_parents=' + $recurse_path_parents
            }
            if ($report_id){
                $queryArguments += 'report_id=' + $report_id
            }
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($type){
                $queryArguments += 'type=' + $type
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/quota/quotas" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.quotas,$ISIObject.resume
            }else{
                return $ISIObject.quotas
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotas

function Get-isiQuotasSummary{
<#
.SYNOPSIS
    Get Quotas Summary

.DESCRIPTION
    Return summary information about quotas.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/quotas-summary" -Cluster $Cluster
            return $ISIObject.summary
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotasSummary

function Get-isiQuota{
<#
.SYNOPSIS
    Get Quota

.DESCRIPTION
    Retrieve quota information.
 
.PARAMETER id
    Quota id

.PARAMETER name
    Quota name

.PARAMETER resolve_names
    If true, resolve group and user names in personas.

.PARAMETER access_zone
    Optional named zone to use for user and group resolution.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$resolve_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$access_zone,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($resolve_names){
                $queryArguments += 'resolve_names=' + $resolve_names
            }
            if ($access_zone){
                $queryArguments += 'zone=' + $access_zone
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/quota/quotas/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.quotas
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuota

function Get-isiQuotaNotifications{
<#
.SYNOPSIS
    Get Quota Notifications

.DESCRIPTION
    List all rules.
 
.PARAMETER quota_id
    Quota quota_id

.PARAMETER quota_name
    Quota quota_name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$quota_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$quota_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('quota_id')){
                $parameter1 = $quota_id
            } else {
                $parameter1 = $quota_name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/quotas/$parameter1/notifications" -Cluster $Cluster
            return $ISIObject.notifications
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaNotifications

function Get-isiQuotaNotification{
<#
.SYNOPSIS
    Get Quota Notification

.DESCRIPTION
    Retrieve notification rule information.
 
.PARAMETER quota_id
    Quota quota_id

.PARAMETER quota_name
    Quota quota_name

.PARAMETER id
     id

.PARAMETER name
     name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$quota_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$quota_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('quota_id')){
                $parameter1 = $quota_id
            } else {
                $parameter1 = $quota_name
            }
            if ($psBoundParameters.ContainsKey('id')){
                $parameter2 = $id
            } else {
                $parameter2 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/quotas/$parameter1/notifications/$parameter2" -Cluster $Cluster
            return $ISIObject.notifications
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaNotification

function Get-isiQuotaReports{
<#
.SYNOPSIS
    Get Quota Reports

.DESCRIPTION
    List all or matching reports.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER generated
    Only list reports matching this source.
    Valid inputs: manual,scheduled,all

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    Order results by this field.
    Valid inputs: time,generated,type

.PARAMETER type
    Only list reports matching this type.
    Valid inputs: summary,detail,all

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('manual','scheduled','all')][string]$generated,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('time','generated','type')][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('summary','detail','all')][string]$type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($generated){
                $queryArguments += 'generated=' + $generated
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($type){
                $queryArguments += 'type=' + $type
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/quota/reports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaReports

function Get-isiQuotaReport{
<#
.SYNOPSIS
    Get Quota Report

.DESCRIPTION
    Retrieve report data (XML) or contents (meta-data).
 
.PARAMETER id
    Report id

.PARAMETER name
    Report name

.PARAMETER contents
    Display JSON meta-data contents instead of report data.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$contents,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($contents){
                $queryArguments += 'contents=' + $contents
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/quota/reports/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.reports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaReport

function Get-isiQuotaReportAbout{
<#
.SYNOPSIS
    Get Quota Report About

.DESCRIPTION
    Retrieve report meta-data information.
 
.PARAMETER id
    Report id

.PARAMETER name
    Report name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/reports/$parameter1/about" -Cluster $Cluster
            return $ISIObject.reports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaReportAbout

function Get-isiQuotaSettingsMappings{
<#
.SYNOPSIS
    Get Quota Settings Mappings

.DESCRIPTION
    List all rules.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/settings/mappings" -Cluster $Cluster
            return $ISIObject.mappings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaSettingsMappings

function Get-isiQuotaSettingsMapping{
<#
.SYNOPSIS
    Get Quota Settings Mapping

.DESCRIPTION
    Retrieve the mapping information.
 
.PARAMETER id
    Quota id

.PARAMETER name
    Quota name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/settings/mappings/$parameter1" -Cluster $Cluster
            return $ISIObject.mappings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaSettingsMapping

function Get-isiQuotaSettingsNotifications{
<#
.SYNOPSIS
    Get Quota Settings Notifications

.DESCRIPTION
    List all rules.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/settings/notifications" -Cluster $Cluster
            return $ISIObject.notifications
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaSettingsNotifications

function Get-isiQuotaSettingsNotification{
<#
.SYNOPSIS
    Get Quota Settings Notification

.DESCRIPTION
    Retrieve notification rule information.
 
.PARAMETER id
    Notification id

.PARAMETER name
    Notification name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/settings/notifications/$parameter1" -Cluster $Cluster
            return $ISIObject.notifications
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaSettingsNotification

function Get-isiQuotaSettingsReports{
<#
.SYNOPSIS
    Get Quota Settings Reports

.DESCRIPTION
    List all settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/quota/settings/reports" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiQuotaSettingsReports

function Get-isiRemoteSupport{
<#
.SYNOPSIS
    Get Remote Support

.DESCRIPTION
    List all settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/remotesupport/connectemc" -Cluster $Cluster
            return $ISIObject.connectemc
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiRemoteSupport

function Get-isiSnapshotAliases{
<#
.SYNOPSIS
    Get Snapshot Aliases

.DESCRIPTION
    List all or matching snapshot aliases.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting. Choices are id, name, snapshot, and created. Default is id.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/snapshot/aliases" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.aliases,$ISIObject.resume
            }else{
                return $ISIObject.aliases
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotAliases

function Get-isiSnapshotAlias{
<#
.SYNOPSIS
    Get Snapshot Aliase

.DESCRIPTION
    Retrieve snapshot alias information.
 
.PARAMETER id
    Snapshot id

.PARAMETER name
    Snapshot name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/aliases/$parameter1" -Cluster $Cluster
            return $ISIObject.aliases
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotAlias

function Get-isiSnapshotChangelists{
<#
.SYNOPSIS
    Get Snapshot Changelists

.DESCRIPTION
    List all changelists.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/changelists" -Cluster $Cluster
            return $ISIObject.changelists
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotChangelists

function Get-isiSnapshotChangelist{
<#
.SYNOPSIS
    Get Snapshot Changelist

.DESCRIPTION
    Retrieve basic information on a changelist.
 
.PARAMETER id
    Changelist id

.PARAMETER name
    Changelist name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/changelists/$parameter1" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotChangelist

function Get-isiSnapshotChangelistLins{
<#
.SYNOPSIS
    Get Snapshot Changelist Lins

.DESCRIPTION
    Get entries from a changelist.
 
.PARAMETER changelist_id
    Changelist changelist_id

.PARAMETER changelist_name
    Changelist changelist_name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$changelist_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$changelist_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('changelist_id')){
                $parameter1 = $changelist_id
            } else {
                $parameter1 = $changelist_name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/changelists/$parameter1/lins" -Cluster $Cluster
            return $ISIObject.lins
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotChangelistLins

function Get-isiSnapshotChangelistLin{
<#
.SYNOPSIS
    Get Snapshot Changelist Lins

.DESCRIPTION
    Get a single entry from the changelist.
 
.PARAMETER changelist_id
    Changelist changelist_id

.PARAMETER changelist_name
    Changelist changelist_name

.PARAMETER id
     id

.PARAMETER name
     name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$changelist_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$changelist_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('changelist_id')){
                $parameter1 = $changelist_id
            } else {
                $parameter1 = $changelist_name
            }
            if ($psBoundParameters.ContainsKey('id')){
                $parameter2 = $id
            } else {
                $parameter2 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/changelists/$parameter1/lins/$parameter2" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotChangelistLin

function Get-isiSnapshotLicense{
<#
.SYNOPSIS
    Get Snapshot License

.DESCRIPTION
    Retrieve license information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/license" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotLicense

function Get-isiSnapshotPending{
<#
.SYNOPSIS
    Get Snapshot Pending

.DESCRIPTION
    Return list of snapshots to be taken.
 
.PARAMETER begin
    Unix Epoch time to start generating matches. Default is now.

.PARAMETER end
    Unix Epoch time to end generating matches. Default is forever.

.PARAMETER limit
    Return no more than this many result at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER schedule
    Limit output only to the named schedule.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$schedule,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($schedule){
                $queryArguments += 'schedule=' + $schedule
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/snapshot/pending" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.pending,$ISIObject.resume
            }else{
                return $ISIObject.pending
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotPending

function Get-isiSnapshotRepstates{
<#
.SYNOPSIS
    Get Snapshot Repstates

.DESCRIPTION
    List all repstates.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/repstates" -Cluster $Cluster
            return $ISIObject.repstates
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotRepstates

function Get-isiSnapshotRepstate{
<#
.SYNOPSIS
    Get Snapshot Repstate

.DESCRIPTION
    Retrieve basic information on a repstate.
 
.PARAMETER id
    Repstate id

.PARAMETER name
    Repstate name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/repstates/$parameter1" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotRepstate

function Get-isiSnapshotSchedulesv1{
<#
.SYNOPSIS
    Get Snapshot Schedules

.DESCRIPTION
    List all or matching schedules.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting. Choices are id, name, path, pattern, schedule, duration, alias, next_run, and next_snapshot. Default is id.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/snapshot/schedules" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.schedules,$ISIObject.resume
            }else{
                return $ISIObject.schedules
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotSchedulesv1
Set-Alias Get-isiSnapshotSchedules -Value Get-isiSnapshotSchedulesv1
Export-ModuleMember -Alias Get-isiSnapshotSchedules

function Get-isiSnapshotSchedulesv3{
<#
.SYNOPSIS
    Get Snapshot Schedules

.DESCRIPTION
    List all or matching schedules.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting. Choices are id, name, path, pattern, schedule, duration, alias, next_run, and next_snapshot. Default is id.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/snapshot/schedules" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.schedules,$ISIObject.resume
            }else{
                return $ISIObject.schedules
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotSchedulesv3

function Get-isiSnapshotSchedule{
<#
.SYNOPSIS
    Get Snapshot Schedule

.DESCRIPTION
    Retrieve the schedule.
 
.PARAMETER id
    Snapshot id

.PARAMETER name
    Snapshot name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/schedules/$parameter1" -Cluster $Cluster
            return $ISIObject.schedules
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotSchedule

function Get-isiSnapshotSettings{
<#
.SYNOPSIS
    Get Snapshot Settings

.DESCRIPTION
    List all settings
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotSettings

function Get-isiSnapshots{
<#
.SYNOPSIS
    Get Snapshots

.DESCRIPTION
    List all or matching snapshots.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER schedule
    Only list snapshots created by this schedule.

.PARAMETER sort
    The field that will be used for sorting. Choices are id, name, path, created, expires, size, has_locks, schedule, alias_target, alias_target_name, pct_filesystem, pct_reserve, and state. Default is id.

.PARAMETER state
    Only list snapshots matching this state.
    Valid inputs: all,active,deleting

.PARAMETER type
    Only list snapshots matching this type.
    Valid inputs: all,alias,real

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$schedule,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][ValidateSet('all','active','deleting')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][ValidateSet('all','alias','real')][string]$type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($schedule){
                $queryArguments += 'schedule=' + $schedule
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($type){
                $queryArguments += 'type=' + $type
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/snapshot/snapshots" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.snapshots,$ISIObject.resume
            }else{
                return $ISIObject.snapshots
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshots

function Get-isiSnapshotsSummary{
<#
.SYNOPSIS
    Get Snapshots Summary

.DESCRIPTION
    Return summary information about snapshots.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/snapshots-summary" -Cluster $Cluster
            return $ISIObject.summary
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotsSummary

function Get-isiSnapshot{
<#
.SYNOPSIS
    Get Snapshot

.DESCRIPTION
    Retrieve snapshot information.
 
.PARAMETER id
    Snapshot id

.PARAMETER name
    Snapshot name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/snapshots/$parameter1" -Cluster $Cluster
            return $ISIObject.snapshots
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshot

function Get-isiSnapshotLocks{
<#
.SYNOPSIS
    Get Snapshot Locks

.DESCRIPTION
    List all locks.
 
.PARAMETER snapshot_id
    Snapshot snapshot_id

.PARAMETER snapshot_name
    Snapshot snapshot_name

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting. Choices are id, expires, and comment. Default is id.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$snapshot_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$snapshot_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('snapshot_id')){
                $parameter1 = $snapshot_id
            } else {
                $parameter1 = $snapshot_name
            }
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/snapshot/snapshots/$parameter1/locks" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.locks,$ISIObject.resume
            }else{
                return $ISIObject.locks
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotLocks

function Get-isiSnapshotLock{
<#
.SYNOPSIS
    Get Snapshot Lock

.DESCRIPTION
    Retrieve lock information.
 
.PARAMETER snapshot_id
    Snapshot snapshot_id

.PARAMETER snapshot_name
    Snapshot snapshot_name

.PARAMETER id
     id

.PARAMETER name
     name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$snapshot_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$snapshot_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('snapshot_id')){
                $parameter1 = $snapshot_id
            } else {
                $parameter1 = $snapshot_name
            }
            if ($psBoundParameters.ContainsKey('id')){
                $parameter2 = $id
            } else {
                $parameter2 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/snapshot/snapshots/$parameter1/locks/$parameter2" -Cluster $Cluster
            return $ISIObject.locks
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSnapshotLock

function Get-isiStatisticsCurrent{
<#
.SYNOPSIS
    Get Statistics Current

.DESCRIPTION
    Retrieve stats.
 
.PARAMETER degraded
    If true, try to continue even if some stats are unavailable. In this case, errors will be present in the per-key returned data.

.PARAMETER devid
    Node devid to query. Either an <integer> or "all". Can be used more than one time to query multiple nodes. "all" queries all up nodes. 0 means query the local node. For "cluster" scoped keys, in any devid including 0 can be used.

.PARAMETER key
    One key name. Can be used more than one time to query multiple keys. Also works with 'keys' arguments.

.PARAMETER keys
    Multiple key names. May request matching keys or request 'all' keys. Can be comma separated list or can be used more than one time to make queries for multiple keys. May be used in conjunction with 'substr'. Also works with 'key' arguments.

.PARAMETER substr
    Used in conjunction with the 'keys' argument, alters the behavior of keys. Makes the 'keys' arg perform a partial match. Defaults to false.

.PARAMETER timeout
    Time in seconds to wait for results from remote nodes.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$degraded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][array]$devid,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][array]$key,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][array]$keys,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][bool]$substr,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][int]$timeout,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($degraded){
                $queryArguments += 'degraded=' + $degraded
            }
            if ($devid){
                $queryArguments += 'devid=' + $devid
            }
            if ($key){
                $queryArguments += 'key=' + $key
            }
            if ($keys){
                $queryArguments += 'keys=' + $keys
            }
            if ($substr){
                $queryArguments += 'substr=' + $substr
            }
            if ($timeout){
                $queryArguments += 'timeout=' + $timeout
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/statistics/current" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.stats
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsCurrent

function Get-isiStatisticsHistory{
<#
.SYNOPSIS
    Get Statistics History

.DESCRIPTION
    Retrieve stats.
 
.PARAMETER begin
    Earliest time (Unix epoch seconds) of interest. Negative times are interpreted as relative (before) now.

.PARAMETER degraded
    If true, try to continue even if some stats are unavailable. In this case, errors will be present in the per-key returned data.

.PARAMETER devid
    Node devid to query. Either an <integer> or "all". Can be used more than one time to query multiple nodes. "all" queries all up nodes. 0 means query the local node. For "cluster" scoped keys, in any devid including 0 can be used.

.PARAMETER end
    Latest time (Unix epoch seconds) of interest. Negative times are interpreted as relative (before) now. If not supplied, use now as the end time.

.PARAMETER interval
    Minimum sampling interval time in seconds. If native statistics are higher resolution, data will be down-sampled.

.PARAMETER key
    One key name. Can be used more than one time to query multiple keys. Also works with 'keys' arguments.

.PARAMETER keys
    Multiple key names. May request matching keys or request 'all' keys. Can be comma separated list or can be used more than one time to make queries for multiple keys. May be used in conjunction with 'substr'. Also works with 'key' arguments.

.PARAMETER memory_only
    Only use statistics sources that reside in memory (faster, but with less retention).

.PARAMETER resolution
    Synonymous with 'interval', if supplied supersedes interval.

.PARAMETER substr
    Used in conjunction with the 'keys' argument, alters the behavior of keys. Makes the 'keys' arg perform a partial match. Defaults to false.

.PARAMETER timeout
    Time in seconds to wait for results from remote nodes.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$degraded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][array]$devid,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$interval,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][array]$key,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][array]$keys,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][bool]$memory_only,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][int]$resolution,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][bool]$substr,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=10)][ValidateNotNullOrEmpty()][int]$timeout,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=11)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($degraded){
                $queryArguments += 'degraded=' + $degraded
            }
            if ($devid){
                $queryArguments += 'devid=' + $devid
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($interval){
                $queryArguments += 'interval=' + $interval
            }
            if ($key){
                $queryArguments += 'key=' + $key
            }
            if ($keys){
                $queryArguments += 'keys=' + $keys
            }
            if ($memory_only){
                $queryArguments += 'memory_only=' + $memory_only
            }
            if ($resolution){
                $queryArguments += 'resolution=' + $resolution
            }
            if ($substr){
                $queryArguments += 'substr=' + $substr
            }
            if ($timeout){
                $queryArguments += 'timeout=' + $timeout
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/statistics/history" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.stats
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsHistory

function Get-isiStatisticsKeys{
<#
.SYNOPSIS
    Get Statistics Keys

.DESCRIPTION
    List meta-data for matching keys.
 
.PARAMETER count
    Only count matching keys, do not return meta-data.

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER queryable
    Only list keys that can/cannot be queries. Default is true.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$count,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$queryable,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($count){
                $queryArguments += 'count=' + $count
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($queryable){
                $queryArguments += 'queryable=' + $queryable
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/statistics/keys" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.keys,$ISIObject.resume
            }else{
                return $ISIObject.keys
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsKeys

function Get-isiStatisticsKey{
<#
.SYNOPSIS
    Get Statistics Key

.DESCRIPTION
    List key meta-data.
 
.PARAMETER id
    Key id

.PARAMETER name
    Key name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/statistics/keys/$parameter1" -Cluster $Cluster
            return $ISIObject.keys
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsKey

function Get-isiStatisticsOperations{
<#
.SYNOPSIS
    Get Statistics Operations

.DESCRIPTION
    Retrieve operations list.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/statistics/operations" -Cluster $Cluster
            return $ISIObject.operations
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsOperations

function Get-isiStatisticsProtocols{
<#
.SYNOPSIS
    Get Statistics Protocols

.DESCRIPTION
    Retrieve protocol list.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/statistics/protocols" -Cluster $Cluster
            return $ISIObject.protocols
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsProtocols

function Get-isiStatisticsSummaryClient{
<#
.SYNOPSIS
    Get Statistics Summary Client

.DESCRIPTION
    
 
.PARAMETER classes
    A comma separated list. Default is all. (other | write | read | namespace_read | namespace_write)

.PARAMETER degraded
    Continue to report if some nodes do not respond.

.PARAMETER local_addresses
    A comma separated list. Only report statistics for operations handled by the local hosts with dotted-quad IP addresses enumerated.

.PARAMETER local_names
    A comma separated list. Only report statistics for operations handled by the local hosts with resolved names enumerated.

.PARAMETER nodes
    A comma separated list. Specify node(s) for which statistics should be reported. Default is all. Zero (0) should be passed in as the sole argument to indicate local.

.PARAMETER numeric
    Do not resolve hostnames and usernames to their human readable form(s). Default is false.

.PARAMETER protocols
    A comma separated list. Default is all. (nfs3 | smb1 | nlm | ftp | http | siq | smb2 | nfs4 | papi | jobd | irp | lsass_in | lsass_out | hdfs | internal | external)

.PARAMETER remote_addresses
    A comma separated list. Only report statistics for operations requested by the remote clients with dotted-quad IP addresses enumerated.

.PARAMETER remote_names
    A comma separated list. Only report statistics for operations requested by the remote clients with resolved names enumerated.

.PARAMETER sort
    Sort data by the specified comma-separated field(s). (num_operations | operation_rate | in_max | in_min | in | in_avg | out_max | out_min | out | out_avg | time_max | time_min | time_avg | node | protocol | class | user_id | user_name | local_addr | local_name | remote_addr | remote_name) Prepend 'asc:' or 'desc:' to a field to change the sort direction.

.PARAMETER timeout
    Timeout remote commands after NUM seconds, where NUM is the integer passed to the argument.

.PARAMETER totalby
    A comma separated list specifying what should be unique. (node | protocol | class | local_addr | local_name | remote_addr | remote_name | user_id | user_name | devid). Aggregation is performed over all the fields not specified in the list.

.PARAMETER user_ids
    A comma separated list. Only report statistics for operations requested by users with numeric UIDs enumerated.

.PARAMETER user_names
    A comma separated list. Only report statistics for operations requested by users with resolved names enumerated.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$classes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$degraded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$local_addresses,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$local_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$nodes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][bool]$numeric,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$protocols,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$remote_addresses,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$remote_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=10)][ValidateNotNullOrEmpty()][int]$timeout,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=11)][ValidateNotNullOrEmpty()][string]$totalby,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=12)][ValidateNotNullOrEmpty()][string]$user_ids,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=13)][ValidateNotNullOrEmpty()][string]$user_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=14)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($classes){
                $queryArguments += 'classes=' + $classes
            }
            if ($degraded){
                $queryArguments += 'degraded=' + $degraded
            }
            if ($local_addresses){
                $queryArguments += 'local_addresses=' + $local_addresses
            }
            if ($local_names){
                $queryArguments += 'local_names=' + $local_names
            }
            if ($nodes){
                $queryArguments += 'nodes=' + $nodes
            }
            if ($numeric){
                $queryArguments += 'numeric=' + $numeric
            }
            if ($protocols){
                $queryArguments += 'protocols=' + $protocols
            }
            if ($remote_addresses){
                $queryArguments += 'remote_addresses=' + $remote_addresses
            }
            if ($remote_names){
                $queryArguments += 'remote_names=' + $remote_names
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($timeout){
                $queryArguments += 'timeout=' + $timeout
            }
            if ($totalby){
                $queryArguments += 'totalby=' + $totalby
            }
            if ($user_ids){
                $queryArguments += 'user_ids=' + $user_ids
            }
            if ($user_names){
                $queryArguments += 'user_names=' + $user_names
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/statistics/summary/client" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.client
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsSummaryClient

function Get-isiStatisticsSummaryDrive{
<#
.SYNOPSIS
    Get Statistics Summary Drive

.DESCRIPTION
    
 
.PARAMETER degraded
    Continue to report if some nodes do not respond.

.PARAMETER nodes
    A comma separated list. Specify node(s) for which statistics should be reported. Default is all. Zero (0) should be passed in as the sole argument to indicate local.

.PARAMETER sort
    Sort data by the specified comma-separated field(s). (drive_id | type | xfers_in | bytes_in | xfer_size_in | xfers_out | bytes_out | xfer_size_out | access_latency | access_slow | iosched_latency | iosched_queue | busy | used_bytes_percent | used_inodes). Prepend 'asc:' or 'desc:' to a field to change the sort direction.

.PARAMETER timeout
    Timeout remote commands after NUM seconds, where NUM is the integer passed to the argument.

.PARAMETER type
    Specify drive type(s) for which statistics should be reported.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$degraded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$nodes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$timeout,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($degraded){
                $queryArguments += 'degraded=' + $degraded
            }
            if ($nodes){
                $queryArguments += 'nodes=' + $nodes
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($timeout){
                $queryArguments += 'timeout=' + $timeout
            }
            if ($type){
                $queryArguments += 'type=' + $type
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/statistics/summary/drive" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.drive
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsSummaryDrive

function Get-isiStatisticsSummaryHeat{
<#
.SYNOPSIS
    Get Statistics Summary Heat

.DESCRIPTION
    File heat map, i.e. rate of file operations, and the type of operation listed by path/lin(s).
 
.PARAMETER classes
    A comma separated list. Default is all. (other | write | read | namespace_read | namespace_write).

.PARAMETER convertlin
    Convert lin to hex. Default is true.

.PARAMETER degraded
    Continue to report if some nodes do not respond.

.PARAMETER events
    A comma separated list. Default is all. Only report specified event types(s). (blocked | contended | deadlocked | getattr | link | lock | lookup | read | rename | setattr | unlink | write).

.PARAMETER maxpath
    Maximum bytes allocated for looking up a path. An ASCII character is 1 byte (It may be more for other types of encoding). The default is 1024 bytes. Zero (0) means unlimited (Subject to the system limits.)

.PARAMETER nodes
    A comma separated list. Specify node(s) for which statistics should be reported. Default is all. Zero (0) should be passed in as the sole argument to indicate local.

.PARAMETER numeric
    Do not resolve LINs into filenames. Default is false.

.PARAMETER pathdepth
    Squash paths to this directory depth. Defaults to none, ie. the paths are not limited (Subject to the system limits.)

.PARAMETER sort
    Sort data by the specified comma-separated field(s). (operation_rate | node | event_name | class_name | lin | path). Prepend 'asc:' or 'desc:' to a field to change the sort direction.

.PARAMETER timeout
    Timeout remote commands after NUM seconds, where NUM is the integer passed to the argument.

.PARAMETER totalby
    A comma separated list specifying what should be unique. (node | event_name | event_class | operation_rate | path | lin). Aggregation is performed over all the fields not specified in the list.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$classes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$convertlin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$degraded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$events,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$maxpath,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$nodes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][bool]$numeric,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][int]$pathdepth,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][int]$timeout,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=10)][ValidateNotNullOrEmpty()][string]$totalby,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=11)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($classes){
                $queryArguments += 'classes=' + $classes
            }
            if ($convertlin){
                $queryArguments += 'convertlin=' + $convertlin
            }
            if ($degraded){
                $queryArguments += 'degraded=' + $degraded
            }
            if ($events){
                $queryArguments += 'events=' + $events
            }
            if ($maxpath){
                $queryArguments += 'maxpath=' + $maxpath
            }
            if ($nodes){
                $queryArguments += 'nodes=' + $nodes
            }
            if ($numeric){
                $queryArguments += 'numeric=' + $numeric
            }
            if ($pathdepth){
                $queryArguments += 'pathdepth=' + $pathdepth
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($timeout){
                $queryArguments += 'timeout=' + $timeout
            }
            if ($totalby){
                $queryArguments += 'totalby=' + $totalby
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/statistics/summary/heat" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.heat
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsSummaryHeat

function Get-isiStatisticsSummaryProtocol{
<#
.SYNOPSIS
    Get Statistics Summary Protocol

.DESCRIPTION
    
 
.PARAMETER classes
    A comma separated list. Default is all. (other | write | read | create | delete | namespace_read | namespace_write | file_state | session_state).

.PARAMETER degraded
    Continue to report if some nodes do not respond.

.PARAMETER nodes
    A comma separated list. Specify node(s) for which statistics should be reported. Default is all. Zero (0) should be passed in as the sole argument to indicate local.

.PARAMETER operations
    Specify operation(s) for which statistics should be reported (See the cli command: 'isi statistics list operations', for a total list). Default is all.

.PARAMETER protocols
    A comma separated list. Default is all. (nfs3 | smb1 | nlm | ftp | http | siq | smb2 | nfs4 | papi | jobd | irp | lsass_in | lsass_out | hdfs | all | internal | external)

.PARAMETER sort
    Sort data by the specified comma-separated field(s). (time | operation_count | operation_rate | in_max | in_min | in | in_avg | in_standard_dev | out_max | out_min | out | out_avg | out_standard_dev | time_max | time_min | time_avg | time_standard_dev | node | protocol | class | operation). Prepend 'asc:' or 'desc:' to a field to change the sort direction.

.PARAMETER timeout
    Timeout remote commands after NUM seconds, where NUM is the integer passed to the argument.

.PARAMETER totalby
    A comma separated list specifying what should be unique. (node | protocol | class | operation). Aggregation is performed over all the fields not specified in the list.

.PARAMETER zero
    Show table entries with no values.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$classes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$degraded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$nodes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$operations,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$protocols,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][int]$timeout,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$totalby,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][bool]$zero,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=9)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($classes){
                $queryArguments += 'classes=' + $classes
            }
            if ($degraded){
                $queryArguments += 'degraded=' + $degraded
            }
            if ($nodes){
                $queryArguments += 'nodes=' + $nodes
            }
            if ($operations){
                $queryArguments += 'operations=' + $operations
            }
            if ($protocols){
                $queryArguments += 'protocols=' + $protocols
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($timeout){
                $queryArguments += 'timeout=' + $timeout
            }
            if ($totalby){
                $queryArguments += 'totalby=' + $totalby
            }
            if ($zero){
                $queryArguments += 'zero=' + $zero
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/statistics/summary/protocol" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.protocol
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsSummaryProtocol

function Get-isiStatisticsSummaryProtocolStats{
<#
.SYNOPSIS
    Get Statistics Summary Protocol Stats

.DESCRIPTION
    
 
.PARAMETER degraded
    Continue to report if some nodes do not respond.

.PARAMETER nodes
    A comma separated list. Specify node(s) for which statistics should be reported. Default is all. Zero (0) should be passed in as the sole argument to indicate local.

.PARAMETER protocol
    A comma separated list. Default is all external protocols. (nfs3 | smb1 | nlm | ftp | http | siq | smb2 | nfs4 | papi | jobd | irp | lsass_in | lsass_out | hdfs)

.PARAMETER timeout
    Timeout remote commands after NUM seconds, where NUM is the integer passed to the argument.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$degraded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$nodes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$protocol,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$timeout,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($degraded){
                $queryArguments += 'degraded=' + $degraded
            }
            if ($nodes){
                $queryArguments += 'nodes=' + $nodes
            }
            if ($protocol){
                $queryArguments += 'protocol=' + $protocol
            }
            if ($timeout){
                $queryArguments += 'timeout=' + $timeout
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/statistics/summary/protocol-stats" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.'protocol-stats'
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsSummaryProtocolStats

function Get-isiStatisticsSummarySystem{
<#
.SYNOPSIS
    Get Statistics Summary System

.DESCRIPTION
    
 
.PARAMETER degraded
    Continue to report if some nodes do not respond.

.PARAMETER nodes
    A comma separated list. Specify node(s) for which statistics should be reported. Default is all. Zero (0) should be passed in as the sole argument to indicate local.

.PARAMETER oprates
    Display protocol operation rate statistics rather than the default throughput statistics.

.PARAMETER sort
    Sort data by the specified comma-separated field(s). (time | node | cpu | smb | ftp | http | nfs | hdfs | total | net_in | net_out | disk_in). Prepend 'asc:' or 'desc:' to a field to change the sort direction.

.PARAMETER timeout
    Timeout remote commands after NUM seconds, where NUM is the integer passed to the argument.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$degraded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$nodes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$oprates,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$timeout,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($degraded){
                $queryArguments += 'degraded=' + $degraded
            }
            if ($nodes){
                $queryArguments += 'nodes=' + $nodes
            }
            if ($oprates){
                $queryArguments += 'oprates=' + $oprates
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($timeout){
                $queryArguments += 'timeout=' + $timeout
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/statistics/summary/system" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.system
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsSummarySystem

function Get-isiStatisticsSummaryWorkload{
<#
.SYNOPSIS
    Get Statistics Summary Workload

.DESCRIPTION
    
 
.PARAMETER degraded
    Continue to report if some nodes do not respond.

.PARAMETER job_type
    Only report statistics for a job specified by type, if configured.

.PARAMETER nodes
    A comma separated list. Specify node(s) for which statistics should be reported. Default is all. Zero (0) should be passed in as the sole argument to indicate local.

.PARAMETER sort
    Sort data by the specified comma-separated field(s). (node | system_name | job_type | cpu | reads | writes | l2 | l3). Prepend 'asc:' or 'desc:' to a field to change the sort direction.

.PARAMETER system_names
    A comma separated list. Only report statistics for workloads specified by system names.

.PARAMETER timeout
    Timeout remote commands after NUM seconds, where NUM is the integer passed to the argument.

.PARAMETER totalby
    A comma separated list specifying what should be unique. (node | system_name | job_type). Aggregation is performed over all the fields not specified in the list.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$degraded,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$job_type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$nodes,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$system_names,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][int]$timeout,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$totalby,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($degraded){
                $queryArguments += 'degraded=' + $degraded
            }
            if ($job_type){
                $queryArguments += 'job_type=' + $job_type
            }
            if ($nodes){
                $queryArguments += 'nodes=' + $nodes
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($system_names){
                $queryArguments += 'system_names=' + $system_names
            }
            if ($timeout){
                $queryArguments += 'timeout=' + $timeout
            }
            if ($totalby){
                $queryArguments += 'totalby=' + $totalby
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/statistics/summary/workload" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.workload
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStatisticsSummaryWorkload

function Get-isiStoragepoolCompatibilitiesClassActive{
<#
.SYNOPSIS
    Get Storagepool Compatibilities Class Active

.DESCRIPTION
    Get a list of active compatibilities
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/compatibilities/class/active" -Cluster $Cluster
            return $ISIObject.active
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolCompatibilitiesClassActive

function Get-isiStoragepoolCompatibilitiesClassActiveId{
<#
.SYNOPSIS
    Get Storagepool Compatibilities Class Active ID

.DESCRIPTION
    Get an active compatibilities by id
 
.PARAMETER id
    Active Class id

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $parameter1 = $id
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/compatibilities/class/active/<ID>" -Cluster $Cluster
            return $ISIObject.active
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolCompatibilitiesClassActiveId

function Get-isiStoragepoolCompatibilitiesClassAvailable{
<#
.SYNOPSIS
    Get Storagepool Compatibilities Class Available

.DESCRIPTION
    Get a list of available compatibilities
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/compatibilities/class/available" -Cluster $Cluster
            return $ISIObject.available
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolCompatibilitiesClassAvailable

function Get-isiStoragepoolCompatibilitiesSSDActivev1{
<#
.SYNOPSIS
    Get Storagepool Compatibilities SSD Active

.DESCRIPTION
    Get a list of active ssd compatibilities
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/compatibilities/ssd/active" -Cluster $Cluster
            return $ISIObject.active
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolCompatibilitiesSSDActivev1
Set-Alias Get-isiStoragepoolCompatibilitiesSSDActive -Value Get-isiStoragepoolCompatibilitiesSSDActivev1
Export-ModuleMember -Alias Get-isiStoragepoolCompatibilitiesSSDActive

function Get-isiStoragepoolCompatibilitiesSSDActivev3{
<#
.SYNOPSIS
    Get Storagepool Compatibilities Ssd Active

.DESCRIPTION
    Get a list of active ssd compatibilities
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/storagepool/compatibilities/ssd/active" -Cluster $Cluster
            return $ISIObject.active
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolCompatibilitiesSSDActivev3

function Get-isiStoragepoolCompatibilitiesSSDActiveIdv1{
<#
.SYNOPSIS
    Get Storagepool Compatibilities SSD Active ID

.DESCRIPTION
    Get a active ssd compatibilities by id
 
.PARAMETER id
    Active SSD id

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $parameter1 = $id
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/compatibilities/ssd/active/<ID>" -Cluster $Cluster
            return $ISIObject.active
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolCompatibilitiesSSDActiveIdv1
Set-Alias Get-isiStoragepoolCompatibilitiesSSDActiveId -Value Get-isiStoragepoolCompatibilitiesSSDActiveIdv1
Export-ModuleMember -Alias Get-isiStoragepoolCompatibilitiesSSDActiveId

function Get-isiStoragepoolCompatibilitiesSSDActivev3{
<#
.SYNOPSIS
    Get Storagepool Compatibilities Ssd Active

.DESCRIPTION
    Get a active ssd compatibilities by id
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/storagepool/compatibilities/ssd/active/$parameter1" -Cluster $Cluster
            return $ISIObject.active
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolCompatibilitiesSSDActivev3

function Get-isiStoragepoolCompatibilitiesSSDAvailablev1{
<#
.SYNOPSIS
    Get Storagepool Compatibilities SSD Available

.DESCRIPTION
    Get a list of available ssd compatibilities
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/compatibilities/ssd/available" -Cluster $Cluster
            return $ISIObject.available
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolCompatibilitiesSSDAvailablev1
Set-Alias Get-isiStoragepoolCompatibilitiesSSDAvailable -Value Get-isiStoragepoolCompatibilitiesSSDAvailablev1
Export-ModuleMember -Alias Get-isiStoragepoolCompatibilitiesSSDAvailable

function Get-isiStoragepoolNodepoolsv1{
<#
.SYNOPSIS
    Get Storagepool Nodepools

.DESCRIPTION
    List all node pools.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/nodepools" -Cluster $Cluster
            return $ISIObject.nodepools
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolNodepoolsv1
Set-Alias Get-isiStoragepoolNodepools -Value Get-isiStoragepoolNodepoolsv1
Export-ModuleMember -Alias Get-isiStoragepoolNodepools

function Get-isiStoragepoolNodepoolsv3{
<#
.SYNOPSIS
    Get Storagepool Nodepools

.DESCRIPTION
    List all node pools.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/storagepool/nodepools" -Cluster $Cluster
            return $ISIObject.nodepools
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolNodepoolsv3

function Get-isiStoragepoolNodepoolv1{
<#
.SYNOPSIS
    Get Storagepool Nodepool

.DESCRIPTION
    Retrieve node pool information.
 
.PARAMETER id
    Nodepool id

.PARAMETER name
    Nodepool name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/nodepools/$parameter1" -Cluster $Cluster
            return $ISIObject.nodepools
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolNodepoolv1
Set-Alias Get-isiStoragepoolNodepool -Value Get-isiStoragepoolNodepoolv1
Export-ModuleMember -Alias Get-isiStoragepoolNodepool

function Get-isiStoragepoolNodepoolv3{
<#
.SYNOPSIS
    Get Storagepool Nodepool

.DESCRIPTION
    Retrieve node pool information.
 
.PARAMETER id
    Nid id

.PARAMETER name
    Nid name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/storagepool/nodepools/$parameter1" -Cluster $Cluster
            return $ISIObject.nodepools
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolNodepoolv3

function Get-isiStoragepoolSettings{
<#
.SYNOPSIS
    Get Storagepool Settings

.DESCRIPTION
    List all settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolSettings

function Get-isiStoragepoolStatus{
<#
.SYNOPSIS
    Get Storagepool Status

.DESCRIPTION
    List any health conditions detected.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/status" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolStatus

function Get-isiStoragepoolsv1{
<#
.SYNOPSIS
    Get Storagepools

.DESCRIPTION
    List all storage pools.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/storagepools" -Cluster $Cluster
            return $ISIObject.storagepools
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolsv1
Set-Alias Get-isiStoragepools -Value Get-isiStoragepoolsv1
Export-ModuleMember -Alias Get-isiStoragepools

function Get-isiStoragepoolStoragepoolsv3{
<#
.SYNOPSIS
    Get Storagepool Storagepools

.DESCRIPTION
    List all storage pools.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/storagepool/storagepools" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.storagepools
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolStoragepoolsv3

function Get-isiStoragepoolSuggestedProtection{
<#
.SYNOPSIS
    Get Storagepool Suggested Protection

.DESCRIPTION
    Retrieve the suggested protection policy.
 
.PARAMETER id
    Nid id

.PARAMETER name
    Nid name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/storagepool/suggested-protection/$parameter1" -Cluster $Cluster
            return $ISIObject.suggested_protection
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolSuggestedProtection

function Get-isiStoragepoolSuggestedProtection{
<#
.SYNOPSIS
    Get Storagepool Suggested Protection

.DESCRIPTION
    Retrieve the suggested protection policy.
 
.PARAMETER id
    Nodepool id

.PARAMETER name
    Nodepool name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/suggested_protection/$parameter1" -Cluster $Cluster
            return $ISIObject.suggested_protection
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolSuggestedProtection

function Get-isiStoragepoolTiers{
<#
.SYNOPSIS
    Get Storagepool Tiers

.DESCRIPTION
    List all tiers.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/tiers" -Cluster $Cluster
            return $ISIObject.tiers
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolTiers

function Get-isiStoragepoolTier{
<#
.SYNOPSIS
    Get Storagepool Tier

.DESCRIPTION
    Retrieve tier information.
 
.PARAMETER id
    Tier id

.PARAMETER name
    Tier name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/tiers/$parameter1" -Cluster $Cluster
            return $ISIObject.tiers
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolTier

function Get-isiStoragepoolUnprovisioned{
<#
.SYNOPSIS
    Get Storagepool Unprovisioned

.DESCRIPTION
    Get the unprovisioned nodes and drives
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/storagepool/unprovisioned" -Cluster $Cluster
            return $ISIObject.unprovisioned
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiStoragepoolUnprovisioned

function Get-isiSyncHistoryCpu{
<#
.SYNOPSIS
    Get Sync History Cpu

.DESCRIPTION
    List cpu performance data.
 
.PARAMETER begin
    Begin timestamp for time-series report.

.PARAMETER end
    End timestamp for time-series report.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/sync/history/cpu" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.statistics
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncHistoryCpu

function Get-isiSyncHistoryFile{
<#
.SYNOPSIS
    Get Sync History File

.DESCRIPTION
    List file operations performance data.
 
.PARAMETER begin
    Begin timestamp for time-series report.

.PARAMETER end
    End timestamp for time-series report.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/history/file" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.statistics
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncHistoryFile

function Get-isiSyncHistoryNetwork{
<#
.SYNOPSIS
    Get Sync History Network

.DESCRIPTION
    List network operations performance data.
 
.PARAMETER begin
    Begin timestamp for time-series report.

.PARAMETER end
    End timestamp for time-series report.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/history/network" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.statistics
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncHistoryNetwork

function Get-isiSyncHistoryWorker{
<#
.SYNOPSIS
    Get Sync History Worker

.DESCRIPTION
    List worker performance data.
 
.PARAMETER begin
    Begin timestamp for time-series report.

.PARAMETER end
    End timestamp for time-series report.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][int]$begin,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$end,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($begin){
                $queryArguments += 'begin=' + $begin
            }
            if ($end){
                $queryArguments += 'end=' + $end
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/sync/history/worker" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.statistics
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncHistoryWorker

function Get-isiSyncJobsv1{
<#
.SYNOPSIS
    Get Sync Jobs

.DESCRIPTION
    Get a list of SyncIQ jobs.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    The state of the job.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/jobs" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.jobs,$ISIObject.resume
            }else{
                return $ISIObject.jobs
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncJobsv1
Set-Alias Get-isiSyncJobs -Value Get-isiSyncJobsv1
Export-ModuleMember -Alias Get-isiSyncJobs

function Get-isiSyncJobsv3{
<#
.SYNOPSIS
    Get Sync Jobs

.DESCRIPTION
    Get a list of SyncIQ jobs.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    The state of the job.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/sync/jobs" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.jobs,$ISIObject.resume
            }else{
                return $ISIObject.jobs
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncJobsv3

function Get-isiSyncJobv1{
<#
.SYNOPSIS
    Get Sync Job

.DESCRIPTION
    View a single SyncIQ job.
 
.PARAMETER id
    Job id

.PARAMETER name
    Job name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/jobs/$parameter1" -Cluster $Cluster
            return $ISIObject.jobs
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncJobv1
Set-Alias Get-isiSyncJob -Value Get-isiSyncJobv1
Export-ModuleMember -Alias Get-isiSyncJob

function Get-isiSyncJobv3{
<#
.SYNOPSIS
    Get Sync Job

.DESCRIPTION
    View a single SyncIQ job.
 
.PARAMETER id
    Job id

.PARAMETER name
    Job name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/sync/jobs/$parameter1" -Cluster $Cluster
            return $ISIObject.jobs
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncJobv3

function Get-isiSyncLicense{
<#
.SYNOPSIS
    Get Sync License

.DESCRIPTION
    Retrieve license information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/license" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncLicense

function Get-isiSyncPoliciesv1{
<#
.SYNOPSIS
    Get Sync Policies

.DESCRIPTION
    List all SyncIQ policies.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER summary
    Show only summary properties

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][bool]$summary,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($summary){
                $queryArguments += 'summary=' + $summary
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/policies" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.policies,$ISIObject.resume
            }else{
                return $ISIObject.policies
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncPoliciesv1
Set-Alias Get-isiSyncPolicies -Value Get-isiSyncPoliciesv1
Export-ModuleMember -Alias Get-isiSyncPolicies

function Get-isiSyncPoliciesv3{
<#
.SYNOPSIS
    Get Sync Policies

.DESCRIPTION
    List all SyncIQ policies.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER scope
    If specified as "effective" or not specified, all fields are returned. If specified as "user", only fields with non-default values are shown. If specified as "default", the original values are returned.
    Valid inputs: user,default,effective

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][ValidateSet('user','default','effective')][string]$scope,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($scope){
                $queryArguments += 'scope=' + $scope
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/sync/policies" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.policies,$ISIObject.resume
            }else{
                return $ISIObject.policies
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncPoliciesv3

function Get-isiSyncPolicyv1{
<#
.SYNOPSIS
    Get Sync Policy

.DESCRIPTION
    View a single SyncIQ policy.
 
.PARAMETER id
    Policy id

.PARAMETER name
    Policy name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/policies/$parameter1" -Cluster $Cluster
            return $ISIObject.policies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncPolicyv1
Set-Alias Get-isiSyncPolicy -Value Get-isiSyncPolicyv1
Export-ModuleMember -Alias Get-isiSyncPolicy

function Get-isiSyncPolicyv3{
<#
.SYNOPSIS
    Get Sync Policy

.DESCRIPTION
    View a single SyncIQ policy.
 
.PARAMETER id
    Policy id

.PARAMETER name
    Policy name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/sync/policies/$parameter1" -Cluster $Cluster
            return $ISIObject.policies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncPolicyv3

function Get-isiSyncReportsv1{
<#
.SYNOPSIS
    Get Sync Reports

.DESCRIPTION
    Get a list of SyncIQ reports. By default 10 reports are returned per policy, unless otherwise specified by 'reports_per_policy'.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER newer_than
    Filter the returned reports to include only those whose jobs started more recently than the specified number of days ago.

.PARAMETER policy_name
    Filter the returned reports to include only those with this policy name.

.PARAMETER reports_per_policy
    If specified, only the N most recent reports will be returned per policy. If no other query args are present this argument defaults to 10.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Filter the returned reports to include only those whose jobs are in this state.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$newer_than,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$policy_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$reports_per_policy,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($newer_than){
                $queryArguments += 'newer_than=' + $newer_than
            }
            if ($policy_name){
                $queryArguments += 'policy_name=' + $policy_name
            }
            if ($reports_per_policy){
                $queryArguments += 'reports_per_policy=' + $reports_per_policy
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/reports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncReportsv1
Set-Alias Get-isiSyncReports -Value Get-isiSyncReportsv1
Export-ModuleMember -Alias Get-isiSyncReports

function Get-isiSyncReportsv4{
<#
.SYNOPSIS
    Get Sync Reports

.DESCRIPTION
    Get a list of SyncIQ reports. By default 10 reports are returned per policy, unless otherwise specified by 'reports_per_policy'.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER newer_than
    Filter the returned reports to include only those whose jobs started more recently than the specified number of days ago.

.PARAMETER policy_name
    Filter the returned reports to include only those with this policy name.

.PARAMETER reports_per_policy
    If specified, only the N most recent reports will be returned per policy. If no other query args are present this argument defaults to 10.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Filter the returned reports to include only those whose jobs are in this state.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$newer_than,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$policy_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$reports_per_policy,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($newer_than){
                $queryArguments += 'newer_than=' + $newer_than
            }
            if ($policy_name){
                $queryArguments += 'policy_name=' + $policy_name
            }
            if ($reports_per_policy){
                $queryArguments += 'reports_per_policy=' + $reports_per_policy
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/sync/reports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncReportsv4

function Get-isiSyncReportsRotate{
<#
.SYNOPSIS
    Get Sync Reports Rotate

.DESCRIPTION
    Whether the rotation is still running or not.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/reports-rotate" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncReportsRotate

function Get-isiSyncReportv1{
<#
.SYNOPSIS
    Get Sync Report

.DESCRIPTION
    View a single SyncIQ report.
 
.PARAMETER id
    Rid id

.PARAMETER name
    Rid name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/reports/$parameter1" -Cluster $Cluster
            return $ISIObject.reports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncReportv1
Set-Alias Get-isiSyncReport -Value Get-isiSyncReportv1
Export-ModuleMember -Alias Get-isiSyncReport

function Get-isiSyncReportv4{
<#
.SYNOPSIS
    Get Sync Report

.DESCRIPTION
    View a single SyncIQ report.
 
.PARAMETER id
    Rid id

.PARAMETER name
    Rid name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/sync/reports/$parameter1" -Cluster $Cluster
            return $ISIObject.reports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncReportv4

function Get-isiSyncReportSubreportsv1{
<#
.SYNOPSIS
    Get Sync Report Subreports

.DESCRIPTION
    Get a list of SyncIQ subreports for a report.
 
.PARAMETER report_id
    Report report_id

.PARAMETER report_name
    Report report_name

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER newer_than
    Filter the returned reports to include only those whose jobs started more recently than the specified number of days ago.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Filter the returned reports to include only those whose jobs are in this state.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$report_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$report_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$newer_than,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('report_id')){
                $parameter1 = $report_id
            } else {
                $parameter1 = $report_name
            }
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($newer_than){
                $queryArguments += 'newer_than=' + $newer_than
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/reports/$parameter1/subreports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.subreports,$ISIObject.resume
            }else{
                return $ISIObject.subreports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncReportSubreportsv1
Set-Alias Get-isiSyncReportSubreports -Value Get-isiSyncReportSubreportsv1
Export-ModuleMember -Alias Get-isiSyncReportSubreports

function Get-isiSyncReportSubreportsv4{
<#
.SYNOPSIS
    Get Sync Report Subreports

.DESCRIPTION
    Get a list of SyncIQ subreports for a report.
 
.PARAMETER id
    Rid id

.PARAMETER name
    Rid name

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER newer_than
    Filter the returned reports to include only those whose jobs started more recently than the specified number of days ago.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Filter the returned reports to include only those whose jobs are in this state.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$newer_than,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($newer_than){
                $queryArguments += 'newer_than=' + $newer_than
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/sync/reports/$parameter1/subreports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.subreports,$ISIObject.resume
            }else{
                return $ISIObject.subreports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncReportSubreportsv4

function Get-isiSyncReportSubreportv1{
<#
.SYNOPSIS
    Get Sync Report Subreport

.DESCRIPTION
    View a single SyncIQ subreport.
 
.PARAMETER report_id
    Report report_id

.PARAMETER report_name
    Report report_name

.PARAMETER id
     id

.PARAMETER name
     name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$report_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$report_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('report_id')){
                $parameter1 = $report_id
            } else {
                $parameter1 = $report_name
            }
            if ($psBoundParameters.ContainsKey('id')){
                $parameter2 = $id
            } else {
                $parameter2 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/reports/$parameter1/subreports/$parameter2" -Cluster $Cluster
            return $ISIObject.subreports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncReportSubreportv1
Set-Alias Get-isiSyncReportSubreport -Value Get-isiSyncReportSubreportv1
Export-ModuleMember -Alias Get-isiSyncReportSubreport

function Get-isiSyncReportSubreportv4{
<#
.SYNOPSIS
    Get Sync Report Subreport

.DESCRIPTION
    View a single SyncIQ subreport.
 
.PARAMETER report_id
    Rid report_id

.PARAMETER report_name
    Rid report_name

.PARAMETER id
     id

.PARAMETER name
     name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$report_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$report_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('report_id')){
                $parameter1 = $report_id
            } else {
                $parameter1 = $report_name
            }
            if ($psBoundParameters.ContainsKey('id')){
                $parameter2 = $id
            } else {
                $parameter2 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/sync/reports/$parameter1/subreports/$parameter2" -Cluster $Cluster
            return $ISIObject.subreports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncReportSubreportv4

function Get-isiSyncRulesv1{
<#
.SYNOPSIS
    Get Sync Rules

.DESCRIPTION
    List all SyncIQ performance rules.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER type
    Filter the returned rules to include only those with this rule type.
    Valid inputs: bandwidth,file_count,cpu

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('bandwidth','file_count','cpu')][string]$type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($type){
                $queryArguments += 'type=' + $type
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/rules" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.rules,$ISIObject.resume
            }else{
                return $ISIObject.rules
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncRulesv1
Set-Alias Get-isiSyncRules -Value Get-isiSyncRulesv1
Export-ModuleMember -Alias Get-isiSyncRules

function Get-isiSyncRulesv3{
<#
.SYNOPSIS
    Get Sync Rules

.DESCRIPTION
    List all SyncIQ performance rules.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER type
    Filter the returned rules to include only those with this rule type.
    Valid inputs: bandwidth,file_count,cpu,worker

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][ValidateSet('bandwidth','file_count','cpu','worker')][string]$type,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($type){
                $queryArguments += 'type=' + $type
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/sync/rules" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.rules,$ISIObject.resume
            }else{
                return $ISIObject.rules
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncRulesv3

function Get-isiSyncRulev1{
<#
.SYNOPSIS
    Get Sync Rule

.DESCRIPTION
    View a single SyncIQ performance rule.
 
.PARAMETER id
    Rule id

.PARAMETER name
    Rule name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/rules/$parameter1" -Cluster $Cluster
            return $ISIObject.rules
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncRulev1
Set-Alias Get-isiSyncRule -Value Get-isiSyncRulev1
Export-ModuleMember -Alias Get-isiSyncRule

function Get-isiSyncRulev3{
<#
.SYNOPSIS
    Get Sync Rule

.DESCRIPTION
    View a single SyncIQ performance rule.
 
.PARAMETER id
    Rule id

.PARAMETER name
    Rule name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/sync/rules/$parameter1" -Cluster $Cluster
            return $ISIObject.rules
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncRulev3

function Get-isiSyncSettingsv1{
<#
.SYNOPSIS
    Get Sync Settings

.DESCRIPTION
    Retrieve the global SyncIQ settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncSettingsv1
Set-Alias Get-isiSyncSettings -Value Get-isiSyncSettingsv1
Export-ModuleMember -Alias Get-isiSyncSettings

function Get-isiSyncSettingsv3{
<#
.SYNOPSIS
    Get Sync Settings

.DESCRIPTION
    Retrieve the global SyncIQ settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/sync/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncSettingsv3

function Get-isiSyncTargetPolicies{
<#
.SYNOPSIS
    Get Sync Target Policies

.DESCRIPTION
    List all SyncIQ target policies.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER target_path
    Filter the returned policies to include only those with this target path.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$target_path,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($target_path){
                $queryArguments += 'target_path=' + $target_path
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/target/policies" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.policies,$ISIObject.resume
            }else{
                return $ISIObject.policies
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetPolicies

function Get-isiSyncTargetPolicy{
<#
.SYNOPSIS
    Get Sync Target Policy

.DESCRIPTION
    View a single SyncIQ target policy.
 
.PARAMETER id
    Policy id

.PARAMETER name
    Policy name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/target/policies/$parameter1" -Cluster $Cluster
            return $ISIObject.policies
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetPolicy

function Get-isiSyncTargetReportsv1{
<#
.SYNOPSIS
    Get Sync Target Reports

.DESCRIPTION
    Get a list of SyncIQ target reports. By default 10 reports are returned per policy, unless otherwise specified by 'reports_per_policy'.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER newer_than
    Filter the returned reports to include only those whose jobs started more recently than the specified number of days ago.

.PARAMETER policy_name
    Filter the returned reports to include only those with this policy name.

.PARAMETER reports_per_policy
    If specified, only the N most recent reports will be returned per policy. If no other query args are present this argument defaults to 10.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Filter the returned reports to include only those whose jobs are in this state.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$newer_than,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$policy_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$reports_per_policy,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($newer_than){
                $queryArguments += 'newer_than=' + $newer_than
            }
            if ($policy_name){
                $queryArguments += 'policy_name=' + $policy_name
            }
            if ($reports_per_policy){
                $queryArguments += 'reports_per_policy=' + $reports_per_policy
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/target/reports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetReportsv1
Set-Alias Get-isiSyncTargetReports -Value Get-isiSyncTargetReportsv1
Export-ModuleMember -Alias Get-isiSyncTargetReports

function Get-isiSyncTargetReportsv4{
<#
.SYNOPSIS
    Get Sync Target Reports

.DESCRIPTION
    Get a list of SyncIQ target reports. By default 10 reports are returned per policy, unless otherwise specified by 'reports_per_policy'.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER newer_than
    Filter the returned reports to include only those whose jobs started more recently than the specified number of days ago.

.PARAMETER policy_name
    Filter the returned reports to include only those with this policy name.

.PARAMETER reports_per_policy
    If specified, only the N most recent reports will be returned per policy. If no other query args are present this argument defaults to 10.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Filter the returned reports to include only those whose jobs are in this state.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$newer_than,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$policy_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][int]$reports_per_policy,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=8)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($newer_than){
                $queryArguments += 'newer_than=' + $newer_than
            }
            if ($policy_name){
                $queryArguments += 'policy_name=' + $policy_name
            }
            if ($reports_per_policy){
                $queryArguments += 'reports_per_policy=' + $reports_per_policy
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/sync/target/reports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.reports,$ISIObject.resume
            }else{
                return $ISIObject.reports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetReportsv4

function Get-isiSyncTargetReportv1{
<#
.SYNOPSIS
    Get Sync Target Report

.DESCRIPTION
    View a single SyncIQ target report.
 
.PARAMETER id
    Report id

.PARAMETER name
    Report name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/target/reports/$parameter1" -Cluster $Cluster
            return $ISIObject.reports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetReportv1
Set-Alias Get-isiSyncTargetReport -Value Get-isiSyncTargetReportv1
Export-ModuleMember -Alias Get-isiSyncTargetReport

function Get-isiSyncTargetReportv4{
<#
.SYNOPSIS
    Get Sync Target Report

.DESCRIPTION
    View a single SyncIQ target report.
 
.PARAMETER id
    Rid id

.PARAMETER name
    Rid name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/sync/target/reports/$parameter1" -Cluster $Cluster
            return $ISIObject.reports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetReportv4

function Get-isiSyncTargetReportSubreportsv1{
<#
.SYNOPSIS
    Get Sync Target Report Subreports

.DESCRIPTION
    Get a list of SyncIQ target subreports for a report.
 
.PARAMETER report_id
    Report report_id

.PARAMETER report_name
    Report report_name

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER newer_than
    Filter the returned reports to include only those whose jobs started more recently than the specified number of days ago.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Filter the returned reports to include only those whose jobs are in this state.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$report_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$report_name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$newer_than,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('report_id')){
                $parameter1 = $report_id
            } else {
                $parameter1 = $report_name
            }
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($newer_than){
                $queryArguments += 'newer_than=' + $newer_than
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/sync/target/reports/$parameter1/subreports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.subreports,$ISIObject.resume
            }else{
                return $ISIObject.subreports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetReportSubreportsv1
Set-Alias Get-isiSyncTargetReportSubreports -Value Get-isiSyncTargetReportSubreportsv1
Export-ModuleMember -Alias Get-isiSyncTargetReportSubreports

function Get-isiSyncTargetReportSubreportsv4{
<#
.SYNOPSIS
    Get Sync Target Report Subreports

.DESCRIPTION
    Get a list of SyncIQ target subreports for a report.
 
.PARAMETER id
    Rid id

.PARAMETER name
    Rid name

.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER newer_than
    Filter the returned reports to include only those whose jobs started more recently than the specified number of days ago.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER state
    Filter the returned reports to include only those whose jobs are in this state.
    Valid inputs: scheduled,running,paused,finished,failed,canceled,needs_attention,skipped,pending,unknown

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][int]$newer_than,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][ValidateSet('scheduled','running','paused','finished','failed','canceled','needs_attention','skipped','pending','unknown')][string]$state,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=7)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($newer_than){
                $queryArguments += 'newer_than=' + $newer_than
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($state){
                $queryArguments += 'state=' + $state
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/4/sync/target/reports/$parameter1/subreports" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.subreports,$ISIObject.resume
            }else{
                return $ISIObject.subreports
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetReportSubreportsv4

function Get-isiSyncTargetReportSubreportv1{
<#
.SYNOPSIS
    Get Sync Target Report Subreport

.DESCRIPTION
    View a single SyncIQ target subreport.
 
.PARAMETER report_id
    Report report_id

.PARAMETER report_name
    Report report_name

.PARAMETER id
     id

.PARAMETER name
     name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$report_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$report_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('report_id')){
                $parameter1 = $report_id
            } else {
                $parameter1 = $report_name
            }
            if ($psBoundParameters.ContainsKey('id')){
                $parameter2 = $id
            } else {
                $parameter2 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/sync/target/reports/$parameter1/subreports/$parameter2" -Cluster $Cluster
            return $ISIObject.subreports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetReportSubreportv1
Set-Alias Get-isiSyncTargetReportSubreport -Value Get-isiSyncTargetReportSubreportv1
Export-ModuleMember -Alias Get-isiSyncTargetReportSubreport

function Get-isiSyncTargetReportSubreportv4{
<#
.SYNOPSIS
    Get Sync Target Report Subreport

.DESCRIPTION
    View a single SyncIQ target subreport.
 
.PARAMETER report_id
    Rid report_id

.PARAMETER report_name
    Rid report_name

.PARAMETER id
     id

.PARAMETER name
     name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$report_id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$report_name,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=1,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('report_id')){
                $parameter1 = $report_id
            } else {
                $parameter1 = $report_name
            }
            if ($psBoundParameters.ContainsKey('id')){
                $parameter2 = $id
            } else {
                $parameter2 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/sync/target/reports/$parameter1/subreports/$parameter2" -Cluster $Cluster
            return $ISIObject.subreports
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiSyncTargetReportSubreportv4

function Get-isiUpgradeClusterv3{
<#
.SYNOPSIS
    Get Upgrade Cluster

.DESCRIPTION
    Cluster wide upgrade status info.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/upgrade/cluster" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiUpgradeClusterv3

function Get-isiUpgradeClusterv4{
<#
.SYNOPSIS
    Get Upgrade Cluster

.DESCRIPTION
    Cluster wide upgrade status info.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/4/upgrade/cluster" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiUpgradeClusterv4

function Get-isiUpgradeClusterFirmwareProgress{
<#
.SYNOPSIS
    Get Upgrade Cluster Firmware Progress

.DESCRIPTION
    Cluster wide firmware upgrade status info.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/upgrade/cluster/firmware/progress" -Cluster $Cluster
            return $ISIObject.cluster_state
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiUpgradeClusterFirmwareProgress

function Get-isiUpgradeClusterFirmwareStatus{
<#
.SYNOPSIS
    Get Upgrade Cluster Firmware Status

.DESCRIPTION
    The firmware status for the cluster.
 
.PARAMETER devices
    Show devices. If false, this returns an empty list. Default is false.

.PARAMETER package
    Show package. If false, this returns an empty list.Default is false.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][bool]$devices,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$package,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($devices){
                $queryArguments += 'devices=' + $devices
            }
            if ($package){
                $queryArguments += 'package=' + $package
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/upgrade/cluster/firmware/status" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiUpgradeClusterFirmwareStatus

function Get-isiUpgradeClusterNodes{
<#
.SYNOPSIS
    Get Upgrade Cluster Nodes

.DESCRIPTION
    View information about nodes during an upgrade, rollback, or pre-upgrade assessment.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/upgrade/cluster/nodes" -Cluster $Cluster
            return $ISIObject.nodes
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiUpgradeClusterNodes

function Get-isiUpgradeClusterNode{
<#
.SYNOPSIS
    Get Upgrade Cluster Node

.DESCRIPTION
    The node details useful during an upgrade or assessment.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/upgrade/cluster/nodes/$parameter1" -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiUpgradeClusterNode

function Get-isiUpgradeClusterNodeFirmwareStatus{
<#
.SYNOPSIS
    Get Upgrade Cluster Node Firmware Status

.DESCRIPTION
    The firmware status for the node.
 
.PARAMETER id
    Lnn id

.PARAMETER name
    Lnn name

.PARAMETER devices
    Show devices. If false, this returns an empty list. Default is false.

.PARAMETER package
    Show package. If false, this returns an empty list.Default is false.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$devices,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$package,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($devices){
                $queryArguments += 'devices=' + $devices
            }
            if ($package){
                $queryArguments += 'package=' + $package
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/upgrade/cluster/nodes/$parameter1/firmware/status" + "$queryArguments") -Cluster $Cluster
            return $ISIObject
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiUpgradeClusterNodeFirmwareStatus

function Get-isiUpgradeClusterPatchPatches{
<#
.SYNOPSIS
    Get Upgrade Cluster Patch Patches

.DESCRIPTION
    List all patches.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER local
    Whether to view patches on the local node only.

.PARAMETER location
    Path location of patch file.

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][bool]$local,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$location,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=5)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=6)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($local){
                $queryArguments += 'local=' + $local
            }
            if ($location){
                $queryArguments += 'location=' + $location
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/upgrade/cluster/patch/patches" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.patches,$ISIObject.resume
            }else{
                return $ISIObject.patches
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiUpgradeClusterPatchPatches

function Get-isiUpgradeClusterPatchPatche{
<#
.SYNOPSIS
    Get Upgrade Cluster Patch Patche

.DESCRIPTION
    View a single patch.
 
.PARAMETER id
    Id id

.PARAMETER name
    Id name

.PARAMETER local
    Only view patch information on the local node.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][bool]$local,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $queryArguments = @()
            if ($local){
                $queryArguments += 'local=' + $local
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/3/upgrade/cluster/patch/patches/$parameter1" + "$queryArguments") -Cluster $Cluster
            return $ISIObject.patches
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiUpgradeClusterPatchPatche

function Get-isiWormDomains{
<#
.SYNOPSIS
    Get Worm Domains

.DESCRIPTION
    List all WORM domains.
 
.PARAMETER dir
    The direction of the sort.
    Valid inputs: ASC,DESC

.PARAMETER limit
    Return no more than this many results at once (see resume).

.PARAMETER resume
    Continue returning results from previous call using this token (token should come from the previous call, resume cannot be used with other options).

.PARAMETER sort
    The field that will be used for sorting.

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][ValidateSet('ASC','DESC')][string]$dir,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][int]$limit,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=2)][ValidateNotNullOrEmpty()][string]$resume,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=3)][ValidateNotNullOrEmpty()][string]$sort,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=4)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $queryArguments = @()
            if ($dir){
                $queryArguments += 'dir=' + $dir
            }
            if ($limit){
                $queryArguments += 'limit=' + $limit
            }
            if ($resume){
                $queryArguments += 'resume=' + $resume
            }
            if ($sort){
                $queryArguments += 'sort=' + $sort
            }
            if ($queryArguments) {
                $queryArguments = '?' + [String]::Join('&',$queryArguments)
            }
            $ISIObject = Send-isiAPI -Method GET -Resource ("/platform/1/worm/domains" + "$queryArguments") -Cluster $Cluster
            if ($ISIObject.PSObject.Properties['resume'] -and ($resume -or $limit)){
                return $ISIObject.domains,$ISIObject.resume
            }else{
                return $ISIObject.domains
            }
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiWormDomains

function Get-isiWormDomain{
<#
.SYNOPSIS
    Get Worm Domain

.DESCRIPTION
    View a single WORM domain.
 
.PARAMETER id
    Domain id

.PARAMETER name
    Domain name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/worm/domains/$parameter1" -Cluster $Cluster
            return $ISIObject.domains
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiWormDomain

function Get-isiWormSettings{
<#
.SYNOPSIS
    Get Worm Settings

.DESCRIPTION
    Get the global WORM settings.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/worm/settings" -Cluster $Cluster
            return $ISIObject.settings
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiWormSettings

function Get-isiZonesv1{
<#
.SYNOPSIS
    Get Zones

.DESCRIPTION
    List all access zones.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/zones" -Cluster $Cluster
            return $ISIObject.zones
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiZonesv1
Set-Alias Get-isiZones -Value Get-isiZonesv1
Export-ModuleMember -Alias Get-isiZones

function Get-isiZonesv3{
<#
.SYNOPSIS
    Get Zones

.DESCRIPTION
    List all access zones.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/zones" -Cluster $Cluster
            return $ISIObject.zones
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiZonesv3

function Get-isiZonesSummary{
<#
.SYNOPSIS
    Get Zones Summary

.DESCRIPTION
    Retrieve access zone summary information.
 
.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding()]
        param (
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=0)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/zones-summary" -Cluster $Cluster
            return $ISIObject.summary
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiZonesSummary

function Get-isiZoneSummary{
<#
.SYNOPSIS
    Get Zone Summary

.DESCRIPTION
    Retrieve non-privileged access zone information.
 
.PARAMETER id
    Zone id

.PARAMETER name
    Zone name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/zones-summary/$parameter1" -Cluster $Cluster
            return $ISIObject.summary
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiZoneSummary

function Get-isiZonev1{
<#
.SYNOPSIS
    Get Zone

.DESCRIPTION
    Retrieve the access zone information.
 
.PARAMETER id
    Zone id

.PARAMETER name
    Zone name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/1/zones/$parameter1" -Cluster $Cluster
            return $ISIObject.zones
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiZonev1
Set-Alias Get-isiZone -Value Get-isiZonev1
Export-ModuleMember -Alias Get-isiZone

function Get-isiZonev3{
<#
.SYNOPSIS
    Get Zone

.DESCRIPTION
    Retrieve the access zone information.
 
.PARAMETER id
    Zone id

.PARAMETER name
    Zone name

.PARAMETER Cluster
    Name of Isilon Cluster
 
.NOTES

#>

    [CmdletBinding(DefaultParametersetName='ByID')]
        param (
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByID')][ValidateNotNullOrEmpty()][string]$id,
        [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$True,Position=0,ParameterSetName='ByName')][ValidateNotNullOrEmpty()][string]$name,
        [Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$True,ValueFromPipeline=$False,Position=1)][ValidateNotNullOrEmpty()][string]$Cluster
        )
    Begin{
    }
    Process{
            if ($psBoundParameters.ContainsKey('id')){
                $parameter1 = $id
            } else {
                $parameter1 = $name
            }
            $ISIObject = Send-isiAPI -Method GET -Resource "/platform/3/zones/$parameter1" -Cluster $Cluster
            return $ISIObject.zones
    }
    End{
    }
}

Export-ModuleMember -Function Get-isiZonev3