Public/New-RubrikFileset.ps1
#requires -Version 3 function New-RubrikFileset { <# .SYNOPSIS Creates a fileset by assigning a fileset template to a host or NAS share .DESCRIPTION New-RubrikFileset takes a Fileset Template, along with a host id or NAS Share and creates a fileset by assigning the template to the host or NAS share. This cmdlet simply assigns the template to the host but does not protect it. This cmdlet is commonly followed up with Protect-RubrikFileset which will assign an SLA domain to the fileset and perform subsequent backups. .NOTES Written by Mike Preston for community usage Twitter: @mwpreston GitHub: mwpreston .LINK https://rubrik.gitbook.io/rubrik-sdk-for-powershell/command-documentation/reference/new-rubrikfileset .EXAMPLE New-RubrikFileset -TemplateID 'FilesetTemplate:::1111-1111-1111-1111' -HostID 'Host::::2222-2222-2222-2222' Creates a new fileset on the specified host, using the selected template. .EXAMPLE New-RubrikFileset -TemplateID (Get-RubrikFilesetTemplate -Name 'FOO').id -ShareID (Get-RubrikNASShare -name 'BAR').id Creates a new fileset for the BAR NAS, using the FOO template. .EXAMPLE New-RubrikFileset -TemplateID (Get-RubrikFilesetTemplate -Name 'FOO').id -ShareID (Get-RubrikNASShare -name 'BAR').id -DirectArchive Creates a new fileset for the BAR NAS, using the FOO template. Enables the NAS Direct Archive functionality on the share. #> [CmdletBinding()] Param( #Fileset Template ID to use for the new fileset [Parameter(ParameterSetName='Host',Mandatory=$true)] [Parameter(ParameterSetName='NAS',Mandatory=$true)] [String]$TemplateID, # HostID - Used for Windows or Linux Filesets [Parameter(ParameterSetName='Host',Mandatory=$true)] [String]$HostID, # ShareID - used for NAS shares [Parameter(ParameterSetName='NAS',Mandatory=$true)] [String]$ShareID, [Parameter(ParameterSetName='NAS')] # DirectArchive - used to specify if data should be directly sent to archive (bypassing Rubrik Cluster) [Alias('isPassThrough')] [Switch]$DirectArchive , # Rubrik server IP or FQDN [String]$Server = $global:RubrikConnection.server, # API version [String]$api = $global:RubrikConnection.api ) Begin { # The Begin section is used to perform one-time loads of data necessary to carry out the function's purpose # If a command needs to be run with each iteration or pipeline input, place it in the Process section # Check to ensure that a session to the Rubrik cluster exists and load the needed header data for authentication Test-RubrikConnection # API data references the name of the function # For convenience, that name is saved here to $function $function = $MyInvocation.MyCommand.Name # Retrieve all of the URI, method, body, query, result, filter, and success details for the API endpoint Write-Verbose -Message "Gather API Data for $function" $resources = Get-RubrikAPIData -endpoint $function Write-Verbose -Message "Load API data for $($resources.Function)" Write-Verbose -Message "Description: $($resources.Description)" } Process { if ($DirectArchive) { $uri = New-URIString -server $server -endpoint ('/api/internal/fileset/bulk') $body = @{ templateId = $TemplateId shareId = $ShareId isPassthrough = $true } $body = ConvertTo-Json @($body) Write-Verbose "Body is: $body" $result = Submit-Request -uri $uri -header $Header -method $($resources.Method) -body $body $result = Test-ReturnFormat -api $api -result $result -location $resources.Result $result = Test-FilterObject -filter ($resources.Filter) -result $result } else { $uri = New-URIString -server $Server -endpoint ($resources.URI) -id $id $uri = Test-QueryParam -querykeys ($resources.Query.Keys) -parameters ((Get-Command $function).Parameters.Values) -uri $uri $body = New-BodyString -bodykeys ($resources.Body.Keys) -parameters ((Get-Command $function).Parameters.Values) $result = Submit-Request -uri $uri -header $Header -method $($resources.Method) -body $body $result = Test-ReturnFormat -api $api -result $result -location $resources.Result $result = Test-FilterObject -filter ($resources.Filter) -result $result } return $result } # End of process } # End of function |