Toolkit/Public/Get-RscNasShare.ps1
#Requires -Version 3 function Get-RscNasShare { <# .SYNOPSIS Retrieves Nas Shares present in Rubrik Security Cloud. .DESCRIPTION Use this cmdlet to retrieve Network Attached Storage (NAS) shares connected to Rubrik Security Cloud (RSC). .LINK Schema reference: https://rubrikinc.github.io/rubrik-api-documentation/schema/reference .PARAMETER Id The Rubrik UUID of the Nas Share object. .PARAMETER NasSystem The object representing the NAS system. .PARAMETER AsQuery Instead of running the command, the query object is returned. .EXAMPLE Get details of the NAS share with specified ID. Get-RscNasShare -Id "d93ddffc-5a70-53f4-9cfa-be54ebeaa5cb" .EXAMPLE Get details of all the Nas shares for a given Nas System. Get-RscNasSystem "72859a28-6276-555a-9a66-d93fe99d2751" | Get-RscNasShare #> [CmdletBinding( DefaultParameterSetName = "Share" )] Param( # The Rubrik UUID of the Nas Share object. [Parameter( Mandatory = $true, Position = 0, ParameterSetName = "Share" )] [ValidateNotNullOrEmpty()] [String]$Id, # The object representing the NAS system. [Parameter( Mandatory = $true, ParameterSetName = "NasSystem", ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [RubrikSecurityCloud.Types.NasSystem]$NasSystem, # Should Cmdlet return the query object instead of running it [Parameter(Mandatory = $false)] [Switch]$AsQuery ) Process { Switch ($PSCmdlet.ParameterSetName) { "Share" { $query = New-RscQueryNas -Operation Share ` -RemoveField ObjectType ` -AddField ShareType, ` ExportPoint, ` HostAddress, ` HostIdForRestore, ` PrimaryFileset # Set query variables. $query.Var.Fid = $Id # Specify additional fields not in default field profile. $query.Field.NasSystem = New-Object -TypeName RubrikSecurityCloud.Types.NasSystem $query.Field.NasSystem.Id = "FETCH" $query.Field.NasSystem.Name = "FETCH" $query.Field.NasSystem.VendorType = "FETCH" $query.Field.NasSystem.OsVersion = "FETCH" $query.Field.NasSystem.IsSmbSupported = $true $query.Field.NasSystem.IsNfsSupported = $true $query.Field.NasSystem.ShareCount = -2147483648 $query.Field.NasSystem.VolumeCount = -2147483648 $query.Field.DescendantConnection = New-Object -TypeName ` RubrikSecurityCloud.Types.NasShareDescendantTypeConnection $query.Field.DescendantConnection.Nodes = @(New-Object -TypeName ` RubrikSecurityCloud.Types.NasFileset) $query.Field.DescendantConnection.Nodes[0].Id = "FETCH" $query.Field.DescendantConnection.Nodes[0].Name = "FETCH" $query.Field.DescendantConnection.Nodes[0].TemplateFid = "FETCH" $query.Field.DescendantConnection.Nodes[0].OnDemandSnapshotCount = -2147483648 $query.Field.DescendantConnection.Nodes[0].IsPassThrough = $true $query.Field.DescendantConnection.Nodes[0].IsRelic = $true $query.Field.DescendantConnection.Nodes[0].PathsIncluded = @() $query.Field.DescendantConnection.Nodes[0].PathsExcluded = @() $query.Field.DescendantConnection.Nodes[0].PathsExceptions = @() $query.Field.DescendantConnection.Nodes[0].CdmId = "FETCH" $query.Field.DescendantConnection.Nodes[0].SlaPauseStatus = $true $query.Field.DescendantConnection.Nodes[0].SymlinkResolutionEnabled = $true $query.Field.DescendantConnection.Nodes[0].ReplicatedObjectCount = -2147483648 } "NasSystem" { $query = New-RscQueryNas -Operation System ` -RemoveField ObjectType ` -AddField ShareCount, ` OsVersion, ` VendorType, ` VolumeCount # Set query variables. $query.Var.Fid = $NasSystem.Id # Specify additional fields not in default field profile. $query.Field.DescendantConnection = New-Object -TypeName ` RubrikSecurityCloud.Types.NasSystemDescendantTypeConnection $query.Field.DescendantConnection.Nodes = @(New-Object -TypeName ` RubrikSecurityCloud.Types.NasShare) $query.Field.DescendantConnection.Nodes[0].Id = "FETCH" $query.Field.DescendantConnection.Nodes[0].Name = "FETCH" $query.Field.DescendantConnection.Nodes[0].IsStale = $true $query.Field.DescendantConnection.Nodes[0].IsNasShareManuallyAdded = $true $query.Field.DescendantConnection.Nodes[0].ShareType = "FETCH" $query.Field.DescendantConnection.Nodes[0].ExportPoint = "FETCH" $query.Field.DescendantConnection.Nodes[0].IsChangelistEnabled = $true $query.Field.DescendantConnection.Nodes[0].IsHidden = $true $query.Field.DescendantConnection.Nodes[0].IsRelic = $true $query.Field.DescendantConnection.Nodes[0].CdmId = "FETCH" $query.Field.DescendantConnection.Nodes[0].HostAddress = "FETCH" $query.Field.DescendantConnection.Nodes[0].HostIdForRestore = "FETCH" $query.Field.DescendantConnection.Nodes[0].ConnectedThrough = [RubrikSecurityCloud.Types.ConnectedThroughEnumType]::SRC_UNSPECIFIED $query.Field.DescendantConnection.Nodes[0].SlaAssignment = [RubrikSecurityCloud.Types.SlaAssignmentTypeEnum]::Derived $query.Field.DescendantConnection.Nodes[0].SlaPauseStatus = $true $query.Field.DescendantConnection.Nodes[0].EffectiveSlaDomain = New-Object -TypeName RubrikSecurityCloud.Types.globalSlaReply $query.Field.DescendantConnection.Nodes[0].EffectiveSlaDomain.Id = "FETCH" $query.Field.DescendantConnection.Nodes[0].EffectiveSlaDomain.Name = "FETCH" $query.Field.DescendantConnection.Nodes[0].EffectiveSlaDomain.Version = "FETCH" $query.Field.DescendantConnection.Nodes[0].EffectiveSlaDomain.IsRetentionLockedSla = $true } } # Both NasShare and NasSystem types expose Cluster information. $query.Field.Cluster = New-Object -TypeName RubrikSecurityCloud.Types.Cluster $query.Field.Cluster.Id = "FETCH" $query.Field.Cluster.Name = "FETCH" $query.Field.Cluster.Version = "FETCH" if ($AsQuery) { return $query } $result = Invoke-Rsc -Query $query if ($PSCmdlet.ParameterSetName -eq "NasSystem") { $result = $result.DescendantConnection.Nodes } $result | Remove-NullProperties } } |