Scripts/Utility/set-cohesitycmdletconfig.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# the configuration structure for cohesity cmdlet class CohesityConfig { [int]$LogSeverity = 0 $LogRequestedPayload = $false $LogResponseData = $false $LogHeaderDetail = $false $RefreshToken = $false # following values are read only, not for configuration purpose [string]$ConfigFolder = "cohesity" [string]$ConfigFileName = "config.json" [string]$LogFileName = "cmdlet.log" } $Global:CohesityCmdletConfig = $null function Set-CohesityCmdletConfig { [CmdletBinding(DefaultParameterSetName = 'LogSeverity', SupportsShouldProcess = $True, ConfirmImpact = "High")] param( [Parameter(Mandatory = $false, ParameterSetName = 'LogSeverity')] [ValidateSet(0, 1, 2, 3)] $LogSeverity = $null, [Parameter(Mandatory = $false, ParameterSetName = 'LogRequestedPayload')] [ValidateSet($true, $false)] # not recommended, the request payload may contain passwords or key information $LogRequestedPayload = $false, [Parameter(Mandatory = $false, ParameterSetName = 'LogResponseData')] [ValidateSet($true, $false)] $LogResponseData = $false, [Parameter(Mandatory = $false, ParameterSetName = 'LogHeaderDetail')] [ValidateSet($true, $false)] $LogHeaderDetail = $false, [Parameter(Mandatory = $false, ParameterSetName = 'RefreshToken')] [ValidateSet($true, $false)] $RefreshToken = $false ) Begin { [CohesityConfig]$configObject = [CohesityConfig]::New() $configFileName = $configObject.ConfigFileName $cohesityFolder = $configObject.ConfigFolder # check if the folder exists if ($false -eq [System.IO.Directory]::Exists("$HOME/" + $cohesityFolder)) { New-Item -Path "$HOME/" -Name $cohesityFolder -ItemType "directory" | Out-Null } $cmdletConfigPath = "$HOME/" + $cohesityFolder + "/" + $configFileName if ($false -eq [System.IO.File]::Exists($cmdletConfigPath)) { $configObject | ConvertTo-Json -depth 100 | Out-File $cmdletConfigPath } } Process { if ($PSCmdlet.ShouldProcess("Cmdlet configuration")) { $config = Get-Content $cmdletConfigPath | ConvertFrom-Json switch ($PsCmdlet.ParameterSetName) { 'LogSeverity' { $config.LogSeverity = $LogSeverity } 'LogRequestedPayload' { $config.LogRequestedPayload = $LogRequestedPayload } 'LogResponseData' { $config.LogResponseData = $LogResponseData } 'LogHeaderDetail' { $config.LogHeaderDetail = $LogHeaderDetail } 'RefreshToken' { $config.RefreshToken = $RefreshToken } } $config | ConvertTo-Json -depth 100 | Out-File $cmdletConfigPath $Global:CohesityCmdletConfig | Out-Null $Global:CohesityCmdletConfig = $config } } End { } } |