Public/Set-AtwsModuleConfiguration.ps1
<#
.COPYRIGHT Copyright (c) ECIT Solutions AS. All rights reserved. Licensed under the MIT license. See https://github.com/ecitsolutions/Autotask/blob/master/LICENSE.md for license information. #> Function Set-AtwsModuleConfiguration { <# .SYNOPSIS This function re-loads the module with the correct parameters for full functionality .DESCRIPTION This function is a wrapper that is included for backwards compatibility with previous module behavior. These parameters should be passed to Import-Module -Variable directly, but previously the module consisted of two, nested modules. Now there is a single module with all functionality. .INPUTS A PSCredential object. Required. A string used as ApiTrackingIdentifier. Required. .OUTPUTS Nothing. .EXAMPLE Set-AtwsModuleConfiguration -Credential $Credential -ApiTrackingIdentifier $string .NOTES NAME: Set-AtwsModuleConfiguration #> [cmdletbinding( SupportsShouldProcess = $true, ConfirmImpact = 'Medium' )] Param ( [ValidateNotNullOrEmpty()] [pscredential] $Credential, [string] $ApiTrackingIdentifier, [Alias('Picklist', 'UsePickListLabel')] [switch] $ConvertPicklistIdToLabel, [ValidateScript( { # It can be empty, but if it isn't it should be max 8 characters and only letters and numbers if ($_.length -eq 0 -or ($_ -match '[a-zA-Z0-9]' -and $_.length -gt 0 -and $_.length -le 8)) { $true } else { $false } })] [string] $Prefix, [switch] $RefreshCache, [switch] $NoDiskCache, [ValidateSet('Stop', 'Inquire', 'Continue', 'SilentlyContinue')] [string] $DebugPref, [ValidateSet('Stop', 'Inquire', 'Continue', 'SilentlyContinue')] [string] $VerbosePref ) begin { # Enable modern -Debug behavior if ($PSCmdlet.MyInvocation.BoundParameters['Debug'].IsPresent) { $DebugPreference = 'Continue' } else { # Respect configured preference $DebugPreference = $Script:Atws.Configuration.DebugPref } Write-Debug ('{0}: Begin of function' -F $MyInvocation.MyCommand.Name) if (!($PSCmdlet.MyInvocation.BoundParameters['Verbose'].IsPresent)) { # No local override of central preference. Load central preference $VerbosePreference = $Script:Atws.Configuration.VerbosePref } if (-not($Script:Atws.integrationsValue)) { Throw [ApplicationException] 'Not connected to Autotask WebAPI. Re-import module with valid credentials.' } } process { $reloadModule = $false switch ($PSCmdlet.MyInvocation.BoundParameters) { 'Credential' { $Script:Atws.Configuration.Username = $Credential.UserName $Script:Atws.Configuration.SecurePassword = $Credential.Password $Script:Atws.ClientCredentials.UserName.UserName = $Credential.UserName $Script:Atws.ClientCredentials.UserName.Password = $Credential.GetNetworkCredential().Password } 'ApiTrackingIdentifier' { $Script:Atws.integrationsValue.IntegrationCode = $ApiTrackingIdentifier } 'ConvertPicklistIdToLabel' { $Script:Atws.Configuration.ConvertPicklistIdToLabel = $ConvertPicklistIdToLabel.IsPresent } 'Prefix' { if ($Prefix -ne $Script:Atws.Configuration.Prefix) { Write-Warning "The module prefix cannot be changed while the module is loaded. A module reload is necessary." $Script:Atws.Configuration.Prefix = $Prefix $reloadModule = $true } } 'RefreshCache' { if ($RefreshCache.IsPresent) { Write-Warning "Setting this option while the module is loaded does not change anything. A module reload is necessary." $Script:Atws.Configuration.RefreshCache = $true $reloadModule = $true } else { $Script:Atws.Configuration.RefreshCache = $false } } 'UseDiskCache' { if ($UseDiskCache.IsPresent -and -not $Script:Atws.Configuration.UseDiskCache) { Write-Warning "Turning ON the disk cache. A module reload is necessary." $Script:Atws.Configuration.UseDiskCache = $true $reloadModule = $true } elseIf (-not $UseDiskCache.IsPresent -and $Script:Atws.Configuration.UseDiskCache) { Write-Warning "Turning OFF the disk cache. A module reload is necessary." $Script:Atws.Configuration.UseDiskCache = $true $reloadModule = $true } } 'DebugPref' { $DebugPreference = $DebugPref $Script:Atws.Configuration.DebugPref = $DebugPref } 'VerbosePref' { $VerbosePreference = $VerbosePref $Script:Atws.Configuration.VerbosePref = $VerbosePref } } if ($reloadModule) { $caption = $MyInvocation.MyCommand.Name $verboseDescription = '{0}: Reloading module {1} with changed options' -F $caption, $ModuleName $verboseWarning = '{0}: About to reload module {1} with changed options. Do you want to continue?' -F $caption, $ModuleName if ($PSCmdlet.ShouldProcess($verboseDescription, $verboseWarning, $caption)) { Connect-AtwsWebAPI -Configuration $Script:Atws.Configuration } } } end { Write-Debug ('{0}: End of function' -F $MyInvocation.MyCommand.Name) } } |