Public/Set-RubrikModuleDefaultParameter.ps1

#requires -Version 3
function Set-RubrikModuleDefaultParameter
{
  <#
      .SYNOPSIS
      Creates or modifies a default value for a given parameter
 
      .DESCRIPTION
      The Set-RubrikModuleDefaultParameter will allow users to create default values for common parameters within the Rubrik SDK for PowerShell
      These values are stored within the users options file located in $home.
 
      .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-rubrikmoduledefaultparameter
 
      .EXAMPLE
      Set-RubrikModuleDefaultParameter -ParameterName PrimaryClusterId -ParameterValue local
      Sets the PrimaryClusterId value to always equate to local when not specified.
      If PrimaryClusterId is already defined to have a default value it will be updated, if not, it will be created.
 
      .EXAMPLE
      Set-RubrikModuleDefaultParameter -Sync
      Syncs changes to the user options file to the current PowerShell session
  #>


  [CmdletBinding(DefaultParameterSetName = 'NameValue')]
  [Alias("New-RubrikModuleDefaultParameter")]
  Param(
    # Parameter Name
    [Parameter(ValueFromPipelineByPropertyName = $true,Mandatory=$true,ParameterSetName="NameValue")]
    [string]$ParameterName,
    #Parameter Value
    [Parameter(Mandatory=$true,ParameterSetName="NameValue")]
    [string]$ParameterValue,
    # Sync any manual changes within user option file to current PowerShell session
    [Parameter(Mandatory=$true,ParameterSetName="Sync")]
    [switch]$Sync
  )
  Process {

    if ($Sync) {
      Update-RubrikModuleOption -Action "Sync"
    }
    else {
      $ModuleOptionSplat = @{
        Action = "AddUpdate"
        OptionType = "DefaultParameterValue"
        OptionName = $ParameterName
        OptionValue = $ParameterValue
      }
      Update-RubrikModuleOption @ModuleOptionSplat
    }

    return $global:rubrikOptions.DefaultParameterValue

  } # End of process
} # End of function