Public/Set-RubrikModuleOption.ps1
#requires -Version 3 function Set-RubrikModuleOption { <# .SYNOPSIS Sets an option value within the users option file .DESCRIPTION The Set-RubrikModuleOption will set an option value within the users option value and immediately apply the change. .NOTES Written by Mike Preston for community usage Twitter: @mwpreston GitHub: mwpreston .LINK https://rubrik.gitbook.io/rubrik-sdk-for-powershell/command-documentation/reference/set-rubrikmoduleoption .EXAMPLE Set-RubrikModuleOption -OptionName ApplyCustomViewDefinitions -OptionValue $false This will disable the application of custom view definitions to returned objects, instead displaying a complete list of properties. .EXAMPLE Get-Credential | Export-CliXml -Path c:\creds\creds.xml Set-RubrikModuleOption -OptionName CredentialPath -OptionValue "c:\creds\creds.xml" This will create a default credential file to be used with Connect-Rubrik only. Encrypted credentials will be stored on the local filesystem and automatically sent to Connect-Rubrik by applying them to the global $PSDefaultParameterValues variable .EXAMPLE Set-RubrikModuleOption -OptionName CredentialPath -OptionValue $null This will remove the application of sending default credentials to Connect-Rubrik. Note: It will not remove any generated credential files. .EXAMPLE Set-RubrikModuleOption -Default This will reset all Rubrik module options to their default values .EXAMPLE Set-RubrikModuleOption -Sync This will sync any changes made to the user option file manually to the current PowerShell session. .EXAMPLE Set-RubrikModuleOption -OptionName DefaultWebRequestTimeOut -OptionValue 30 Changes the default timeout for request to the Rubrik cluster to 30 seconds #> [CmdletBinding(DefaultParameterSetName = 'NameValue')] Param( # Option name to change [Parameter( ValueFromPipelineByPropertyName = $true, ParameterSetName='NameValue', Position=0, Mandatory=$true)] [ValidateSet('ApplyCustomViewDefinitions', 'CredentialPath', 'DefaultWebRequestTimeOut')] [string]$OptionName, # Desired value for option [Parameter( ParameterSetName='NameValue', Position=1, Mandatory=$true)] [AllowEmptyString()] [string]$OptionValue, # Reset all Module Options to default values [Parameter( ParameterSetName='Defaults', Mandatory=$true)] [switch]$Default, # Apply manual changes from JSON file to session [Parameter( ParameterSetName='Sync', Mandatory=$true )] [Switch]$Sync ) Process { # if setting all options to default if ($Default) { Update-RubrikModuleOption -Action "Default" -OptionType "ModuleOption" } elseif ($Sync) { Update-RubrikModuleOption -Action "Sync" } else { # This means we are adding or updating (no remove on ModuleOptions) # First, make sure the option exists if ($Global:rubrikOptions.ModuleOption.PSObject.Properties.Name -contains $OptionName) { $ModuleOptionSplat = @{ Action = "AddUpdate" OptionType = "ModuleOption" OptionName = $OptionName OptionValue = $OptionValue } Write-Verbose ($ModuleOptionSplat|out-string) Update-RubrikModuleOption @ModuleOptionSplat } else { # Option doesn't exist throw "$OptionName doesn't exist in options file." } } return $global:rubrikOptions.ModuleOption } # End of process } # End of function |