Module/Rule.VsphereAdvancedSettings/Convert/VsphereAdvancedSettingsRule.Convert.psm1
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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. using module .\..\..\Common\Common.psm1 using module .\..\VsphereAdvancedSettingsRule.psm1 $exclude = @($MyInvocation.MyCommand.Name,'Template.*.txt') $supportFileList = Get-ChildItem -Path $PSScriptRoot -Exclude $exclude foreach ($supportFile in $supportFileList) { Write-Verbose "Loading $($supportFile.FullName)" . $supportFile.FullName } # Header <# .SYNOPSIS Convert the contents of an xccdf check-content element into a Vsphere object .DESCRIPTION The VsphereAdvancedSettingsRule class is used to extract the Vsphere settings from the check-content of the xccdf. Once a STIG rule is identified a Vsphere AdvancedSettings rule, it is passed to the VsphereRule class for parsing and validation. #> class VsphereAdvancedSettingsRuleConvert : VsphereAdvancedSettingsRule { <# .SYNOPSIS Empty constructor for SplitFactory #> VsphereAdvancedSettingsRuleConvert () { } <# .SYNOPSIS Converts an xccdf stig rule element into a Vsphere Rule .PARAMETER XccdfRule The STIG rule to convert #> VsphereAdvancedSettingsRuleConvert ([xml.xmlelement] $XccdfRule) : base ($XccdfRule, $true) { $fixText = [VsphereAdvancedSettingsRule]::GetFixText($XccdfRule) $this.SetVsphereAdvancedSettings($fixText) if ($this.IsOrganizationalSetting()) { $this.SetOrganizationValueTestString() } $this.SetDscResource() } # Methods <# .SYNOPSIS Extracts the advanced settings key value pair from the check-content and sets the Advanced Setting .DESCRIPTION Gets the key value pair from the xccdf content and combines the two as a string. If the value that is returned is not valid, the parser status is set to fail. #> [void] SetVsphereAdvancedSettings ([string[]] $fixText) { $vsphereAdvancedSettings = Get-VsphereAdvancedSettings -FixText $fixText -CheckContent $this.RawString $this.set_AdvancedSettings($vsphereAdvancedSettings) } <# .SYNOPSIS Tests if and organizational value is required .DESCRIPTION Tests if and organizational value is required #> [bool] IsOrganizationalSetting () { if ($this.id -match 'V-93955|V-94025|V-94037|V-207605|V-207640|V-207646') { return $true } else { return $false } } <# .SYNOPSIS Set the organizational value .DESCRIPTION Extracts the organizational value from the key and then sets the value #> [void] SetOrganizationValueTestString () { $OrganizationValueTestString = Get-OrganizationValueTestString -Id $this.Id if (-not $this.SetStatus($OrganizationValueTestString)) { $this.set_OrganizationValueTestString($OrganizationValueTestString) $this.set_OrganizationValueRequired($true) } } hidden [void] SetDscResource () { if ($null -eq $this.DuplicateOf) { $this.DscResource = 'VMHostAdvancedSettings' } else { $this.DscResource = 'None' } } static [bool] Match ([string] $CheckContent) { if ($CheckContent -match 'Get-AdvancedSetting') { return $true } return $false } } |