From 844767ba9016fa0b2b022f9001bdcd9faffed340 Mon Sep 17 00:00:00 2001 From: Easyreturns <20781445+jeffotterpohl@users.noreply.github.com> Date: Thu, 5 Aug 2021 07:57:26 -0500 Subject: [PATCH 01/16] finished get\test --- .../DSC_CMSiteConfiguration.psm1 | 598 ++++++++++++++ .../DSC_CMSiteConfiguration.schema.mof | 23 + .../DSC_CMSiteConfiguration.strings.psd1 | 10 + tests/Unit/CMSiteConfiguration.tests.ps1 | 760 ++++++++++++++++++ 4 files changed, 1391 insertions(+) create mode 100644 source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 create mode 100644 source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof create mode 100644 source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 create mode 100644 tests/Unit/CMSiteConfiguration.tests.ps1 diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 new file mode 100644 index 00000000..6b043b79 --- /dev/null +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -0,0 +1,598 @@ +$script:dscResourceCommonPath = Join-Path -Path $PSScriptRoot -ChildPath '..\..\Modules\DscResource.Common' +$script:configMgrResourcehelper = Join-Path -Path $PSScriptRoot -ChildPath '..\..\Modules\ConfigMgrCBDsc.ResourceHelper' + +Import-Module -Name $script:dscResourceCommonPath +Import-Module -Name $script:configMgrResourcehelper + +$script:localizedData = Get-LocalizedData -DefaultUICulture 'en-US' + +<# + .SYNOPSIS + This will return a hashtable of results. + + .PARAMETER SiteCode + Specifies the site code for Configuration Manager site. +#> +function Get-TargetResource +{ + [CmdletBinding()] + [OutputType([System.Collections.Hashtable])] + param + ( + [Parameter(Mandatory = $true)] + [String] + $SiteCode + ) + + Write-Verbose -Message $script:localizedData.RetrieveSettingValue + Import-ConfigMgrPowerShellModule -SiteCode $SiteCode + Set-Location -Path "$($SiteCode):\" + + $senderProps = (Get-CMSiteComponent -ComponentName 'SMS_LAN_Sender' -SiteCode $SiteCode).Props + foreach ($item in $senderProps) + { + switch ($item.PropertyName) + { + 'Concurrent Sending Limit' { + $allSites = $item.Value1 + $perSite = $item.Value2 + } + 'Number of Retries' { $retry = $item.Value } + 'Retry Delay' { $retryDelay = $item.Value } + } + } + + $hiercySettings = (Get-CMSiteDefinition -SiteCode $SiteCode).Props + + $comments = ($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Comments'}).Value1 + + $defaultSize = ($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Device Collection Threshold'}).Value1 + $maxSize = ($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Device Collection Threshold'}).Value2 + + if (($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Device Collection Threshold'}).Value -eq 0) + { + $siteServerDeployment = 'Block' + } + else + { + $siteServerDeployment = 'Warn' + } + + #[boolean]$nonCrit = ($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Enable Console Notifications'}).Value + + # Alerts + $dbAlert = (Get-CMAlert | Where-Object -FilterScript {$_.Name -eq '$DatabaseFreeSpaceWarningName'}).PropertyList.ParameterValues[-1] + if ($dbAlert -ne '>') + { + $dbAlertXml = [xml]$dbAlert + $freeSpaceAlert = $true + $warningGB = $dbAlertXml.Parameters.Parameter[2].'#text' + $critGB = $dbAlertXml.Parameters.Parameter[3].'#text' + } + else + { + $freeSpaceAlert = $false + } + + # Communication Security + $props = (Get-CMSiteComponent -ComponentName 'SMS_Site_Component_Manager' -SiteCode $SiteCode).Props + $clientComms = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'IISSSLState'}).Value + + if ($clientComms -eq 31) + { + $clientCommunication = 'HttpsOnly' + $useCrl = $false + $pkiClient = $true + $sccmCert = $false + } + elseif ($clientComms -eq 63) + { + $clientCommunication = 'HttpsOnly' + $useCrl = $true + $pkiClient = $true + $sccmCert = $false + } + elseif ($clientComms -eq 192) + { + $clientCommunication = 'HttpsOrHttp' + $useCrl = $false + $pkiClient = $false + $sccmCert = $false + } + elseif ($clientComms -eq 224) + { + $clientCommunication = 'HttpsOrHttp' + $useCrl = $true + $pkiClient = $false + $sccmCert = $false + } + elseif ($clientComms -eq 448) + { + $clientCommunication = 'HttpsOrHttp' + $useCrl = $false + $pkiClient = $true + $sccmCert = $false + } + elseif ($clientComms -eq 480) + { + $clientCommunication = 'HttpsOrHttp' + $useCrl = $true + $pkiClient = $true + $sccmCert = $false + } + elseif ($clientComms -eq 1216) + { + $clientCommunication = 'HttpsOrHttp' + $useCrl = $false + $pkiClient = $false + $sccmCert = $true + } + elseif ($clientComms -eq 1248) + { + $clientCommunication = 'HttpsOrHttp' + $useCrl = $true + $pkiClient = $false + $sccmCert = $true + } + elseif ($clientComms -eq 1504) + { + $clientCommunication = 'HttpsOrHttp' + $useCrl = $true + $pkiClient = $true + $sccmCert = $true + } + + [boolean]$hash = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Enhanced Hash Algorithm'}).Value + [boolean]$signing = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Message Signing'}).Value + + $siteSecurity = (Get-CMSiteComponent -ComponentName SMS_POLICY_PROVIDER).Props + + [boolean]$threeDes = ($siteSecurity | Where-Object -FilterScript {$_.PropertyName -eq 'Use Encryption'}).Value + + return @{ + SiteCode = $SiteCode + Comment = $comments + MaximumConcurrentSendingForAllSite = $allSites + MaximumConcurrentSendingForPerSite = $perSite + RetryNumberForConcurrentSending = $retry + ConcurrentSendingDelayBeforeRetryingMins = $retryDelay + ThresholdOfSelectCollectionByDefault = $defaultSize + ThresholdOfSelectCollectionMax = $maxSize + SiteSystemCollectionBehavior = $siteServerDeployment + EnableLowFreeSpaceAlert = $freeSpaceAlert + FreeSpaceThresholdWarningGB = $warningGB + FreeSpaceThresholdCriticalGB = $critGB + ClientComputerCommunicationType = $clientCommunication + ClientCheckCertificateRevocationListForSiteSystem = $useCrl + UsePkiClientCertificate = $pkiClient + UseSmsGeneratedCert = $sccmCert + RequireSha256 = $hash + RequireSigning = $signing + UseEncryption = $threeDes + } +} + +<# + .SYNOPSIS + This will set the desired state. + + .PARAMETER SiteCode + Specifies a site code for the Configuration Manager site. + + .Parameter Comment + Specifies the site comments. + + .PARAMETER ClientComputerCommunicationType + Specifies the communication method for the site systems that use IIS. To use HTTPS, + the servers need a valid PKI web server certificate for server authentication. + + .PARAMETER ClientCheckCertificateRevocationListForSiteSystem + Indicates whether clients check the Certificate Revocation List (CRL) for site systems. + + .PARAMETER UsePkiClientCertificate + Indicates whether to use a PKI client certificate for client authentication when available. + + .PARAMETER UseSmsGeneratedCert + Use this parameter to enable or disable the site property to Use Configuration Manager-generated + certificates for HTTP site systems. + + .PARAMETER RequireSigning + This option requires that clients sign data when they send to management points. + + .PARAMETER RequireSha256 + Specifies if the clients sign data and communicate with site systems by using HTTP, this option requires the + clients to use SHA-256 to sign the data. This option applies to clients that don't use PKI certificates. + + .PARAMETER UseEncryption + Specifies to use 3DES to encrypt the client inventory data and state messages that are sent to the + management point. + + .PARAMETER MaximumConcurrentSendingForAllSite + Specifies the maximum number of simultaneous communications to all sites. + + .PARAMETER MaximumConcurrentSendingForPerSite + Specifies the maximum number of simultaneous communications to any single site. + + .PARAMETER RetryNumberForConcurrentSending + Specifies the number of times to retry a failed communication. + + .PARAMETER ConcurrentSendingDelayBeforeRetryingMins + Specifies the number of minutes to delay before it retries. + + .PARAMETER EnableLowFreeSpaceAlert + Specifies if an alert is created when the free disk space on the site database server is low. + + .PARAMETER FreeSpaceThresholdWarningGB + Specifies disk space warning alert when the free disk space on the + site database server falls below the specified threshold. + + .PARAMETER FreeSpaceThresholdCriticalGB + Specifies disk space critical alert when the free disk space on the + site database server falls below the specified threshold. + + .PARAMETER ThresholdOfSelectCollectionByDefault + Specifies select collection window hides collections with membership that + exceeds this value. + + .PARAMETER ThresholdOfSelectCollectionMax + Specifies select collection window always hides collections that have more members + than this maximum value. + + .PARAMETER SiteSystemCollectionBehavior + Specify the behavior to take when the selected collection includes computers that + host site systems roles. +#> +function Set-TargetResource +{ + [CmdletBinding()] + param + ( + [Parameter(Mandatory = $true)] + [String] + $SiteCode, + + [Parameter()] + [String] + $Comment, + + [Parameter()] + [ValidateSet('HttpsOnly','HttpsOrHttp')] + [String] + $ClientComputerCommunicationType, + + [Parameter()] + [Boolean] + $ClientCheckCertificateRevocationListForSiteSystem, + + [Parameter()] + [Boolean] + $UsePkiClientCertificate, + + [Parameter()] + [Boolean] + $UseSmsGeneratedCert, + + [Parameter()] + [Boolean] + $RequireSigning, + + [Parameter()] + [Boolean] + $RequireSha256, + + [Parameter()] + [Boolean] + $UseEncryption, + + [Parameter()] + [ValidateRange(1,999)] + [UInt32] + $MaximumConcurrentSendingForAllSite, + + [Parameter()] + [ValidateRange(1,999)] + [UInt32] + $MaximumConcurrentSendingForPerSite, + + [Parameter()] + [ValidateRange(1,99)] + [UInt32] + $RetryNumberForConcurrentSending, + + [Parameter()] + [ValidateRange(1,99)] + [UInt32] + $ConcurrentSendingDelayBeforeRetryingMins, + + [Parameter()] + [Boolean] + $EnableLowFreeSpaceAlert, + + [Parameter()] + [ValidateRange(1,32767)] + [UInt32] + $FreeSpaceThresholdWarningGB, + + [Parameter()] + [ValidateRange(1,32767)] + [UInt32] + $FreeSpaceThresholdCriticalGB, + + [Parameter()] + [ValidateRange(0,1000000)] + [UInt32] + $ThresholdOfSelectCollectionByDefault, + + [Parameter()] + [ValidateRange(0,1000000)] + [UInt32] + $ThresholdOfSelectCollectionMax, + + [Parameter()] + [ValidateSet('Warn','Block')] + [String] + $SiteSystemCollectionBehavior + ) + + Import-ConfigMgrPowerShellModule -SiteCode $SiteCode + Set-Location -Path "$($SiteCode):\" + $state = Get-TargetResource -SiteCode $SiteCode -SiteServerName $SiteServerName + + try + { + if ($Ensure -eq 'Present') + { + if ($state.Ensure -eq 'Absent') + { + Write-Verbose -Message ($script:localizedData.AddScpRole -f $SiteServerName) + Add-CMServiceConnectionPoint -SiteSystemServerName $SiteServerName -SiteCode $SiteCode -Mode $Mode + } + elseif ($state.Mode -ne $Mode) + { + Write-Verbose -Message ($script:localizedData.SettingValue -f $Mode) + Set-CMServiceConnectionPoint -SiteSystemServerName $SiteServerName -SiteCode $SiteCode -Mode $Mode + } + } + elseif ($state.Ensure -eq 'Present') + { + Write-Verbose -Message ($script:localizedData.RemoveScpRole -f $SiteServerName) + Remove-CMServiceConnectionPoint -SiteSystemServerName $SiteServerName -SiteCode $SiteCode + } + } + catch + { + throw $_ + } + finally + { + Set-Location -Path "$env:temp" + } +} + +<# + .SYNOPSIS + This will test the desired state. + + .PARAMETER SiteCode + Specifies a site code for the Configuration Manager site. + + .Parameter Comment + Specifies the site comments. + + .PARAMETER ClientComputerCommunicationType + Specifies the communication method for the site systems that use IIS. To use HTTPS, + the servers need a valid PKI web server certificate for server authentication. + + .PARAMETER ClientCheckCertificateRevocationListForSiteSystem + Indicates whether clients check the Certificate Revocation List (CRL) for site systems. + + .PARAMETER UsePkiClientCertificate + Indicates whether to use a PKI client certificate for client authentication when available. + + .PARAMETER UseSmsGeneratedCert + Use this parameter to enable or disable the site property to Use Configuration Manager-generated + certificates for HTTP site systems. + + .PARAMETER RequireSigning + This option requires that clients sign data when they send to management points. + + .PARAMETER RequireSha256 + Specifies if the clients sign data and communicate with site systems by using HTTP, this option requires the + clients to use SHA-256 to sign the data. This option applies to clients that don't use PKI certificates. + + .PARAMETER UseEncryption + Specifies to use 3DES to encrypt the client inventory data and state messages that are sent to the + management point. + + .PARAMETER MaximumConcurrentSendingForAllSite + Specifies the maximum number of simultaneous communications to all sites. + + .PARAMETER MaximumConcurrentSendingForPerSite + Specifies the maximum number of simultaneous communications to any single site. + + .PARAMETER RetryNumberForConcurrentSending + Specifies the number of times to retry a failed communication. + + .PARAMETER ConcurrentSendingDelayBeforeRetryingMins + Specifies the number of minutes to delay before it retries. + + .PARAMETER EnableLowFreeSpaceAlert + Specifies if an alert is created when the free disk space on the site database server is low. + + .PARAMETER FreeSpaceThresholdWarningGB + Specifies disk space warning alert when the free disk space on the + site database server falls below the specified threshold. + + .PARAMETER FreeSpaceThresholdCriticalGB + Specifies disk space critical alert when the free disk space on the + site database server falls below the specified threshold. + + .PARAMETER ThresholdOfSelectCollectionByDefault + Specifies select collection window hides collections with membership that + exceeds this value. + + .PARAMETER ThresholdOfSelectCollectionMax + Specifies select collection window always hides collections that have more members + than this maximum value. + + .PARAMETER SiteSystemCollectionBehavior + Specify the behavior to take when the selected collection includes computers that + host site systems roles. +#> +function Test-TargetResource +{ + [CmdletBinding()] + [OutputType([System.Boolean])] + param + ( + [Parameter(Mandatory = $true)] + [String] + $SiteCode, + + [Parameter()] + [String] + $Comment, + + [Parameter()] + [ValidateSet('HttpsOnly','HttpsOrHttp')] + [String] + $ClientComputerCommunicationType, + + [Parameter()] + [Boolean] + $ClientCheckCertificateRevocationListForSiteSystem, + + [Parameter()] + [Boolean] + $UsePkiClientCertificate, + + [Parameter()] + [Boolean] + $UseSmsGeneratedCert, + + [Parameter()] + [Boolean] + $RequireSigning, + + [Parameter()] + [Boolean] + $RequireSha256, + + [Parameter()] + [Boolean] + $UseEncryption, + + [Parameter()] + [ValidateRange(1,999)] + [UInt32] + $MaximumConcurrentSendingForAllSite, + + [Parameter()] + [ValidateRange(1,999)] + [UInt32] + $MaximumConcurrentSendingForPerSite, + + [Parameter()] + [ValidateRange(1,99)] + [UInt32] + $RetryNumberForConcurrentSending, + + [Parameter()] + [ValidateRange(1,99)] + [UInt32] + $ConcurrentSendingDelayBeforeRetryingMins, + + [Parameter()] + [Boolean] + $EnableLowFreeSpaceAlert, + + [Parameter()] + [ValidateRange(1,32767)] + [UInt32] + $FreeSpaceThresholdWarningGB, + + [Parameter()] + [ValidateRange(1,32767)] + [UInt32] + $FreeSpaceThresholdCriticalGB, + + [Parameter()] + [ValidateRange(0,1000000)] + [UInt32] + $ThresholdOfSelectCollectionByDefault, + + [Parameter()] + [ValidateRange(0,1000000)] + [UInt32] + $ThresholdOfSelectCollectionMax, + + [Parameter()] + [ValidateSet('Warn','Block')] + [String] + $SiteSystemCollectionBehavior + ) + + Import-ConfigMgrPowerShellModule -SiteCode $SiteCode + Set-Location -Path "$($SiteCode):\" + $state = Get-TargetResource -SiteCode $SiteCode + $result = $true + $badInput = $false + + $defaultValues = @( + 'Comment','ClientComputerCommunicationType','ClientCheckCertificateRevocationListForSiteSystem', + 'UsePkiClientCertificate','RequireSigning','UseEncryption','MaximumConcurrentSendingForAllSite', + 'MaximumConcurrentSendingForPerSite','RetryNumberForConcurrentSending', + 'ConcurrentSendingDelayBeforeRetryingMins','EnableLowFreeSpaceAlert', + 'ThresholdOfSelectCollectionByDefault','ThresholdOfSelectCollectionMax','SiteSystemCollectionBehavior' + ) + + if ($ClientComputerCommunicationType -eq 'HttpsOnly' -and $PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) + { + Write-Warning -Message 'When specifying HttpsOnly, UseSMSGeneratedCert can not be specified, ignoring setting.' + } + else + { + $defaultValues += @('UseSmsGeneratedCert') + } + + if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -and $EnableLowFreeSpaceAlert -eq $false) + { + if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + { + Write-Warning 'EnableLowFreeSpaceAlert is disabled and FreeSpaceThreshold Warning\Critical GB was specified, ignoring setting' + } + else + { + if ($FreeSpaceThresholdCriticalGB -ge $FreeSpaceThresholdWarningGB) + { + Write-Warning 'FreeSpaceThresholdCritical is greater than or equal to FreeSpaceThresholdWarning. Warning should be greater than Critical' + $badInput = $true + } + + $defaultValues += @('FreeSpaceThresholdCriticalGB','FreeSpaceThresholdWarningGB') + } + } + + $testParams = @{ + CurrentValues = $state + DesiredValues = $PSBoundParameters + ValuesToCheck = $defaultValues + } + + $testResult = Test-DscParameterState @testParams -TurnOffTypeChecking -Verbose + + if ($testResult -eq $true -and $badInput -eq $false) + { + $result = $true + } + else + { + $result = $false + } + + Write-Verbose -Message ($script:localizedData.TestState -f $result) + Set-Location -Path "$env:temp" + return $result +} + +Export-ModuleMember -Function *-TargetResource diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof new file mode 100644 index 00000000..1dba33bb --- /dev/null +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof @@ -0,0 +1,23 @@ +[ClassVersion("1.0.0"), FriendlyName("CMSiteConfiguration")] +class DSC_CMSiteConfiguration: OMI_BaseResource +{ + [Key, Description("Specifies the SiteCode for the Configuration Manager site.")] String SiteCode; + [Write, Description("Specifies the site comment.")] String Comment; + [Write, Description("Specifies the communication method for the site systems that use IIS. To use HTTPS, the servers need a valid PKI web server certificate for server authentication."), ValueMap{"HttpsOnly","Offline"}, Values{"HttpsOnly","Offline"}] String ClientComputerCommunicationType; + [Write, Description("Indicates whether clients check the Certificate Revocation List (CRL) for site systems.")] Boolean ClientCheckCertificateRevocationListForSiteSystem; + [Write, Description("Indicates whether to use a PKI client certificate for client authentication when available.")] Boolean UsePkiClientCertificate; + [Write, Description("Use this parameter to enable or disable the site property to Use Configuration Manager-generated certificates for HTTP site systems.")] Boolean UseSmsGeneratedCert; + [Write, Description("This option requires that clients sign data when they send to management points.")] Boolean RequireSigning; + [Write, Description("Specifies if the clients sign data and communicate with site systems by using HTTP, this option requires the clients to use SHA-256 to sign the data. This option applies to clients that don't use PKI certificates.")] Boolean RequireSha256; + [Write, Description("Specifies to use 3DES to encrypt the client inventory data and state messages that are sent to the management point.")] Boolean UseEncryption; + [Write, Description("Specifies the maximum number of simultaneous communications to all sites.")] UInt32 MaximumConcurrentSendingForAllSite; + [Write, Description("Specifies the maximum number of simultaneous communications to any single site.")] UInt32 MaximumConcurrentSendingForPerSite; + [Write, Description("Specifies the number of times to retry a failed communication.")] UInt32 RetryNumberForConcurrentSending; + [Write, Description("Specifies the number of minutes to delay before it retries.")] UInt32 ConcurrentSendingDelayBeforeRetryingMins; + [Write, Description("Specifies if an alert is created when the free disk space on the site database server is low.")] Boolean EnableLowFreeSpaceAlert; + [Write, Description("Specifies disk space warning alert when the free disk space on the site database server falls below the specified threshold.")] UInt32 FreeSpaceThresholdWarningGB; + [Write, Description("Specifies disk space critical alert when the free disk space on the site database server falls below the specified threshold.")] UInt32 FreeSpaceThresholdCriticalGB; + [Write, Description("Specifies select collection window hides collections with membership that exceeds this value.")] UInt32 ThresholdOfSelectCollectionByDefault; + [Write, Description("Specifies select collection window always hides collections that have more members than this maximum value.")] UInt32 ThresholdOfSelectCollectionMax; + [Write, Description("Specify the behavior to take when the selected collection includes computers that host site systems roles."), ValueMap{"Warn","Block"}, Values{"Warn","Block"}] String SiteSystemCollectionBehavior; +}; diff --git a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 new file mode 100644 index 00000000..8b347f31 --- /dev/null +++ b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 @@ -0,0 +1,10 @@ +ConvertFrom-StringData @' + RetrieveSettingValue = Getting information for the specified Service Connection Point. + ScpNotInstalled = Service Connection Point is not installed on server: {0}. + TestSetting = Mode expected value: {0} returned {1}. + ScpAbsent = {0} Service Connection Point expected absent returned Present. + TestState = Test-TargetResource compliance check returned: {0}. + AddScpRole = Adding Service Connection Point role to {0}. + SettingValue = Setting mode to {0}. + RemoveScpRole = Removing Service Connection Point role from {0}. +'@ diff --git a/tests/Unit/CMSiteConfiguration.tests.ps1 b/tests/Unit/CMSiteConfiguration.tests.ps1 new file mode 100644 index 00000000..3f4f7730 --- /dev/null +++ b/tests/Unit/CMSiteConfiguration.tests.ps1 @@ -0,0 +1,760 @@ +param () + +$script:dscModuleName = 'ConfigMgrCBDsc' +$script:dscResourceName = 'DSC_CMSiteConfiguration' + +function Invoke-TestSetup +{ + try + { + Import-Module -Name DscResource.Test -Force -ErrorAction 'Stop' + } + catch [System.IO.FileNotFoundException] + { + throw 'DscResource.Test module dependency not found. Please run ".\build.ps1 -Tasks build" first.' + } + + $script:testEnvironment = Initialize-TestEnvironment ` + -DSCModuleName $script:dscModuleName ` + -DSCResourceName $script:dscResourceName ` + -ResourceType 'Mof' ` + -TestType 'Unit' + + # Import Stub function + $script:moduleRoot = Split-Path -Parent (Split-Path -Parent $PSScriptRoot) + Import-Module (Join-Path -Path $PSScriptRoot -ChildPath 'Stubs\ConfigMgrCBDscStub.psm1') -Force -WarningAction SilentlyContinue +} + +function Invoke-TestCleanup +{ + Restore-TestEnvironment -TestEnvironment $script:testEnvironment +} + +Invoke-TestSetup + +#Begin Testing +try +{ + InModuleScope $script:dscResourceName { + Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Get-TargetResource' -Tag 'Get'{ + BeforeAll{ + $getInput = @{ + SiteCode = 'Lab' + } + + $getLanSenderReturn = @{ + Props = @( + @{ + PropertyName = 'Concurrent Sending Limit' + Value = 0 + Value1 = 6 + Value2 = 3 + } + @{ + PropertyName = 'Number of Retries' + Value = 3 + } + @{ + PropertyName = 'Retry Delay' + Value = 2 + } + ) + } + + $getSiteDefBlockReturn = @{ + Props = @( + @{ + PropertyName = 'Comments' + Value1 = 'Site Lab' + } + @{ + PropertyName = 'Device Collection Threshold' + Value = 0 + Value1 = 100 + Value2 = 200 + } + @{ + PropertyName = 'Retry Delay' + Value = 2 + } + ) + } + + $getSiteDefWarnReturn = @{ + Props = @( + @{ + PropertyName = 'Comments' + Value1 = 'Site Lab' + } + @{ + PropertyName = 'Device Collection Threshold' + Value = 1 + Value1 = 100 + Value2 = 200 + } + @{ + PropertyName = 'Retry Delay' + Value = 2 + } + ) + } + + $getSiteCompManager31Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 31 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + + $getSiteCompManager63Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 63 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + + $getSiteCompManager192Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 192 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + + $getSiteCompManager224Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 224 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + + $getSiteCompManager448Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 448 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + + $getSiteCompManager480Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 480 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + + $getSiteCompManager1216Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 1216 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + + $getSiteCompManager1248Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 1248 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + + $getSiteCompManager1504Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 1504 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + + $getCMAlertEnabled = @( + @{ + Name = '$DatabaseFreeSpaceWarningName' + PropertyList = @{ + ParameterValues = @( + '33105' + '51' + ) + } + } + ) + + $getCMAlertDisabled = @( + @{ + Name = '$DatabaseFreeSpaceWarningName' + PropertyList = @{ + ParameterValues = '33105' + } + } + ) + + $getPolicyProvider = @{ + Props = @( + @{ + PropertyName = 'Use Encryption' + Value = 1 + } + ) + } + + Mock -CommandName Get-CMSiteComponent -MockWith { $getLanSenderReturn } -ParameterFilter {$ComponentName -match 'SMS_LAN_Sender'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getPolicyProvider } -ParameterFilter {$ComponentName -match 'SMS_POLICY_PROVIDER'} + Mock -CommandName Import-ConfigMgrPowerShellModule + Mock -CommandName Set-Location + } + + Context 'When retrieving Site Configuration settings' { + It 'Should return desired result when site configuration settings are HTTPS Only and blocked' { + Mock -CommandName Get-CMAlert -MockWith { $getCMAlertDisabled } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefBlockReturn } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager31Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOnly' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $false + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $true + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $false + $result.RequireSigning | Should -Be -ExpectedValue $true + $result.RequireSha256 | Should -Be -ExpectedValue $true + $result.UseEncryption | Should -Be -ExpectedValue $true + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $false + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue $null + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue $null + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Block' + } + + It 'Should return desired result when site configuration settings are HTTPS Only with CRL and warn' { + Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager63Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOnly' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $true + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $true + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $false + $result.RequireSigning | Should -Be -ExpectedValue $true + $result.RequireSha256 | Should -Be -ExpectedValue $true + $result.UseEncryption | Should -Be -ExpectedValue $true + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $true + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue 5 + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue 1 + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + } + + It 'Should return desired result when site configuration settings are HTTPS\HTTP only' { + Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager192Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOrHttp' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $false + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $false + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $false + $result.RequireSigning | Should -Be -ExpectedValue $true + $result.RequireSha256 | Should -Be -ExpectedValue $true + $result.UseEncryption | Should -Be -ExpectedValue $true + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $true + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue 5 + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue 1 + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + } + + It 'Should return desired result when site configuration settings are HTTPS\HTTP and CRL' { + Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager224Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOrHttp' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $true + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $false + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $false + $result.RequireSigning | Should -Be -ExpectedValue $true + $result.RequireSha256 | Should -Be -ExpectedValue $true + $result.UseEncryption | Should -Be -ExpectedValue $true + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $true + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue 5 + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue 1 + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + } + + It 'Should return desired result when site configuration settings are HTTPS\HTTP and PKI' { + Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager448Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOrHttp' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $false + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $true + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $false + $result.RequireSigning | Should -Be -ExpectedValue $true + $result.RequireSha256 | Should -Be -ExpectedValue $true + $result.UseEncryption | Should -Be -ExpectedValue $true + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $true + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue 5 + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue 1 + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + } + + It 'Should return desired result when site configuration settings are HTTPS\HTTP and PKI and CRL' { + Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager480Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOrHttp' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $true + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $true + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $false + $result.RequireSigning | Should -Be -ExpectedValue $true + $result.RequireSha256 | Should -Be -ExpectedValue $true + $result.UseEncryption | Should -Be -ExpectedValue $true + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $true + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue 5 + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue 1 + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + } + + It 'Should return desired result when site configuration settings are HTTPS\HTTP and SCCM Cert' { + Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager1216Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOrHttp' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $false + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $false + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $true + $result.RequireSigning | Should -Be -ExpectedValue $true + $result.RequireSha256 | Should -Be -ExpectedValue $true + $result.UseEncryption | Should -Be -ExpectedValue $true + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $true + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue 5 + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue 1 + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + } + + It 'Should return desired result when site configuration settings are HTTPS\HTTP and SCCM Cert and CRL' { + Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager1248Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOrHttp' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $true + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $false + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $true + $result.RequireSigning | Should -Be -ExpectedValue $true + $result.RequireSha256 | Should -Be -ExpectedValue $true + $result.UseEncryption | Should -Be -ExpectedValue $true + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $true + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue 5 + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue 1 + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + } + + It 'Should return desired result when site configuration settings are HTTPS\HTTP and SCCM Cert and PKI and CRL' { + Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager1504Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOrHttp' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $true + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $true + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $true + $result.RequireSigning | Should -Be -ExpectedValue $true + $result.RequireSha256 | Should -Be -ExpectedValue $true + $result.UseEncryption | Should -Be -ExpectedValue $true + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $true + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue 5 + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue 1 + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + } + } + } + + <#Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Set-TargetResource' -Tag 'Set'{ + BeforeAll{ + $inputAbsent = @{ + SiteCode = 'Lab' + SiteServerName = 'CA01.contoso.com' + Ensure = 'Absent' + } + + $inputMismatch = @{ + SiteCode = 'Lab' + SiteServerName = 'CA01.contoso.com' + Mode = 'Offline' + Ensure = 'Present' + } + + $getReturnAll = @{ + SiteCode = 'Lab' + SiteServerName = 'CA01.contoso.com' + Mode = 'Online' + Ensure = 'Present' + } + + $getReturnAbsent = @{ + SiteCode = 'Lab' + SiteServerName = 'CA01.contoso.com' + Mode = $null + Ensure = 'Absent' + } + + Mock -CommandName Import-ConfigMgrPowerShellModule + Mock -CommandName Set-Location + Mock -CommandName Add-CMServiceConnectionPoint + Mock -CommandName Set-CMServiceConnectionPoint + Mock -CommandName Remove-CMServiceConnectionPoint + } + + Context 'When Set-TargetResource runs successfully' { + + It 'Should call expected commands for when changing settings' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + Set-TargetResource @inputMismatch + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 1 -Scope It + Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + } + + It 'Should call expected commands when the service connection point is absent' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAbsent } + + Set-TargetResource @getReturnAll + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + } + + It 'Should call expected commands when the service connection point exists and expected absent' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + Set-TargetResource @inputAbsent + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 1 -Scope It + } + } + + Context 'When Set-TargetResource throws' { + + It 'Should call expected commands and throw if Add-CMServiceConnectionPoint throws' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAbsent } + Mock -CommandName Add-CMServiceConnectionPoint -MockWith { throw } + + { Set-TargetResource @getReturnAll } | Should -Throw + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + } + + It 'Should call expected commands and throw if Set-CMServiceConnectionPoint throws' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + Mock -CommandName Set-CMServiceConnectionPoint -MockWith { throw } + + { Set-TargetResource @inputMismatch } | Should -Throw + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 1 -Scope It + Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + } + + It 'Should call expected commands and throw if Remove-CMServiceConnectionPoint throws' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + Mock -CommandName Remove-CMServiceConnectionPoint -MockWith { throw } + + { Set-TargetResource @inputAbsent } | Should -Throw + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 1 -Scope It + } + } + }#> + + Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Test-TargetResource' -Tag 'Test'{ + BeforeAll{ + $getReturnAll = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + ClientComputerCommunicationType = 'HttpsOrHttp' + ClientCheckCertificateRevocationListForSiteSystem = $true + UsePkiClientCertificate = $false + UseSmsGeneratedCert = $true + RequireSigning = $true + RequireSha256 = $false + UseEncryption = $false + MaximumConcurrentSendingForAllSite = 6 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 2 + ConcurrentSendingDelayBeforeRetryingMins = 10 + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 10 + FreeSpaceThresholdCriticalGB = 5 + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 1000 + SiteSystemCollectionBehavior = 'Warn' + } + + $inputMatch = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + ClientComputerCommunicationType = 'HttpsOrHttp' + MaximumConcurrentSendingForAllSite = 6 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 2 + ConcurrentSendingDelayBeforeRetryingMins = 10 + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 10 + FreeSpaceThresholdCriticalGB = 5 + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 1000 + SiteSystemCollectionBehavior = 'Warn' + } + + $inputNotMatch = @{ + SiteCode = 'Lab' + EnableLowFreeSpaceAlert = $false + } + + $inputSmsCertWithHttpsOnly = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + ClientComputerCommunicationType = 'HttpsOnly' + UseSmsGeneratedCert = $true + } + + $inputDisableAlertWithValue = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + EnableLowFreeSpaceAlert = $false + FreeSpaceThresholdWarningGB = 10 + } + + Mock -CommandName Import-ConfigMgrPowerShellModule + Mock -CommandName Set-Location + } + + Context 'When running Test-TargetResource' { + BeforeEach{ + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + } + + It 'Should return desired result true when desired results equals current state' { + + Test-TargetResource @inputMatch | Should -Be $true + } + + It 'Should return desired result false when desired result does not equal current state' { + + Test-TargetResource @inputNotMatch | Should -Be $false + } + + It 'Should return desired result false when desired result does not equal current state with invalid parameter' { + + Test-TargetResource @inputSmsCertWithHttpsOnly | Should -Be $false + } + + It 'Should return desired result false when desired result does not equal current state with disabling Alerts' { + + Test-TargetResource @inputDisableAlertWithValue | Should -Be $false + } + + + } + } + } +} +finally +{ + Invoke-TestCleanup +} From 922202c06e88b81b63c0312333beb01c067399f5 Mon Sep 17 00:00:00 2001 From: Easyreturns <20781445+jeffotterpohl@users.noreply.github.com> Date: Thu, 5 Aug 2021 10:02:38 -0500 Subject: [PATCH 02/16] updates to Set and Strings --- source/ConfigMgrCBDsc.psd1 | 3 +- .../DSC_CMSiteConfiguration.psm1 | 62 ++++++++++++++----- .../DSC_CMSiteConfiguration.strings.psd1 | 12 ++-- 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/source/ConfigMgrCBDsc.psd1 b/source/ConfigMgrCBDsc.psd1 index 0b088bad..cb7f2f7d 100644 --- a/source/ConfigMgrCBDsc.psd1 +++ b/source/ConfigMgrCBDsc.psd1 @@ -79,6 +79,7 @@ 'CMSoftwareDistributionComponent' 'CMMaintenanceWindows' 'CMFileReplication' + 'CMSiteConfiguration' ) <# @@ -97,7 +98,7 @@ 'ServiceConnectionPoint','NetworkDiscovery','ReportingServicePoint','SystemDiscovery','PXEDistributionPoint','PullDistributionPoint', 'SiteMaintenance','AdministrativeUser','DistributionGroup','SiteSystemServer','StatusReportingComponent','CollectionMembershipEvaluationComponent', 'DistributionPointGroupMembers','SecurityScopes','UserDiscovery','SecurityRoles','ClientPushSettings','SoftwareDistributionComponent', - 'MaintenanceWindows','FileReplication') + 'MaintenanceWindows','FileReplication','SiteConfiguration') # A URL to the license for this module. LicenseUri = 'https://github.com/dsccommunity/ConfigMgrCBDsc/blob/master/LICENSE' diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index 6b043b79..6854b5f2 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -58,8 +58,6 @@ function Get-TargetResource $siteServerDeployment = 'Warn' } - #[boolean]$nonCrit = ($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Enable Console Notifications'}).Value - # Alerts $dbAlert = (Get-CMAlert | Where-Object -FilterScript {$_.Name -eq '$DatabaseFreeSpaceWarningName'}).PropertyList.ParameterValues[-1] if ($dbAlert -ne '>') @@ -340,23 +338,57 @@ function Set-TargetResource try { - if ($Ensure -eq 'Present') + $defaultValues = @( + 'Comment','ClientComputerCommunicationType','ClientCheckCertificateRevocationListForSiteSystem', + 'UsePkiClientCertificate','RequireSigning','UseEncryption','MaximumConcurrentSendingForAllSite', + 'MaximumConcurrentSendingForPerSite','RetryNumberForConcurrentSending', + 'ConcurrentSendingDelayBeforeRetryingMins','EnableLowFreeSpaceAlert', + 'ThresholdOfSelectCollectionByDefault','ThresholdOfSelectCollectionMax','SiteSystemCollectionBehavior' + ) + + if ($ClientComputerCommunicationType -eq 'HttpsOnly' -and $PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) + { + Write-Warning -Message $script:localizedData.IgnoreSMSCert + } + else + { + $defaultValues += @('UseSmsGeneratedCert') + } + + if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -and $EnableLowFreeSpaceAlert -eq $false) { - if ($state.Ensure -eq 'Absent') + if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) { - Write-Verbose -Message ($script:localizedData.AddScpRole -f $SiteServerName) - Add-CMServiceConnectionPoint -SiteSystemServerName $SiteServerName -SiteCode $SiteCode -Mode $Mode + Write-Warning -Message $script:localizedData.IgnoreAlertsSettings } - elseif ($state.Mode -ne $Mode) + else { - Write-Verbose -Message ($script:localizedData.SettingValue -f $Mode) - Set-CMServiceConnectionPoint -SiteSystemServerName $SiteServerName -SiteCode $SiteCode -Mode $Mode + if ($FreeSpaceThresholdCriticalGB -ge $FreeSpaceThresholdWarningGB) + { + throw $script:localizedData.AlertErrorMsg + } + + $defaultValues += @('FreeSpaceThresholdCriticalGB','FreeSpaceThresholdWarningGB') } } - elseif ($state.Ensure -eq 'Present') + + foreach ($param in $PSBoundParameters.GetEnumerator()) + { + if ($defaultValues -contains $param.key) + { + if ($param.Value -ne $state[$param.key]) + { + Write-Verbose -Message ($script:localizedData.SettingValue -f $param.Key, $param.Value) + $buildingParams += @{ + $param.Key = $param.Value + } + } + } + } + + if ($buildingParams) { - Write-Verbose -Message ($script:localizedData.RemoveScpRole -f $SiteServerName) - Remove-CMServiceConnectionPoint -SiteSystemServerName $SiteServerName -SiteCode $SiteCode + Set-CMSite -SiteCode $SiteCode @buildingParams } } catch @@ -548,7 +580,7 @@ function Test-TargetResource if ($ClientComputerCommunicationType -eq 'HttpsOnly' -and $PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) { - Write-Warning -Message 'When specifying HttpsOnly, UseSMSGeneratedCert can not be specified, ignoring setting.' + Write-Warning -Message $script:localizedData.IgnoreSMSCert } else { @@ -559,13 +591,13 @@ function Test-TargetResource { if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) { - Write-Warning 'EnableLowFreeSpaceAlert is disabled and FreeSpaceThreshold Warning\Critical GB was specified, ignoring setting' + Write-Warning -Message $script:localizedData.IgnoreAlertsSettings } else { if ($FreeSpaceThresholdCriticalGB -ge $FreeSpaceThresholdWarningGB) { - Write-Warning 'FreeSpaceThresholdCritical is greater than or equal to FreeSpaceThresholdWarning. Warning should be greater than Critical' + Write-Warning -Message $script:localizedData.AlertErrorMsg $badInput = $true } diff --git a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 index 8b347f31..7be096f4 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 @@ -1,10 +1,8 @@ ConvertFrom-StringData @' - RetrieveSettingValue = Getting information for the specified Service Connection Point. - ScpNotInstalled = Service Connection Point is not installed on server: {0}. - TestSetting = Mode expected value: {0} returned {1}. - ScpAbsent = {0} Service Connection Point expected absent returned Present. + RetrieveSettingValue = Getting information for the specified Fallback Status Point. + IgnoreSMSCert = When specifying HttpsOnly, UseSMSGeneratedCert can not be specified, ignoring setting. + IgnoreAlertsSettings = EnableLowFreeSpaceAlert is disabled and FreeSpaceThreshold Warning\Critical GB was specified, ignoring settings. + AlertErrorMsg = FreeSpaceThresholdCritical is greater than or equal to FreeSpaceThresholdWarning. Warning should be greater than Critical. TestState = Test-TargetResource compliance check returned: {0}. - AddScpRole = Adding Service Connection Point role to {0}. - SettingValue = Setting mode to {0}. - RemoveScpRole = Removing Service Connection Point role from {0}. + SettingValue = Setting value: {0} to {1}. '@ From 885bed46be1372e86709287227f8d0ab25735e83 Mon Sep 17 00:00:00 2001 From: Easyreturns <20781445+jeffotterpohl@users.noreply.github.com> Date: Thu, 12 Aug 2021 10:14:42 -0500 Subject: [PATCH 03/16] Get\Set\Test and Pester initial --- .../DSC_CMSiteConfiguration.psm1 | 306 +++++++++-- .../DSC_CMSiteConfiguration.schema.mof | 1 + .../DSC_CMSiteConfiguration.strings.psd1 | 5 +- tests/Unit/CMSiteConfiguration.tests.ps1 | 481 +++++++++++++++--- 4 files changed, 659 insertions(+), 134 deletions(-) diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index 6854b5f2..1d5318b2 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -42,14 +42,12 @@ function Get-TargetResource } } - $hiercySettings = (Get-CMSiteDefinition -SiteCode $SiteCode).Props + $siteDef = Get-CMSiteDefinition -SiteCode $SiteCode + $comments = ($siteDef.Props | Where-Object -FilterScript {$_.PropertyName -eq 'Comments'}).Value1 + $defaultSize = ($siteDef.Props | Where-Object -FilterScript {$_.PropertyName -eq 'Device Collection Threshold'}).Value1 + $maxSize = ($siteDef.Props | Where-Object -FilterScript {$_.PropertyName -eq 'Device Collection Threshold'}).Value2 - $comments = ($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Comments'}).Value1 - - $defaultSize = ($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Device Collection Threshold'}).Value1 - $maxSize = ($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Device Collection Threshold'}).Value2 - - if (($hiercySettings | Where-Object -FilterScript {$_.PropertyName -eq 'Device Collection Threshold'}).Value -eq 0) + if (($siteDef.Props | Where-Object -FilterScript {$_.PropertyName -eq 'Device Collection Threshold'}).Value -eq 0) { $siteServerDeployment = 'Block' } @@ -58,25 +56,18 @@ function Get-TargetResource $siteServerDeployment = 'Warn' } - # Alerts - $dbAlert = (Get-CMAlert | Where-Object -FilterScript {$_.Name -eq '$DatabaseFreeSpaceWarningName'}).PropertyList.ParameterValues[-1] - if ($dbAlert -ne '>') - { - $dbAlertXml = [xml]$dbAlert - $freeSpaceAlert = $true - $warningGB = $dbAlertXml.Parameters.Parameter[2].'#text' - $critGB = $dbAlertXml.Parameters.Parameter[3].'#text' - } - else - { - $freeSpaceAlert = $false - } - # Communication Security $props = (Get-CMSiteComponent -ComponentName 'SMS_Site_Component_Manager' -SiteCode $SiteCode).Props $clientComms = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'IISSSLState'}).Value - if ($clientComms -eq 31) + if ($clientComms -eq 0) + { + $clientCommunication = 'HttpsOrHttp' + $useCrl = $true + $pkiClient = $true + $sccmCert = $false + } + elseif ($clientComms -eq 31) { $clientCommunication = 'HttpsOnly' $useCrl = $false @@ -140,12 +131,37 @@ function Get-TargetResource $sccmCert = $true } - [boolean]$hash = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Enhanced Hash Algorithm'}).Value - [boolean]$signing = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Message Signing'}).Value + if ($siteDef.SiteType -eq 2) + { + $sType = 'Primary' + + # Alerts + $dbAlert = (Get-CMAlert | Where-Object -FilterScript {$_.Name -eq '$DatabaseFreeSpaceWarningName'}).PropertyList.ParameterValues[-1] + if ($dbAlert -ne '>') + { + $dbAlertXml = [xml]$dbAlert + $freeSpaceAlert = $true + $warningGB = $dbAlertXml.Parameters.Parameter[2].'#text' + $critGB = $dbAlertXml.Parameters.Parameter[3].'#text' + } + else + { + $freeSpaceAlert = $false + } - $siteSecurity = (Get-CMSiteComponent -ComponentName SMS_POLICY_PROVIDER).Props + [boolean]$hash = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Enhanced Hash Algorithm'}).Value + [boolean]$signing = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Message Signing'}).Value - [boolean]$threeDes = ($siteSecurity | Where-Object -FilterScript {$_.PropertyName -eq 'Use Encryption'}).Value + $siteSecurity = (Get-CMSiteComponent -ComponentName SMS_POLICY_PROVIDER).Props + + [boolean]$threeDes = ($siteSecurity | Where-Object -FilterScript {$_.PropertyName -eq 'Use Encryption'}).Value + } + elseif ($siteDef.SiteType -eq 4) + { + $sType = 'Cas' + $useCrl = $null + $pkiClient = $null + } return @{ SiteCode = $SiteCode @@ -167,6 +183,7 @@ function Get-TargetResource RequireSha256 = $hash RequireSigning = $signing UseEncryption = $threeDes + SiteType = $sType } } @@ -334,19 +351,20 @@ function Set-TargetResource Import-ConfigMgrPowerShellModule -SiteCode $SiteCode Set-Location -Path "$($SiteCode):\" - $state = Get-TargetResource -SiteCode $SiteCode -SiteServerName $SiteServerName + $state = Get-TargetResource -SiteCode $SiteCode try { $defaultValues = @( - 'Comment','ClientComputerCommunicationType','ClientCheckCertificateRevocationListForSiteSystem', - 'UsePkiClientCertificate','RequireSigning','UseEncryption','MaximumConcurrentSendingForAllSite', + 'SiteCode','Comment','ClientComputerCommunicationType','MaximumConcurrentSendingForAllSite', 'MaximumConcurrentSendingForPerSite','RetryNumberForConcurrentSending', - 'ConcurrentSendingDelayBeforeRetryingMins','EnableLowFreeSpaceAlert', - 'ThresholdOfSelectCollectionByDefault','ThresholdOfSelectCollectionMax','SiteSystemCollectionBehavior' + 'ConcurrentSendingDelayBeforeRetryingMins','ThresholdOfSelectCollectionByDefault', + 'ThresholdOfSelectCollectionMax','SiteSystemCollectionBehavior' ) - if ($ClientComputerCommunicationType -eq 'HttpsOnly' -and $PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) + if (($PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) -and + (-not [string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $ClientComputerCommunicationType -eq 'HttpsOnly') -or + ([string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $state.ClientComputerCommunicationType -eq 'HttpsOnly')) { Write-Warning -Message $script:localizedData.IgnoreSMSCert } @@ -355,28 +373,85 @@ function Set-TargetResource $defaultValues += @('UseSmsGeneratedCert') } - if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -and $EnableLowFreeSpaceAlert -eq $false) + if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionByDefault') -or $PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionMax')) { - if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionByDefault')) { - Write-Warning -Message $script:localizedData.IgnoreAlertsSettings + $collectionDefault = $ThresholdOfSelectCollectionByDefault } - else + elseif ($state.ThresholdOfSelectCollectionByDefault) { - if ($FreeSpaceThresholdCriticalGB -ge $FreeSpaceThresholdWarningGB) + $collectionDefault = $state.ThresholdOfSelectCollectionByDefault + } + + if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionMax')) + { + $collectionMax = $ThresholdOfSelectCollectionMax + } + elseif ($state.ThresholdOfSelectCollectionMax) + { + $collectionMax = $state.ThresholdOfSelectCollectionMax + } + + if (($collectionMax -ne 0) -and ($collectionMax -le $collectionDefault)) + { + throw ($script:localizedData.CollectionError -f $collectionDefault, $collectionMax) + } + } + + if ($state.SiteType -eq 'Primary') + { + $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', + 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert') + + if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or + $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + { + if ($EnableLowFreeSpaceAlert -eq $true) { - throw $script:localizedData.AlertErrorMsg + if (-not $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or + -not $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + { + throw $script:localizedData.AlertMissing + } + else + { + if ($FreeSpaceThresholdCriticalGB -ge $FreeSpaceThresholdWarningGB) + { + throw $script:localizedData.AlertErrorMsg + } + else + { + $defaultValues += @('FreeSpaceThresholdWarningGB','FreeSpaceThresholdCriticalGB') + } + } + } + else + { + if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or + $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + { + Write-Warning -Message $script:localizedData.IgnoreAlertsSettings + } + } + } + } + elseif ($state.SiteType -eq 'Cas') + { + foreach ($param in $PSBoundParameters.GetEnumerator()) + { + if ($defaultValues -notcontains $param.Key) + { + Write-Warning -Message ($script:localizedData.IgnorePrimarySetting -f $param.Key) } - - $defaultValues += @('FreeSpaceThresholdCriticalGB','FreeSpaceThresholdWarningGB') } } foreach ($param in $PSBoundParameters.GetEnumerator()) { - if ($defaultValues -contains $param.key) + if ($defaultValues -contains $param.Key) { - if ($param.Value -ne $state[$param.key]) + if ($param.Value -ne $state[$param.Key]) { Write-Verbose -Message ($script:localizedData.SettingValue -f $param.Key, $param.Value) $buildingParams += @{ @@ -571,14 +646,15 @@ function Test-TargetResource $badInput = $false $defaultValues = @( - 'Comment','ClientComputerCommunicationType','ClientCheckCertificateRevocationListForSiteSystem', - 'UsePkiClientCertificate','RequireSigning','UseEncryption','MaximumConcurrentSendingForAllSite', + 'SiteCode','Comment','ClientComputerCommunicationType','MaximumConcurrentSendingForAllSite', 'MaximumConcurrentSendingForPerSite','RetryNumberForConcurrentSending', - 'ConcurrentSendingDelayBeforeRetryingMins','EnableLowFreeSpaceAlert', - 'ThresholdOfSelectCollectionByDefault','ThresholdOfSelectCollectionMax','SiteSystemCollectionBehavior' + 'ConcurrentSendingDelayBeforeRetryingMins','ThresholdOfSelectCollectionByDefault', + 'ThresholdOfSelectCollectionMax','SiteSystemCollectionBehavior' ) - if ($ClientComputerCommunicationType -eq 'HttpsOnly' -and $PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) + if (($PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) -and + (-not [string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $ClientComputerCommunicationType -eq 'HttpsOnly') -or + ([string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $state.ClientComputerCommunicationType -eq 'HttpsOnly')) { Write-Warning -Message $script:localizedData.IgnoreSMSCert } @@ -587,21 +663,141 @@ function Test-TargetResource $defaultValues += @('UseSmsGeneratedCert') } - if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -and $EnableLowFreeSpaceAlert -eq $false) + if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionByDefault') -or $PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionMax')) { - if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionByDefault')) { - Write-Warning -Message $script:localizedData.IgnoreAlertsSettings + $collectionDefault = $ThresholdOfSelectCollectionByDefault } - else + elseif ($state.ThresholdOfSelectCollectionByDefault) + { + $collectionDefault = $state.ThresholdOfSelectCollectionByDefault + } + + if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionMax')) + { + $collectionMax = $ThresholdOfSelectCollectionMax + } + elseif ($state.ThresholdOfSelectCollectionMax) + { + $collectionMax = $state.ThresholdOfSelectCollectionMax + } + + if (($collectionMax -ne 0) -and ($collectionMax -le $collectionDefault)) + { + Write-Warning -Message ($script:localizedData.CollectionError -f $collectionDefault, $collectionMax) + } + } + + if ($state.SiteType -eq 'Primary') + { + $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', + 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert') + + if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or + $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + { + if ($EnableLowFreeSpaceAlert -eq $true) + { + if (-not $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or + -not $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + { + Write-Warning -Message $script:localizedData.AlertErrorMsg + $badInput = $true + } + else + { + if ($FreeSpaceThresholdCriticalGB -ge $FreeSpaceThresholdWarningGB) + { + Write-Warning -Message $script:localizedData.AlertErrorMsg + $badInput = $true + } + else + { + $defaultValues += @('FreeSpaceThresholdWarningGB','FreeSpaceThresholdCriticalGB') + } + } + } + else + { + if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or + $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + { + Write-Warning -Message $script:localizedData.IgnoreAlertsSettings + } + } + } + <#if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or + $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) { - if ($FreeSpaceThresholdCriticalGB -ge $FreeSpaceThresholdWarningGB) + if ($EnableLowFreeSpaceAlert -eq $true) { - Write-Warning -Message $script:localizedData.AlertErrorMsg - $badInput = $true + if ((-not $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or + -not $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) -and $state.EnableLowFreeSpaceAlert -eq $false) + { + Write-Warning -Message $script:localizedData.AlertErrorMsg + $badInput = $true + } + else + { + $evalute = $true + } + } + elseif (-not $PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert')) + { + if ($state.EnableLowFreeSpaceAlert -eq $false) + { + Write-Warning -Message $script:localizedData.IgnoreAlertsSettings + } + else + { + $evalute = $true + } + } + elseif (($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -and $EnableLowFreeSpaceAlert -eq $false) -and + ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB'))) + { + Write-Warning -Message $script:localizedData.IgnoreAlertsSettings } - $defaultValues += @('FreeSpaceThresholdCriticalGB','FreeSpaceThresholdWarningGB') + if ($evalute -eq $true) + { + if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB')) + { + $freeSpaceWarn = $FreeSpaceThresholdWarningGB + } + elseif ($state.FreeSpaceThresholdWarningGB) + { + $freeSpaceWarn = $state.FreeSpaceThresholdWarningGB + } + + if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) + { + $freeSpaceCrit = $FreeSpaceThresholdCriticalGB + } + elseif ($state.FreeSpaceThresholdCriticalGB) + { + $freeSpaceCrit = $state.FreeSpaceThresholdWarningGB + } + + if ($freeSpaceCrit -ge $freeSpaceWarn) + { + Write-Warning -Message $script:localizedData.AlertErrorMsg + $badInput = $true + } + + $defaultValues += @('FreeSpaceThresholdWarningGB','FreeSpaceThresholdCriticalGB') + } + }#> + } + elseif ($state.SiteType -eq 'Cas') + { + foreach ($param in $PSBoundParameters.GetEnumerator()) + { + if ($defaultValues -notcontains $param.Key) + { + Write-Warning -Message ($script:localizedData.IgnorePrimarySetting -f $param.Key) + } } } diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof index 1dba33bb..ccb08255 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof @@ -20,4 +20,5 @@ class DSC_CMSiteConfiguration: OMI_BaseResource [Write, Description("Specifies select collection window hides collections with membership that exceeds this value.")] UInt32 ThresholdOfSelectCollectionByDefault; [Write, Description("Specifies select collection window always hides collections that have more members than this maximum value.")] UInt32 ThresholdOfSelectCollectionMax; [Write, Description("Specify the behavior to take when the selected collection includes computers that host site systems roles."), ValueMap{"Warn","Block"}, Values{"Warn","Block"}] String SiteSystemCollectionBehavior; + [Read, Description("Specifies the site type, CAS or Primary")] String SiteType; }; diff --git a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 index 7be096f4..b4337135 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 @@ -1,7 +1,10 @@ ConvertFrom-StringData @' RetrieveSettingValue = Getting information for the specified Fallback Status Point. IgnoreSMSCert = When specifying HttpsOnly, UseSMSGeneratedCert can not be specified, ignoring setting. - IgnoreAlertsSettings = EnableLowFreeSpaceAlert is disabled and FreeSpaceThreshold Warning\Critical GB was specified, ignoring settings. + IgnorePrimarySetting = Current site type is CAS, {0} does not apply to a CAS server. + IgnoreAlertsSettings = EnableLowFreeSpaceAlert is disabled and FreeSpaceThreshold Warning or Critical GB was specified, ignoring settings. + CollectionError = ThresholdOfSelectCollectionByDefault of: {0} must be greater than ThresholdOfSelectCollectionMax: {1}. + AlertMissing = When setting EnableLowFreeSpaceAlert to true, FreeSpaceThreshold warning and critical must be specified. AlertErrorMsg = FreeSpaceThresholdCritical is greater than or equal to FreeSpaceThresholdWarning. Warning should be greater than Critical. TestState = Test-TargetResource compliance check returned: {0}. SettingValue = Setting value: {0} to {1}. diff --git a/tests/Unit/CMSiteConfiguration.tests.ps1 b/tests/Unit/CMSiteConfiguration.tests.ps1 index 3f4f7730..aa6f51a9 100644 --- a/tests/Unit/CMSiteConfiguration.tests.ps1 +++ b/tests/Unit/CMSiteConfiguration.tests.ps1 @@ -37,7 +37,7 @@ try { InModuleScope $script:dscResourceName { Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Get-TargetResource' -Tag 'Get'{ - BeforeAll{ + BeforeAll { $getInput = @{ SiteCode = 'Lab' } @@ -62,6 +62,7 @@ try } $getSiteDefBlockReturn = @{ + SiteType = 2 Props = @( @{ PropertyName = 'Comments' @@ -81,7 +82,8 @@ try } $getSiteDefWarnReturn = @{ - Props = @( + SiteType = 2 + Props = @( @{ PropertyName = 'Comments' Value1 = 'Site Lab' @@ -99,6 +101,43 @@ try ) } + $getSiteDefCas = @{ + SiteType = 4 + Props = @( + @{ + PropertyName = 'Comments' + Value1 = 'Site Lab' + } + @{ + PropertyName = 'Device Collection Threshold' + Value = 1 + Value1 = 100 + Value2 = 200 + } + @{ + PropertyName = 'Retry Delay' + Value = 2 + } + ) + } + + $getSiteCompManager0Return = @{ + Props = @( + @{ + PropertyName = 'IISSSLState' + Value = 0 + } + @{ + PropertyName = 'Enforce Enhanced Hash Algorithm' + Value = 1 + } + @{ + PropertyName = 'Enforce Message Signing' + Value = 1 + } + ) + } + $getSiteCompManager31Return = @{ Props = @( @{ @@ -289,7 +328,37 @@ try } Context 'When retrieving Site Configuration settings' { - It 'Should return desired result when site configuration settings are HTTPS Only and blocked' { + + It 'Should return desired result when site configuration settings are HTTPS\HTTP only for CAS' { + Mock -CommandName Get-CMAlert + Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefCas } + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager0Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + + $result = Get-TargetResource @getInput + $result | Should -BeOfType System.Collections.HashTable + $result.SiteCode | Should -Be -ExpectedValue 'Lab' + $result.Comment | Should -Be -ExpectedValue 'Site Lab' + $result.ClientComputerCommunicationType | Should -Be -ExpectedValue 'HttpsOrHttp' + $result.ClientCheckCertificateRevocationListForSiteSystem | Should -Be -ExpectedValue $null + $result.UsePkiClientCertificate | Should -Be -ExpectedValue $null + $result.UseSmsGeneratedCert | Should -Be -ExpectedValue $false + $result.RequireSigning | Should -Be -ExpectedValue $null + $result.RequireSha256 | Should -Be -ExpectedValue $null + $result.UseEncryption | Should -Be -ExpectedValue $null + $result.MaximumConcurrentSendingForAllSite | Should -Be -ExpectedValue 6 + $result.MaximumConcurrentSendingForPerSite | Should -Be -ExpectedValue 3 + $result.RetryNumberForConcurrentSending | Should -Be -ExpectedValue 3 + $result.ConcurrentSendingDelayBeforeRetryingMins | Should -Be -ExpectedValue 2 + $result.EnableLowFreeSpaceAlert | Should -Be -ExpectedValue $null + $result.FreeSpaceThresholdWarningGB | Should -Be -ExpectedValue $null + $result.FreeSpaceThresholdCriticalGB | Should -Be -ExpectedValue $null + $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 + $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 + $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + $result.SiteType | Should -Be -ExpectedValue 'CAS' + } + + It 'Should return desired result when site configuration settings are HTTPS Only and blocked Primary' { Mock -CommandName Get-CMAlert -MockWith { $getCMAlertDisabled } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefBlockReturn } Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager31Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} @@ -315,6 +384,7 @@ try $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Block' + $result.SiteType | Should -Be -ExpectedValue 'Primary' } It 'Should return desired result when site configuration settings are HTTPS Only with CRL and warn' { @@ -343,6 +413,7 @@ try $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + $result.SiteType | Should -Be -ExpectedValue 'Primary' } It 'Should return desired result when site configuration settings are HTTPS\HTTP only' { @@ -371,6 +442,7 @@ try $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + $result.SiteType | Should -Be -ExpectedValue 'Primary' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and CRL' { @@ -399,6 +471,7 @@ try $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + $result.SiteType | Should -Be -ExpectedValue 'Primary' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and PKI' { @@ -427,6 +500,7 @@ try $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + $result.SiteType | Should -Be -ExpectedValue 'Primary' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and PKI and CRL' { @@ -455,6 +529,7 @@ try $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + $result.SiteType | Should -Be -ExpectedValue 'Primary' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and SCCM Cert' { @@ -483,6 +558,7 @@ try $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + $result.SiteType | Should -Be -ExpectedValue 'Primary' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and SCCM Cert and CRL' { @@ -511,6 +587,7 @@ try $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + $result.SiteType | Should -Be -ExpectedValue 'Primary' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and SCCM Cert and PKI and CRL' { @@ -539,130 +616,252 @@ try $result.ThresholdOfSelectCollectionByDefault | Should -Be -ExpectedValue 100 $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' + $result.SiteType | Should -Be -ExpectedValue 'Primary' } } } - <#Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Set-TargetResource' -Tag 'Set'{ - BeforeAll{ - $inputAbsent = @{ - SiteCode = 'Lab' - SiteServerName = 'CA01.contoso.com' - Ensure = 'Absent' - } - - $inputMismatch = @{ - SiteCode = 'Lab' - SiteServerName = 'CA01.contoso.com' - Mode = 'Offline' - Ensure = 'Present' - } - + Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Set-TargetResource' -Tag 'Set'{ + BeforeAll { $getReturnAll = @{ - SiteCode = 'Lab' - SiteServerName = 'CA01.contoso.com' - Mode = 'Online' - Ensure = 'Present' - } - - $getReturnAbsent = @{ - SiteCode = 'Lab' - SiteServerName = 'CA01.contoso.com' - Mode = $null - Ensure = 'Absent' + SiteCode = 'Lab' + Comment = 'Site Lab' + ClientComputerCommunicationType = 'HttpsOrHttp' + ClientCheckCertificateRevocationListForSiteSystem = $true + UsePkiClientCertificate = $false + UseSmsGeneratedCert = $true + RequireSigning = $true + RequireSha256 = $false + UseEncryption = $false + MaximumConcurrentSendingForAllSite = 6 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 2 + ConcurrentSendingDelayBeforeRetryingMins = 10 + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 10 + FreeSpaceThresholdCriticalGB = 5 + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 1000 + SiteSystemCollectionBehavior = 'Warn' + SiteType = 'Primary' } Mock -CommandName Import-ConfigMgrPowerShellModule Mock -CommandName Set-Location - Mock -CommandName Add-CMServiceConnectionPoint - Mock -CommandName Set-CMServiceConnectionPoint - Mock -CommandName Remove-CMServiceConnectionPoint + Mock -CommandName Set-CMSite } Context 'When Set-TargetResource runs successfully' { + BeforeEach { + $getReturnCas = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + ClientComputerCommunicationType = 'HttpsOrHttp' + ClientCheckCertificateRevocationListForSiteSystem = $null + UsePkiClientCertificate = $null + UseSmsGeneratedCert = $true + RequireSigning = $null + RequireSha256 = $null + UseEncryption = $null + MaximumConcurrentSendingForAllSite = 6 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 2 + ConcurrentSendingDelayBeforeRetryingMins = 10 + EnableLowFreeSpaceAlert = $null + FreeSpaceThresholdWarningGB = $null + FreeSpaceThresholdCriticalGB = $null + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 1000 + SiteSystemCollectionBehavior = 'Warn' + SiteType = 'Cas' + } - It 'Should call expected commands for when changing settings' { + $inputNotMatch = @{ + SiteCode = 'Lab' + EnableLowFreeSpaceAlert = $false + } + + $casMisMatch = @{ + SiteCode = 'Lab' + EnableLowFreeSpaceAlert = $false + FreeSpaceThresholdWarningGB = 10 + FreeSpaceThresholdCriticalGB = 20 + } + + $inputAlerts = @{ + SiteCode = 'Lab' + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 20 + FreeSpaceThresholdCriticalGB = 10 + } + + $inputSmsCertWithHttpsOnly = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + ClientComputerCommunicationType = 'HttpsOnly' + UseSmsGeneratedCert = $true + } + + $collectionDefault = @{ + SiteCode = 'Lab' + ThresholdOfSelectCollectionByDefault = 99 + } + + $collectionMax = @{ + SiteCode = 'Lab' + ThresholdOfSelectCollectionMax = 999 + } + + $alertSetting = @{ + SiteCode = 'Lab' + FreeSpaceThresholdWarningGB = 20 + FreeSpaceThresholdCriticalGB = 10 + } + } + + It 'Should call expected commands for when changing settings for Primary' { Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } - Set-TargetResource @inputMismatch + Set-TargetResource @inputSmsCertWithHttpsOnly Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It - Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 0 -Scope It - Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 1 -Scope It - Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It } - It 'Should call expected commands when the service connection point is absent' { - Mock -CommandName Get-TargetResource -MockWith { $getReturnAbsent } + It 'Should call expected commands for when changing settings for Cas' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnCas } - Set-TargetResource @getReturnAll + Set-TargetResource @inputSmsCertWithHttpsOnly Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It - Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 1 -Scope It - Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 0 -Scope It - Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It } - It 'Should call expected commands when the service connection point exists and expected absent' { + It 'Should call expected commands for when changing settings for Primary only settings' { Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } - Set-TargetResource @inputAbsent + Set-TargetResource @inputNotMatch Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It - Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 0 -Scope It - Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 0 -Scope It - Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It + } + + It 'Should call expected commands for when changing Alert settings' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + Set-TargetResource @inputAlerts + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It + } + + It 'Should call expected commands for when specifying Alert settings and enabling alerts is not specified' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + Set-TargetResource @alertSetting + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It + } + + It 'Should call expected commands for when changing settings for Cas and specifying Primary only settings' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnCas } + + Set-TargetResource @casMisMatch + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It + } + + It 'Should call expected commands for when changing settings for default collection settings' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnCas } + + Set-TargetResource @collectionDefault + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It + } + + It 'Should call expected commands for when changing settings for max collection settings' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnCas } + + Set-TargetResource @collectionMax + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It } } Context 'When Set-TargetResource throws' { + BeforeEach { + $inputCollectionBad = @{ + SiteCode = 'Lab' + ThresholdOfSelectCollectionByDefault = 9 + ThresholdOfSelectCollectionMax = 1 + } + + $inputEnableAlertCrit = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdCriticalGB = 6 + } - It 'Should call expected commands and throw if Add-CMServiceConnectionPoint throws' { - Mock -CommandName Get-TargetResource -MockWith { $getReturnAbsent } - Mock -CommandName Add-CMServiceConnectionPoint -MockWith { throw } + $inputEnableAlertInvalid = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 5 + FreeSpaceThresholdCriticalGB = 10 + } + + $collectionError = 'ThresholdOfSelectCollectionByDefault of: 9 must be greater than ThresholdOfSelectCollectionMax: 1.' + $alertMissing = 'When setting EnableLowFreeSpaceAlert to true, FreeSpaceThreshold warning and critical must be specified.' + $alertErrorMsg = 'FreeSpaceThresholdCritical is greater than or equal to FreeSpaceThresholdWarning. Warning should be greater than Critical.' + } - { Set-TargetResource @getReturnAll } | Should -Throw + It 'Should call expected commands and throw when collection default is greater than collection max' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + { Set-TargetResource @inputCollectionBad } | Should -Throw -ExpectedMessage $collectionError Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It - Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 1 -Scope It - Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 0 -Scope It - Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It } - It 'Should call expected commands and throw if Set-CMServiceConnectionPoint throws' { + It 'Should call expected commands and throw when not all params are specified when setting Alerts to enabled' { Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } - Mock -CommandName Set-CMServiceConnectionPoint -MockWith { throw } - { Set-TargetResource @inputMismatch } | Should -Throw + { Set-TargetResource @inputEnableAlertCrit } | Should -Throw -ExpectedMessage $alertMissing Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It - Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 0 -Scope It - Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 1 -Scope It - Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It } - It 'Should call expected commands and throw if Remove-CMServiceConnectionPoint throws' { + It 'Should call expected commands and throw when not all params are specified when setting Alerts settings are invalid' { Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } - Mock -CommandName Remove-CMServiceConnectionPoint -MockWith { throw } - { Set-TargetResource @inputAbsent } | Should -Throw + { Set-TargetResource @inputEnableAlertInvalid } | Should -Throw -ExpectedMessage $alertErrorMsg Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It - Assert-MockCalled Add-CMServiceConnectionPoint -Exactly -Times 0 -Scope It - Assert-MockCalled Set-CMServiceConnectionPoint -Exactly -Times 0 -Scope It - Assert-MockCalled Remove-CMServiceConnectionPoint -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It } } - }#> + } Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Test-TargetResource' -Tag 'Test'{ - BeforeAll{ + BeforeAll { $getReturnAll = @{ SiteCode = 'Lab' Comment = 'Site Lab' @@ -683,6 +882,53 @@ try ThresholdOfSelectCollectionByDefault = 100 ThresholdOfSelectCollectionMax = 1000 SiteSystemCollectionBehavior = 'Warn' + SiteType = 'Primary' + } + + $getReturnCas = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + ClientComputerCommunicationType = 'HttpsOrHttp' + ClientCheckCertificateRevocationListForSiteSystem = $null + UsePkiClientCertificate = $null + UseSmsGeneratedCert = $true + RequireSigning = $null + RequireSha256 = $null + UseEncryption = $null + MaximumConcurrentSendingForAllSite = 6 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 2 + ConcurrentSendingDelayBeforeRetryingMins = 10 + EnableLowFreeSpaceAlert = $null + FreeSpaceThresholdWarningGB = $null + FreeSpaceThresholdCriticalGB = $null + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 1000 + SiteSystemCollectionBehavior = 'Warn' + SiteType = 'Cas' + } + + $getReturnAlertDisabled = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + ClientComputerCommunicationType = 'HttpsOrHttp' + ClientCheckCertificateRevocationListForSiteSystem = $true + UsePkiClientCertificate = $false + UseSmsGeneratedCert = $true + RequireSigning = $true + RequireSha256 = $false + UseEncryption = $false + MaximumConcurrentSendingForAllSite = 6 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 2 + ConcurrentSendingDelayBeforeRetryingMins = 10 + EnableLowFreeSpaceAlert = $false + FreeSpaceThresholdWarningGB = $null + FreeSpaceThresholdCriticalGB = $null + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 1000 + SiteSystemCollectionBehavior = 'Warn' + SiteType = 'Primary' } $inputMatch = @{ @@ -706,6 +952,20 @@ try EnableLowFreeSpaceAlert = $false } + $inputAlertsWarning = @{ + SiteCode = 'Lab' + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 10 + FreeSpaceThresholdCriticalGB = 20 + } + + $casMisMatch = @{ + SiteCode = 'Lab' + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 10 + FreeSpaceThresholdCriticalGB = 20 + } + $inputSmsCertWithHttpsOnly = @{ SiteCode = 'Lab' Comment = 'Site Lab' @@ -713,19 +973,50 @@ try UseSmsGeneratedCert = $true } - $inputDisableAlertWithValue = @{ - SiteCode = 'Lab' - Comment = 'Site Lab' - EnableLowFreeSpaceAlert = $false - FreeSpaceThresholdWarningGB = 10 + $inputEnableAlertWithValue = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 11 + FreeSpaceThresholdCriticalGB = 6 + } + + $inputEnableAlertCrit = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdCriticalGB = 6 + } + + $inputDisableAlertCrit = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + EnableLowFreeSpaceAlert = $false + FreeSpaceThresholdCriticalGB = 6 + } + + $collectionDefault = @{ + SiteCode = 'Lab' + ThresholdOfSelectCollectionByDefault = 99 + } + + $collectionMax = @{ + SiteCode = 'Lab' + ThresholdOfSelectCollectionMax = 999 + } + + $collectionBad = @{ + SiteCode = 'Lab' + ThresholdOfSelectCollectionByDefault = 9 + ThresholdOfSelectCollectionMax = 1 } Mock -CommandName Import-ConfigMgrPowerShellModule Mock -CommandName Set-Location } - Context 'When running Test-TargetResource' { - BeforeEach{ + Context 'When running Test-TargetResource for Primary Server' { + BeforeEach { Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } } @@ -744,12 +1035,46 @@ try Test-TargetResource @inputSmsCertWithHttpsOnly | Should -Be $false } - It 'Should return desired result false when desired result does not equal current state with disabling Alerts' { + It 'Should return desired result false when desired result when only specifying warning alert settings' { + + Test-TargetResource @inputEnableAlertCrit | Should -Be $false + } + + It 'Should return desired result false when desired result does not equal current state with enabling Alerts bad input' { + + Test-TargetResource @inputAlertsWarning | Should -Be $false + } + + It 'Should return desired result false when collection default does not match' { + + Test-TargetResource @collectionDefault | Should -Be $false + } + + It 'Should return desired result false when collection max does not match' { + + Test-TargetResource @collectionMax | Should -Be $false + } + + It 'Should return desired result false when collection default and max values are not valid' { + + Test-TargetResource @collectionBad | Should -Be $false + } + + It 'Should return desired result false when specifying alert settings and settings alerts to disabled' { + + Test-TargetResource @inputDisableAlertCrit | Should -Be $false + } + } - Test-TargetResource @inputDisableAlertWithValue | Should -Be $false + Context 'When running Test-TargetResource for Cas Server' { + BeforeEach { + Mock -CommandName Get-TargetResource -MockWith { $getReturnCas } } + It 'Should return desired result true when desired result specifying Primary Setting on Cas' { + Test-TargetResource @casMisMatch | Should -Be $true + } } } } From fc6a6573926ed35dfa44df624252ce01a613e61b Mon Sep 17 00:00:00 2001 From: Easyreturns <20781445+jeffotterpohl@users.noreply.github.com> Date: Mon, 16 Aug 2021 12:20:24 -0500 Subject: [PATCH 04/16] removed dead code --- .../DSC_CMSiteConfiguration.psm1 | 62 ------------------- 1 file changed, 62 deletions(-) diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index 1d5318b2..30b596a1 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -727,68 +727,6 @@ function Test-TargetResource } } } - <#if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or - $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) - { - if ($EnableLowFreeSpaceAlert -eq $true) - { - if ((-not $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or - -not $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) -and $state.EnableLowFreeSpaceAlert -eq $false) - { - Write-Warning -Message $script:localizedData.AlertErrorMsg - $badInput = $true - } - else - { - $evalute = $true - } - } - elseif (-not $PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert')) - { - if ($state.EnableLowFreeSpaceAlert -eq $false) - { - Write-Warning -Message $script:localizedData.IgnoreAlertsSettings - } - else - { - $evalute = $true - } - } - elseif (($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -and $EnableLowFreeSpaceAlert -eq $false) -and - ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB'))) - { - Write-Warning -Message $script:localizedData.IgnoreAlertsSettings - } - - if ($evalute -eq $true) - { - if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB')) - { - $freeSpaceWarn = $FreeSpaceThresholdWarningGB - } - elseif ($state.FreeSpaceThresholdWarningGB) - { - $freeSpaceWarn = $state.FreeSpaceThresholdWarningGB - } - - if ($PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) - { - $freeSpaceCrit = $FreeSpaceThresholdCriticalGB - } - elseif ($state.FreeSpaceThresholdCriticalGB) - { - $freeSpaceCrit = $state.FreeSpaceThresholdWarningGB - } - - if ($freeSpaceCrit -ge $freeSpaceWarn) - { - Write-Warning -Message $script:localizedData.AlertErrorMsg - $badInput = $true - } - - $defaultValues += @('FreeSpaceThresholdWarningGB','FreeSpaceThresholdCriticalGB') - } - }#> } elseif ($state.SiteType -eq 'Cas') { From 73800969b3434d361505f6eca55f149e863f2b2f Mon Sep 17 00:00:00 2001 From: Easyreturns <20781445+jeffotterpohl@users.noreply.github.com> Date: Tue, 17 Aug 2021 08:16:34 -0700 Subject: [PATCH 05/16] Added Examples --- README.md | 9 +++-- .../CMSiteConfiguration_Cas.ps1 | 26 ++++++++++++ .../CMSiteConfiguration_Primary.ps1 | 34 ++++++++++++++++ .../ConfigMgrCBDsc.ReverseDsc.psm1 | 40 +++++++++++++++++-- 4 files changed, 101 insertions(+), 8 deletions(-) create mode 100644 source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 create mode 100644 source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 diff --git a/README.md b/README.md index 55311835..c523c449 100644 --- a/README.md +++ b/README.md @@ -1402,6 +1402,7 @@ all of the modules and specify if it is currently supported by ReverseDSC. - DSC_CMSecurityRoles: Not Supported - DSC_CMSecurityScopes: Fully Supported - DSC_CMServiceConnectionPoint: Fully Supported +- DSC_CMSiteConfiguration: Fully Supported - DSC_CMSiteMaintenance: Fully Supported - DSC_CMSiteSystemServer: Fully Supported - DSC_CMSoftwareDistributionComponent: Fully Supported @@ -1436,9 +1437,9 @@ After importing the module, Set-ConfigMgrCBDscReverse will be available. ClientPush|ClientStatusSettings|CollectionEvaluationComponent|Collections| DistributionGroups|DistributionPoint|DistributionPointGroupMembers| FallbackPoints|ForestDiscovery|HeartbeatDiscovery|MaintenanceWindow|ManagementPoint| - NetworkDiscovery|PullDistributionPoint|PxeDistributionPoint| + NetworkDiscovery|PullDistributionPoint|PxeDistributionPoint|SiteConfiguration| ReportingServicesPoint|SecurityScopes|ServiceConnection|SiteMaintenance| - SiteSystemServer|SoftwareDistributionComponent|SoftwareupdatePoint| + SiteSystemServer|SoftwareDistributionComponent|SoftwareUpdatePoint| StatusReportingComponent|SystemDiscovery|UserDiscovery|ConfigFileOnly } - **[String] Exclude** _(Write)_: Specifies which resources will be excluded from being evaluated. Only evaluated when Include = 'All' @@ -1446,9 +1447,9 @@ After importing the module, Set-ConfigMgrCBDscReverse will be available. ClientPush|ClientStatusSettings|CollectionEvaluationComponent|Collections| DistributionGroups|DistributionPoint|DistributionPointGroupMembers| FallbackPoints|ForestDiscovery|HeartbeatDiscovery|MaintenanceWindow|ManagementPoint| - NetworkDiscovery|PullDistributionPoint|PxeDistributionPoint| + NetworkDiscovery|PullDistributionPoint|PxeDistributionPoint|SiteConfiguration| ReportingServicesPoint|SecurityScopes|ServiceConnection|SiteMaintenance| - SiteSystemServer|SoftwareDistributionComponent|SoftwareupdatePoint| + SiteSystemServer|SoftwareDistributionComponent|SoftwareUpdatePoint| StatusReportingComponent|SystemDiscovery|UserDiscovery } - **[String] DataFile** _(Write)_: Specifies where the data file will be saved. Filename must end with .psd1. Not specifying DataFile the output will be displayed diff --git a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 new file mode 100644 index 00000000..e28a069b --- /dev/null +++ b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 @@ -0,0 +1,26 @@ +<# + .SYNOPSIS + A DSC configuration to configure Site Configurations in Configuration Manager. +#> +Configuration Example +{ + Import-DscResource -ModuleName ConfigMgrCBDsc + + Node localhost + { + CMSiteConfiguration ExampleConfig + { + SiteCode = 'Lab' + Comment = 'Lab Site CAS' + MaximumConcurrentSendingForAllSite = 5 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 10 + ConcurrentSendingDelayBeforeRetryingMins = 5 + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 0 + SiteSystemCollectionBehavior = 'Block' + ClientComputerCommunicationType = 'HttpsOrHttp' + UseSmsGeneratedCert = $true + } + } +} diff --git a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 new file mode 100644 index 00000000..8b490d4c --- /dev/null +++ b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 @@ -0,0 +1,34 @@ +<# + .SYNOPSIS + A DSC configuration to configure Site Configurations in Configuration Manager. +#> +Configuration Example +{ + Import-DscResource -ModuleName ConfigMgrCBDsc + + Node localhost + { + CMSiteConfiguration ExampleConfig + { + SiteCode = 'Lab' + Comment = 'Lab Site Primary' + MaximumConcurrentSendingForAllSite = 5 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 10 + ConcurrentSendingDelayBeforeRetryingMins = 5 + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 0 + SiteSystemCollectionBehavior = 'Block' + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 10 + FreeSpaceThresholdCriticalGB = 5 + ClientComputerCommunicationType = 'HttpsOrHttp' + ClientCheckCertificateRevocationListForSiteSystem = $true + UsePkiClientCertificate = $true + UseSmsGeneratedCert = $true + RequireSha256 = $true + RequireSigning = $true + UseEncryption = $true + } + } +} diff --git a/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 b/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 index fccd61a3..c0edcab2 100644 --- a/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 +++ b/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 @@ -3698,8 +3698,8 @@ function Set-ConfigMgrCBDscReverse 'ClientPush','ClientStatusSettings','CollectionEvaluationComponent','Collections', 'DistributionGroups','DistributionPoint','DistributionPointGroupMembers', 'FallbackPoints','ForestDiscovery','HeartbeatDiscovery','MaintenanceWindow','ManagementPoint', - 'NetworkDiscovery','PullDistributionPoint','PxeDistributionPoint', - 'ReportingServicesPoint','SecurityScopes','ServiceConnection','SiteMaintenance', + 'NetworkDiscovery','PullDistributionPoint','PxeDistributionPoint','ReportingServicesPoint', + 'SecurityScopes','ServiceConnection','SiteConfiguration','SiteMaintenance', 'SiteSystemServer','SoftwareDistributionComponent','SoftwareupdatePoint', 'StatusReportingComponent','SystemDiscovery','UserDiscovery','ConfigFileOnly')] [String[]] @@ -3710,8 +3710,8 @@ function Set-ConfigMgrCBDscReverse 'ClientPush','ClientStatusSettings','CollectionEvaluationComponent','Collections', 'DistributionGroups','DistributionPoint','DistributionPointGroupMembers', 'FallbackPoints','ForestDiscovery','HeartbeatDiscovery','MaintenanceWindow','ManagementPoint', - 'NetworkDiscovery','PullDistributionPoint','PxeDistributionPoint', - 'ReportingServicesPoint','SecurityScopes','ServiceConnection','SiteMaintenance', + 'NetworkDiscovery','PullDistributionPoint','PxeDistributionPoint','ReportingServicesPoint', + 'SecurityScopes','ServiceConnection','SiteConfiguration','SiteMaintenance', 'SiteSystemServer','SoftwareDistributionComponent','SoftwareupdatePoint', 'StatusReportingComponent','SystemDiscovery','UserDiscovery')] [String[]] @@ -4502,6 +4502,38 @@ function Set-ConfigMgrCBDscReverse } } + if (($Include -eq 'All' -and $Exclude -notcontains 'SiteConfiguration') -or ($Include -contains 'SiteConfiguration')) + { + $resourceName = 'CMSiteConfiguration' + Write-Verbose -Message ($script:localizedData.SingleOutput -f $resourceName) -Verbose + $wSiteConfiguration = "$resourceName = @(`r`n" + $siteType = Get-CMSiteDefinition -SiteCode $SiteCode + + if ($siteType.SiteType -eq 2) + { + $excluded = @('SiteCode','SiteType') + } + else + { + $excluded = @('SiteCode','ClientCheckCertificateRevocationListForSiteSystem', + 'UsePkiClientCertificate', 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert', + 'FreeSpaceThresholdCriticalGB','FreeSpaceThresholdWarningGB','SiteType') + } + + $params = @{ + ResourceName = $resourceName + SiteCode = $SiteCode + Indent = 1 + MultiEntry = $false + Resources = $resources + ExcludeList = $excluded + } + + $testThing = Set-OutFile @params + $wSiteConfiguration += "$testThing" + $fileOut += $wSiteConfiguration + } + if (($Include -eq 'All' -and $Exclude -notcontains 'SiteMaintenance') -or ($Include -contains 'SiteMaintenance')) { $resourceName = 'CMSiteMaintenance' From 2f9be48f6767af25c290dd0a7ccfb7397638c6ba Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Mon, 18 Oct 2021 13:01:05 -0400 Subject: [PATCH 06/16] Adding Parameters and Updating Get --- .../DSC_CMSiteConfiguration.psm1 | 299 +++++++++++++++++- .../DSC_CMSiteConfiguration.schema.mof | 14 +- 2 files changed, 306 insertions(+), 7 deletions(-) diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index 30b596a1..812e1265 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -57,8 +57,8 @@ function Get-TargetResource } # Communication Security - $props = (Get-CMSiteComponent -ComponentName 'SMS_Site_Component_Manager' -SiteCode $SiteCode).Props - $clientComms = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'IISSSLState'}).Value + $comSec = Get-CMSiteComponent -ComponentName 'SMS_Site_Component_Manager' -SiteCode $SiteCode + $clientComms = ($comSec.Props | Where-Object -FilterScript {$_.PropertyName -eq 'IISSSLState'}).Value if ($clientComms -eq 0) { @@ -131,6 +131,36 @@ function Get-TargetResource $sccmCert = $true } + foreach ($item in $comSec.Props) + { + switch ($item.PropertyName) + { + 'Certificate Store' { $customStore = $item.Value1 } + 'Select First Certificate' { $certSel = @('FailSelectionAndSendErrorMessage','SelectCertificateWithLongestValidityPeriod')[($item.Value)] } + 'Certificate Selection Criteria' { + $criteria = $item.Value1 + if ([string]::IsNullOrEmpty($criteria)) + { + $criteriaType = 'ClientAuthentication' + $criteriaValue = '' + } + else + { + $criteriaValue = $criteria.Split(':')[1] + + if ($criteria.Split(':')[0] -eq 'SubjectStr') + { + $criteriaType = 'CertificateSubjectContainsString' + } + else + { + $criteriaType = 'CertificateSubjectOrSanIncludesAtrributes' + } + } + } + } + } + if ($siteDef.SiteType -eq 2) { $sType = 'Primary' @@ -149,12 +179,49 @@ function Get-TargetResource $freeSpaceAlert = $false } - [boolean]$hash = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Enhanced Hash Algorithm'}).Value - [boolean]$signing = ($props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Message Signing'}).Value + [boolean]$hash = ($comSec.Props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Enhanced Hash Algorithm'}).Value + [boolean]$signing = ($comSec.Props | Where-Object -FilterScript {$_.PropertyName -eq 'Enforce Message Signing'}).Value $siteSecurity = (Get-CMSiteComponent -ComponentName SMS_POLICY_PROVIDER).Props [boolean]$threeDes = ($siteSecurity | Where-Object -FilterScript {$_.PropertyName -eq 'Use Encryption'}).Value + + # Wake On LAN + $wol = Get-CMSiteComponent -ComponentName 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' -sitecode $SiteCode + + if ($wol.Flag -eq 6) + { + $wolEnabled = $true + } + else + { + $wolEnabled = $false + } + + foreach ($item in $wol.Props) + { + switch ($item.PropertyName) + { + 'SendRetryMax' { $sendRetryMax = $item.Value } + 'SendRetryInterval' { $sendRetryInterval = $item.Value / 60 } + 'SendThrottleMax' { $sendThrottleMax = $item.Value } + 'SendThrottleInterval' { $sendThrottleInterval = $item.Value } + 'MaxThreads' { $maxThreads = $item.Value } + 'SendMode' { + if ($item.Value -eq 1) + { + $sendMode = 'Unicast' + } + else + { + $sendMode = 'SubnetDirectedBroadcasts' + } + } + } + } + + $wolComponent = (Get-CMSiteComponent -ComponentName 'SMS_WAKEONLAN_MANAGER' -sitecode $SiteCode).Props + $scheduleOffset = ($wolComponent | Where-Object -FilterScript {$_.PropertyName -eq 'ScheduleOffset'}).Value / 60 } elseif ($siteDef.SiteType -eq 4) { @@ -184,6 +251,18 @@ function Get-TargetResource RequireSigning = $signing UseEncryption = $threeDes SiteType = $sType + EnableWakeOnLan = $wolEnabled + WakeOnLanTransmissionMethodType = $sendMode + RetryNumberOfSendingWakeupPacketTransmission = $sendRetryMax + SendingWakeupPacketTransmissionDelayMins = $sendRetryInterval + MaximumNumberOfSendingWakeupPacketBeforePausing = $sendThrottleMax + SendingWakeupPacketBeforePausingWaitSec = $sendThrottleInterval + ThreadNumberOfSendingWakeupPacket = $maxThreads + SendingWakeupPacketTransmissionOffsetMins = $scheduleOffset + ClientCertificateCustomStoreName = $customStore + TakeActionForMultipleCertificateMatchCriteria = $certSel + ClientCertificateSelectionCriteriaType = $criteriaType + ClientCertificateSelectionCriteriaValue = $criteriaValue } } @@ -256,6 +335,61 @@ function Get-TargetResource .PARAMETER SiteSystemCollectionBehavior Specify the behavior to take when the selected collection includes computers that host site systems roles. + + .PARAMETER EnableWakeOnLan + Indicates whether to send Wake On LAN packets for scheduled activities such as deployments + of software updates. + + .PARAMETER WakeOnLanTransmissionMethodType + Specifies the type of transmission method to use for Wake On LAN transmissions. + + .PARAMETER RetryNumberOfSendingWakeupPacketTransmission + Specifies the number of times a wake up packet is sent to a target computer. + + .PARAMETER SendingWakeupPacketTransmissionDelayMins + Specifies the number of minutes to delay between wake up retries. + + .PARAMETER MaximumNumberOfSendingWakeupPacketBeforePausing + Specifies the maximum number of wake up packets transmitted by this site server before pausing. + + .PARAMETER SendingWakeupPacketBeforePausingWaitSec + Specifies the number of seconds to wait between sending wake up packets to a target computer. + + .PARAMETER ThreadNumberOfSendingWakeupPacket + Specifies the number of threads to use when sending wake up packets. + + .PARAMETER SendingWakeupPacketTransmissionOffsetMins + Specifies when wake up packets should be sent prior to a scheduled activity. + + .PARAMETER ClientCertificateCustomStoreName + Specifies the store name where the client certificate is located in the Computer store when + you don't use the default store of Personal. + + .PARAMETER TakeActionForMultipleCertificateMatchCriteria + Specifies the action to take if multiple certificates match criteria. + + .PARAMETER ClientCertificateSelectionCriteriaType + Specifies the criteria type to match in a client certificate when more than one + certificate is available. + + .PARAMETER ClientCertificateSelectionCriteriaValue + Specifies a value for the ClientCertificateSelectionCriteriaType parameter. + + <# + EnableWakeOnLan = $wolEnabled #bool (pri only) + WakeOnLanTransmissionMethodType = $sendMode #validate Unicast, SubnetDirectedBroadcasts (pri only) + RetryNumberOfSendingWakeupPacketTransmission = $sendRetryMax #1 to 5 (pri only) + SendingWakeupPacketTransmissionDelayMins = $sendRetryInterval #1 to 5 (pri only) + MaximumNumberOfSendingWakeupPacketBeforePausing = $sendThrottleMax #1000 to 300000 (pri only) + SendingWakeupPacketBeforePausingWaitSec = $sendThrottleInterval #0 to 100 (pri only) + ThreadNumberOfSendingWakeupPacket = $maxThreads #1 to 9 (pri only) + SendingWakeupPacketTransmissionOffsetMins = $scheduleOffset #0 to 60 (pri only) + + ClientCertificateCustomStoreName = $customStore # string (pri only) + TakeActionForMultipleCertificateMatchCriteria = $certSel #validate 'FailSelectionAndSendErrorMessage','SelectCertificateWithLongestValidityPeriod' (pri only) + ClientCertificateSelectionCriteriaType = $criteriaType #validate 'ClientAuthentication','CertificateSubjectContainsString','CertificateSubjectOrSanIncludesAttributes' (pri only) + ClientCertificateSelectionCriteriaValue = $criteriaValue # string (pri only) + #> #> function Set-TargetResource { @@ -346,7 +480,64 @@ function Set-TargetResource [Parameter()] [ValidateSet('Warn','Block')] [String] - $SiteSystemCollectionBehavior + $SiteSystemCollectionBehavior, + + [Parameter()] + [Boolean] + $EnableWakeOnLan, + + [Parameter()] + [ValidateSet('Unicast','SubnetDirectedBroadcasts')] + [String] + $WakeOnLanTransmissionMethodType, + + [Parameter()] + [ValidateRange(1,5)] + [UInt32] + $RetryNumberOfSendingWakeupPacketTransmission, + + [Parameter()] + [ValidateRange(1,5)] + [UInt32] + $SendingWakeupPacketTransmissionDelayMins, + + [Parameter()] + [ValidateRange(1000,300000)] + [UInt32] + $MaximumNumberOfSendingWakeupPacketBeforePausing, + + [Parameter()] + [ValidateRange(0,100)] + [UInt32] + $SendingWakeupPacketBeforePausingWaitSec, + + [Parameter()] + [ValidateRange(1,9)] + [UInt32] + $ThreadNumberOfSendingWakeupPacket, + + [Parameter()] + [ValidateRange(0,60)] + [UInt32] + $SendingWakeupPacketTransmissionOffsetMins, + + [Parameter()] + [String] + $ClientCertificateCustomStoreName, + + [Parameter()] + [ValidateSet('FailSelectionAndSendErrorMessage','SelectCertificateWithLongestValidityPeriod')] + [String] + $TakeActionForMultipleCertificateMatchCriteria, + + [Parameter()] + [ValidateSet('ClientAuthentication','CertificateSubjectContainsString','CertificateSubjectOrSanIncludesAttributes')] + [String] + $ClientCertificateSelectionCriteriaType, + + [Parameter()] + [String] + $ClientCertificateSelectionCriteriaValue ) Import-ConfigMgrPowerShellModule -SiteCode $SiteCode @@ -545,6 +736,45 @@ function Set-TargetResource .PARAMETER SiteSystemCollectionBehavior Specify the behavior to take when the selected collection includes computers that host site systems roles. + + .PARAMETER EnableWakeOnLan + Indicates whether to send Wake On LAN packets for scheduled activities such as deployments + of software updates. + + .PARAMETER WakeOnLanTransmissionMethodType + Specifies the type of transmission method to use for Wake On LAN transmissions. + + .PARAMETER RetryNumberOfSendingWakeupPacketTransmission + Specifies the number of times a wake up packet is sent to a target computer. + + .PARAMETER SendingWakeupPacketTransmissionDelayMins + Specifies the number of minutes to delay between wake up retries. + + .PARAMETER MaximumNumberOfSendingWakeupPacketBeforePausing + Specifies the maximum number of wake up packets transmitted by this site server before pausing. + + .PARAMETER SendingWakeupPacketBeforePausingWaitSec + Specifies the number of seconds to wait between sending wake up packets to a target computer. + + .PARAMETER ThreadNumberOfSendingWakeupPacket + Specifies the number of threads to use when sending wake up packets. + + .PARAMETER SendingWakeupPacketTransmissionOffsetMins + Specifies when wake up packets should be sent prior to a scheduled activity. + + .PARAMETER ClientCertificateCustomStoreName + Specifies the store name where the client certificate is located in the Computer store when + you don't use the default store of Personal. + + .PARAMETER TakeActionForMultipleCertificateMatchCriteria + Specifies the action to take if multiple certificates match criteria. + + .PARAMETER ClientCertificateSelectionCriteriaType + Specifies the criteria type to match in a client certificate when more than one + certificate is available. + + .PARAMETER ClientCertificateSelectionCriteriaValue + Specifies a value for the ClientCertificateSelectionCriteriaType parameter. #> function Test-TargetResource { @@ -636,7 +866,64 @@ function Test-TargetResource [Parameter()] [ValidateSet('Warn','Block')] [String] - $SiteSystemCollectionBehavior + $SiteSystemCollectionBehavior, + + [Parameter()] + [Boolean] + $EnableWakeOnLan, + + [Parameter()] + [ValidateSet('Unicast','SubnetDirectedBroadcasts')] + [String] + $WakeOnLanTransmissionMethodType, + + [Parameter()] + [ValidateRange(1,5)] + [UInt32] + $RetryNumberOfSendingWakeupPacketTransmission, + + [Parameter()] + [ValidateRange(1,5)] + [UInt32] + $SendingWakeupPacketTransmissionDelayMins, + + [Parameter()] + [ValidateRange(1000,300000)] + [UInt32] + $MaximumNumberOfSendingWakeupPacketBeforePausing, + + [Parameter()] + [ValidateRange(0,100)] + [UInt32] + $SendingWakeupPacketBeforePausingWaitSec, + + [Parameter()] + [ValidateRange(1,9)] + [UInt32] + $ThreadNumberOfSendingWakeupPacket, + + [Parameter()] + [ValidateRange(0,60)] + [UInt32] + $SendingWakeupPacketTransmissionOffsetMins, + + [Parameter()] + [String] + $ClientCertificateCustomStoreName, + + [Parameter()] + [ValidateSet('FailSelectionAndSendErrorMessage','SelectCertificateWithLongestValidityPeriod')] + [String] + $TakeActionForMultipleCertificateMatchCriteria, + + [Parameter()] + [ValidateSet('ClientAuthentication','CertificateSubjectContainsString','CertificateSubjectOrSanIncludesAttributes')] + [String] + $ClientCertificateSelectionCriteriaType, + + [Parameter()] + [String] + $ClientCertificateSelectionCriteriaValue ) Import-ConfigMgrPowerShellModule -SiteCode $SiteCode diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof index ccb08255..d9a71b36 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof @@ -19,6 +19,18 @@ class DSC_CMSiteConfiguration: OMI_BaseResource [Write, Description("Specifies disk space critical alert when the free disk space on the site database server falls below the specified threshold.")] UInt32 FreeSpaceThresholdCriticalGB; [Write, Description("Specifies select collection window hides collections with membership that exceeds this value.")] UInt32 ThresholdOfSelectCollectionByDefault; [Write, Description("Specifies select collection window always hides collections that have more members than this maximum value.")] UInt32 ThresholdOfSelectCollectionMax; - [Write, Description("Specify the behavior to take when the selected collection includes computers that host site systems roles."), ValueMap{"Warn","Block"}, Values{"Warn","Block"}] String SiteSystemCollectionBehavior; + [Write, Description("Specifies the behavior to take when the selected collection includes computers that host site systems roles."), ValueMap{"Warn","Block"}, Values{"Warn","Block"}] String SiteSystemCollectionBehavior; + [Write, Description("Indicates whether to send Wake On LAN packets for scheduled activities such as deployments of software updates.")] Boolean EnableWakeOnLan; + [Write, Description("Specifies the type of transmission method to use for Wake On LAN transmissions."), ValueMap{"Unicast","SubnetDirectedBroadcasts"}, Values{"Unicast","SubnetDirectedBroadcasts"}] String WakeOnLanTransmissionMethodType; + [Write, Description("Specifies the number of times a wake up packet is sent to a target computer.")] UInt32 RetryNumberOfSendingWakeupPacketTransmission; + [Write, Description("Specifies the number of minutes to delay between wake up retries.")] UInt32 SendingWakeupPacketTransmissionDelayMins; + [Write, Description("Specifies the maximum number of wake up packets transmitted by this site server before pausing.")] UInt32 MaximumNumberOfSendingWakeupPacketBeforePausing; + [Write, Description("Specifies the number of seconds to wait between sending wake up packets to a target computer.")] UInt32 SendingWakeupPacketBeforePausingWaitSec; + [Write, Description("Specifies the number of threads to use when sending wake up packets.")] UInt32 ThreadNumberOfSendingWakeupPacket; + [Write, Description("Specifies when wake up packets should be sent prior to a scheduled activity.")] UInt32 SendingWakeupPacketTransmissionOffsetMins; + [Write, Description("Specifies the store name where the client certificate is located in the Computer store when you don't use the default store of Personal.")] String ClientCertificateCustomStoreName; + [Write, Description("Specifies the action to take if multiple certificates match criteria."), ValueMap{"FailSelectionAndSendErrorMessage","SelectCertificateWithLongestValidityPeriod"}, Values{"FailSelectionAndSendErrorMessage","SelectCertificateWithLongestValidityPeriod"}] String TakeActionForMultipleCertificateMatchCriteria; + [Write, Description("Specifies the criteria type to match in a client certificate when more than one certificate is available."), ValueMap{"ClientAuthentication","CertificateSubjectContainsString","CertificateSubjectOrSanIncludesAttributes"}, Values{"ClientAuthentication","CertificateSubjectContainsString","CertificateSubjectOrSanIncludesAttributes"}] String ClientCertificateSelectionCriteriaType; + [Write, Description("Specifies a value for the ClientCertificateSelectionCriteriaType parameter.")] String ClientCertificateSelectionCriteriaValue; [Read, Description("Specifies the site type, CAS or Primary")] String SiteType; }; From 9c18f20ad79d59e85ff352728fc9ee9152b1f3e0 Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Fri, 12 Nov 2021 08:36:50 -0500 Subject: [PATCH 07/16] Adding Params in Test and Set --- .../DSC_CMSiteConfiguration.psm1 | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index 812e1265..dbc78447 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -593,7 +593,12 @@ function Set-TargetResource if ($state.SiteType -eq 'Primary') { $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', - 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert') + 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','WakeOnLanTransmissionMethodType', + 'RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', + 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec', + 'ThreadNumberOfSendingWakeupPacket','SendingWakeupPacketTransmissionOffsetMins','ClientCertificateCustomStoreName', + 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType', + 'ClientCertificateSelectionCriteriaValue') if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) @@ -626,6 +631,7 @@ function Set-TargetResource } } } + #Other Throws/Warns Here } elseif ($state.SiteType -eq 'Cas') { @@ -979,7 +985,12 @@ function Test-TargetResource if ($state.SiteType -eq 'Primary') { $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', - 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert') + 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','WakeOnLanTransmissionMethodType', + 'RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', + 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec', + 'ThreadNumberOfSendingWakeupPacket','SendingWakeupPacketTransmissionOffsetMins','ClientCertificateCustomStoreName', + 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType', + 'ClientCertificateSelectionCriteriaValue') if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) @@ -1014,6 +1025,7 @@ function Test-TargetResource } } } + #Other Warns Here. } elseif ($state.SiteType -eq 'Cas') { From 9d99052742260ebf81020415190519aa2f286ae1 Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Fri, 12 Nov 2021 10:31:26 -0500 Subject: [PATCH 08/16] Adding Warns and Throws --- .../DSC_CMSiteConfiguration.psm1 | 110 +++++++++++++++--- .../DSC_CMSiteConfiguration.strings.psd1 | 4 + 2 files changed, 100 insertions(+), 14 deletions(-) diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index dbc78447..004328c3 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -593,12 +593,8 @@ function Set-TargetResource if ($state.SiteType -eq 'Primary') { $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', - 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','WakeOnLanTransmissionMethodType', - 'RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', - 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec', - 'ThreadNumberOfSendingWakeupPacket','SendingWakeupPacketTransmissionOffsetMins','ClientCertificateCustomStoreName', - 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType', - 'ClientCertificateSelectionCriteriaValue') + 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','ClientCertificateCustomStoreName', + 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType') if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) @@ -631,7 +627,52 @@ function Set-TargetResource } } } - #Other Throws/Warns Here + + $wolParams = @('WakeOnLanTransmissionMethodType','RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', + 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec','ThreadNumberOfSendingWakeupPacket', + 'SendingWakeupPacketTransmissionOffsetMins') + + foreach ($param in $wolParams) + { + if (($EnableWakeOnLan -eq $false) -or ($State.EnableWakeOnLan -eq $false -and (-not $PSBoundParameters.ContainsKey('EnableWakeOnLan'))) + -and ($PSBoundParameters.ContainsKey($prarm))) + { + Write-Warning -Message ($script:localizedData.WakeFalse -f $param) + } + else + { + $defaultValues += $param + } + } + + if ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaType') + { + if ($ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') + { + if ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue')) + { + Write-Warning -Message $script:localizedData.IgnoreCertValue + } + } + else + { + if (-not $PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue')) + { + throw ($script:localizedData.MissingCertValue -f $ClientCertificateSelectionCriteriaType) + $badInput = $true + } + else + { + $defaultValues += @('ClientCertificateSelectionCriteriaValue') + } + } + } + elseif ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue') + { + throw $script:localizedData.MissingCertType + $badInput = $true + } + # Other Warns Here } elseif ($state.SiteType -eq 'Cas') { @@ -985,12 +1026,8 @@ function Test-TargetResource if ($state.SiteType -eq 'Primary') { $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', - 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','WakeOnLanTransmissionMethodType', - 'RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', - 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec', - 'ThreadNumberOfSendingWakeupPacket','SendingWakeupPacketTransmissionOffsetMins','ClientCertificateCustomStoreName', - 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType', - 'ClientCertificateSelectionCriteriaValue') + 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','ClientCertificateCustomStoreName', + 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType') if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) @@ -1025,7 +1062,52 @@ function Test-TargetResource } } } - #Other Warns Here. + + $wolParams = @('WakeOnLanTransmissionMethodType','RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', + 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec','ThreadNumberOfSendingWakeupPacket', + 'SendingWakeupPacketTransmissionOffsetMins') + + foreach ($param in $wolParams) + { + if (($EnableWakeOnLan -eq $false) -or ($State.EnableWakeOnLan -eq $false -and (-not $PSBoundParameters.ContainsKey('EnableWakeOnLan'))) + -and ($PSBoundParameters.ContainsKey($prarm))) + { + Write-Warning -Message ($script:localizedData.WakeFalse -f $param) + } + else + { + $defaultValues += $param + } + } + + if ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaType') + { + if ($ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') + { + if ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue')) + { + Write-Warning -Message $script:localizedData.IgnoreCertValue + } + } + else + { + if (-not $PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue')) + { + Write-Warning -Message ($script:localizedData.MissingCertValue -f $ClientCertificateSelectionCriteriaType) + $badInput = $true + } + else + { + $defaultValues += @('ClientCertificateSelectionCriteriaValue') + } + } + } + elseif ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue') + { + Write-Warning -Message $script:localizedData.MissingCertType + $badInput = $true + } + # Other Warns Here } elseif ($state.SiteType -eq 'Cas') { diff --git a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 index b4337135..e6bec646 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 @@ -8,4 +8,8 @@ ConvertFrom-StringData @' AlertErrorMsg = FreeSpaceThresholdCritical is greater than or equal to FreeSpaceThresholdWarning. Warning should be greater than Critical. TestState = Test-TargetResource compliance check returned: {0}. SettingValue = Setting value: {0} to {1}. + WakeFalse = When EnableWakeOnLan is disabled the {0} parameter will be ignored. + IgnoreCertValue = When ClientCertificateSelectionCriteriaType is set to ClientAuthentication, the ClientCertificateSelectionCriteriaValue is ignored. + MissingCertValue = When ClientCertificateSelectionCriteriaType is specified as {0}, ClientCertificateSelectionCriteriaValue is required. + MissingCertType = When ClientCertificateSelectionCriteriaValue is specified, ClientCertificateSelectionCriteriaType is required. '@ From 4868dd0bd07a847b56355a4c43a6549ddbca2a86 Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Mon, 15 Nov 2021 09:43:51 -0500 Subject: [PATCH 09/16] Updating Examples and adding warns --- .../DSC_CMSiteConfiguration.psm1 | 48 ++++++++----------- .../DSC_CMSiteConfiguration.schema.mof | 2 +- .../DSC_CMSiteConfiguration.strings.psd1 | 1 + .../CMSiteConfiguration_Cas.ps1 | 22 ++++----- .../CMSiteConfiguration_Primary.ps1 | 13 ++++- 5 files changed, 45 insertions(+), 41 deletions(-) diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index 004328c3..9747d88e 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -166,8 +166,8 @@ function Get-TargetResource $sType = 'Primary' # Alerts - $dbAlert = (Get-CMAlert | Where-Object -FilterScript {$_.Name -eq '$DatabaseFreeSpaceWarningName'}).PropertyList.ParameterValues[-1] - if ($dbAlert -ne '>') + $dbAlert = (Get-CMAlert | Where-Object -FilterScript {$_.Name -eq '$DatabaseFreeSpaceWarningName'}).PropertyList.ParameterValues + if ($dbAlert) { $dbAlertXml = [xml]$dbAlert $freeSpaceAlert = $true @@ -374,22 +374,6 @@ function Get-TargetResource .PARAMETER ClientCertificateSelectionCriteriaValue Specifies a value for the ClientCertificateSelectionCriteriaType parameter. - - <# - EnableWakeOnLan = $wolEnabled #bool (pri only) - WakeOnLanTransmissionMethodType = $sendMode #validate Unicast, SubnetDirectedBroadcasts (pri only) - RetryNumberOfSendingWakeupPacketTransmission = $sendRetryMax #1 to 5 (pri only) - SendingWakeupPacketTransmissionDelayMins = $sendRetryInterval #1 to 5 (pri only) - MaximumNumberOfSendingWakeupPacketBeforePausing = $sendThrottleMax #1000 to 300000 (pri only) - SendingWakeupPacketBeforePausingWaitSec = $sendThrottleInterval #0 to 100 (pri only) - ThreadNumberOfSendingWakeupPacket = $maxThreads #1 to 9 (pri only) - SendingWakeupPacketTransmissionOffsetMins = $scheduleOffset #0 to 60 (pri only) - - ClientCertificateCustomStoreName = $customStore # string (pri only) - TakeActionForMultipleCertificateMatchCriteria = $certSel #validate 'FailSelectionAndSendErrorMessage','SelectCertificateWithLongestValidityPeriod' (pri only) - ClientCertificateSelectionCriteriaType = $criteriaType #validate 'ClientAuthentication','CertificateSubjectContainsString','CertificateSubjectOrSanIncludesAttributes' (pri only) - ClientCertificateSelectionCriteriaValue = $criteriaValue # string (pri only) - #> #> function Set-TargetResource { @@ -634,8 +618,8 @@ function Set-TargetResource foreach ($param in $wolParams) { - if (($EnableWakeOnLan -eq $false) -or ($State.EnableWakeOnLan -eq $false -and (-not $PSBoundParameters.ContainsKey('EnableWakeOnLan'))) - -and ($PSBoundParameters.ContainsKey($prarm))) + if (($EnableWakeOnLan -eq $false) -or ($State.EnableWakeOnLan -eq $false -and (-not $PSBoundParameters.ContainsKey('EnableWakeOnLan'))) -and + ($PSBoundParameters.ContainsKey($prarm))) { Write-Warning -Message ($script:localizedData.WakeFalse -f $param) } @@ -645,7 +629,7 @@ function Set-TargetResource } } - if ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaType') + if ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaType')) { if ($ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { @@ -667,12 +651,16 @@ function Set-TargetResource } } } - elseif ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue') + elseif ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue')) { throw $script:localizedData.MissingCertType $badInput = $true } - # Other Warns Here + if ($PSBoundParameters.ContainsKey('ClientCertificateCustomStoreName') -and [string]::IsNullOrEmpty($ClientCertificateCustomStoreName)) + { + $PSBoundParameters.ClientCertificateCustomStoreName = 'Personal' + Write-Warning -Message $script:localizedData.NullCertStore + } } elseif ($state.SiteType -eq 'Cas') { @@ -1069,8 +1057,8 @@ function Test-TargetResource foreach ($param in $wolParams) { - if (($EnableWakeOnLan -eq $false) -or ($State.EnableWakeOnLan -eq $false -and (-not $PSBoundParameters.ContainsKey('EnableWakeOnLan'))) - -and ($PSBoundParameters.ContainsKey($prarm))) + if (($EnableWakeOnLan -eq $false) -or ($State.EnableWakeOnLan -eq $false -and (-not $PSBoundParameters.ContainsKey('EnableWakeOnLan'))) -and + ($PSBoundParameters.ContainsKey($prarm))) { Write-Warning -Message ($script:localizedData.WakeFalse -f $param) } @@ -1080,7 +1068,7 @@ function Test-TargetResource } } - if ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaType') + if ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaType')) { if ($ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { @@ -1102,12 +1090,16 @@ function Test-TargetResource } } } - elseif ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue') + elseif ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue')) { Write-Warning -Message $script:localizedData.MissingCertType $badInput = $true } - # Other Warns Here + if ($PSBoundParameters.ContainsKey('ClientCertificateCustomStoreName') -and [string]::IsNullOrEmpty($ClientCertificateCustomStoreName)) + { + $PSBoundParameters.ClientCertificateCustomStoreName = 'Personal' + Write-Warning -Message $script:localizedData.NullCertStore + } } elseif ($state.SiteType -eq 'Cas') { diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof index d9a71b36..8810a60d 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.schema.mof @@ -3,7 +3,7 @@ class DSC_CMSiteConfiguration: OMI_BaseResource { [Key, Description("Specifies the SiteCode for the Configuration Manager site.")] String SiteCode; [Write, Description("Specifies the site comment.")] String Comment; - [Write, Description("Specifies the communication method for the site systems that use IIS. To use HTTPS, the servers need a valid PKI web server certificate for server authentication."), ValueMap{"HttpsOnly","Offline"}, Values{"HttpsOnly","Offline"}] String ClientComputerCommunicationType; + [Write, Description("Specifies the communication method for the site systems that use IIS. To use HTTPS, the servers need a valid PKI web server certificate for server authentication."), ValueMap{"HttpsOnly","HttpsOrHttp"}, Values{"HttpsOnly","HttpsOrHttp"}] String ClientComputerCommunicationType; [Write, Description("Indicates whether clients check the Certificate Revocation List (CRL) for site systems.")] Boolean ClientCheckCertificateRevocationListForSiteSystem; [Write, Description("Indicates whether to use a PKI client certificate for client authentication when available.")] Boolean UsePkiClientCertificate; [Write, Description("Use this parameter to enable or disable the site property to Use Configuration Manager-generated certificates for HTTP site systems.")] Boolean UseSmsGeneratedCert; diff --git a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 index e6bec646..87369f1c 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 @@ -12,4 +12,5 @@ ConvertFrom-StringData @' IgnoreCertValue = When ClientCertificateSelectionCriteriaType is set to ClientAuthentication, the ClientCertificateSelectionCriteriaValue is ignored. MissingCertValue = When ClientCertificateSelectionCriteriaType is specified as {0}, ClientCertificateSelectionCriteriaValue is required. MissingCertType = When ClientCertificateSelectionCriteriaValue is specified, ClientCertificateSelectionCriteriaType is required. + NullCertStore = ClientCertificateCustomStoreName cannot be specified as empty. The default value of Personal will be used. '@ diff --git a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 index e28a069b..7cf611c3 100644 --- a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 +++ b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 @@ -10,17 +10,17 @@ Configuration Example { CMSiteConfiguration ExampleConfig { - SiteCode = 'Lab' - Comment = 'Lab Site CAS' - MaximumConcurrentSendingForAllSite = 5 - MaximumConcurrentSendingForPerSite = 3 - RetryNumberForConcurrentSending = 10 - ConcurrentSendingDelayBeforeRetryingMins = 5 - ThresholdOfSelectCollectionByDefault = 100 - ThresholdOfSelectCollectionMax = 0 - SiteSystemCollectionBehavior = 'Block' - ClientComputerCommunicationType = 'HttpsOrHttp' - UseSmsGeneratedCert = $true + SiteCode = 'Lab' + Comment = 'Lab Site CAS' + MaximumConcurrentSendingForAllSite = 5 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 10 + ConcurrentSendingDelayBeforeRetryingMins = 5 + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 0 + SiteSystemCollectionBehavior = 'Block' + ClientComputerCommunicationType = 'HttpsOrHttp' + UseSmsGeneratedCert = $true } } } diff --git a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 index 8b490d4c..58728f3f 100644 --- a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 +++ b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 @@ -10,7 +10,7 @@ Configuration Example { CMSiteConfiguration ExampleConfig { - SiteCode = 'Lab' + SiteCode = 'PRI' Comment = 'Lab Site Primary' MaximumConcurrentSendingForAllSite = 5 MaximumConcurrentSendingForPerSite = 3 @@ -29,6 +29,17 @@ Configuration Example RequireSha256 = $true RequireSigning = $true UseEncryption = $true + EnableWakeOnLan = $true + WakeOnLanTransmissionMethodType = 'Unicast' + RetryNumberOfSendingWakeupPacketTransmission = 3 + SendingWakeupPacketTransmissionDelayMins = 1 + MaximumNumberOfSendingWakeupPacketBeforePausing = 10 + SendingWakeupPacketBeforePausingWaitSec = 10000 + ThreadNumberOfSendingWakeupPacket = 3 + SendingWakeupPacketTransmissionOffsetMins = 0 + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = 'SelectCertificateWithLongestValidityPeriod' + ClientCertificateSelectionCriteriaType = 'ClientAuthentication' } } } From 29c521e7d873a92efcc9e2570b1c64ed5a16c54a Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Tue, 16 Nov 2021 11:25:41 -0500 Subject: [PATCH 10/16] Updating examples, readme, and changelog --- CHANGELOG.md | 1 + README.md | 111 +++++++++++- source/ConfigMgrCBDsc.psd1 | 9 +- .../DSC_CMSiteConfiguration.psm1 | 160 ++++++++++++++---- .../DSC_CMSiteConfiguration.strings.psd1 | 2 +- .../CMSiteConfiguration_Cas.ps1 | 2 - .../CMSiteConfiguration_Primary.ps1 | 4 +- .../ConfigMgrCBDsc.ReverseDsc.psm1 | 4 +- 8 files changed, 242 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb873eb5..02d35657 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added CMClientSettingsSoftwareUpdate resource - Added CMClientSettingsStateMessaging resource - Added CMClientSettingsUserDeviceAffinity resource +- Added CMSiteConfiguration resource ### Fixed diff --git a/README.md b/README.md index 6383d31b..5beeac60 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,8 @@ Please check out common DSC Community [contributing guidelines](https://dsccommu client policy settings for State Messaging settings. - **CMClientSettingsUserDeviceAffinity**: Provides a resource for modifying the client policy settings for User Device Affinity settings. +- **CMSiteConfiguration**: Provides a resource for modifying the + site settings. ### xSccmPreReqs @@ -2069,6 +2071,111 @@ you are using apply and auto correct. - [CMClientSettingsUserDeviceAffinity](Source\Examples\Resources\CMClientSettingsUserDeviceAffinity\CMClientSettingsUserDeviceAffinity.ps1) +### CMSiteConfiguration + +- **[String] SiteCode** _(Key)_: Specifies the Site Code for the Configuration + Manager site. +- **[String] Comment** _(Write)_: Specifies the site comments. +- **[String] ClientComputerCommunicationType** _(Write)_: Specifies the communication + method for the site systems that use IIS. To use HTTPS, the servers need a valid + PKI web server certificate for server authentication. + This parameter is only valid on a Primary Site. + - Values include: { HttpsOnly | HttpsOrHttp } +- **[Boolean] ClientCheckCertificateRevocationListForSiteSystem** _(Write)_: Indicates + whether clients check the Certificate Revocation List (CRL) for site systems. + This parameter is only valid on a Primary Site. +- **[Boolean] UsePkiClientCertificate** _(Write)_: Indicates whether to use a PKI + client certificate for client authentication when available. + This parameter is only valid on a Primary Site. +- **[Boolean] UseSmsGeneratedCert** _(Write)_: Use this parameter to enable or disable + the site property to Use Configuration Manager-generated certificates for HTTP + site systems. + This parameter is only valid on a Primary Site. +- **[Boolean] RequireSigning** _(Write)_: This option requires that clients sign + data when they send to management points. + This parameter is only valid on a Primary Site. +- **[Boolean] RequireSha256** _(Write)_: Specifies if the clients sign data and + communicate with site systems by using HTTP, this option requires the clients + to use SHA-256 to sign the data. This option applies to clients that don't use + PKI certificates. + This parameter is only valid on a Primary Site. +- **[Boolean] UseEncryption** _(Write)_: Specifies to use 3DES to encrypt the client + inventory data and state messages that are sent to the management point. + This parameter is only valid on a Primary Site. +- **[UInt32] MaximumConcurrentSendingForAllSite** _(Write)_: Specifies the maximum + number of simultaneous communications to all sites. +- **[UInt32] MaximumConcurrentSendingForPerSite** _(Write)_: Specifies the maximum + number of simultaneous communications to any single site. +- **[UInt32] RetryNumberForConcurrentSending** _(Write)_: Specifies the number of + times to retry a failed communication. +- **[UInt32] ConcurrentSendingDelayBeforeRetryingMins** _(Write)_: Specifies the + number of minutes to delay before it retries. +- **[Boolean] EnableLowFreeSpaceAlert** _(Write)_: Specifies if an alert is created + when the free disk space on the site database server is low. + This parameter is only valid on a Primary Site. +- **[UInt32] FreeSpaceThresholdWarningGB** _(Write)_: Specifies disk space warning + alert when the free disk space on the site database server falls below the specified + threshold. + This parameter is only valid on a Primary Site. +- **[UInt32] FreeSpaceThresholdCriticalGB** _(Write)_: Specifies disk space critical + alert when the free disk space on the site database server falls below the specified + threshold. + This parameter is only valid on a Primary Site. +- **[UInt32] ThresholdOfSelectCollectionByDefault** _(Write)_: Specifies select collection + window hides collections with membership that exceeds this value. +- **[UInt32] ThresholdOfSelectCollectionMax** _(Write)_: Specifies select collection + window always hides collections that have more members than this maximum value. +- **[String] SiteSystemCollectionBehavior** _(Write)_: Specifies the behavior to + take when the selected collection includes computers that host site systems roles. + - Values include: { Warn | Block } +- **[Boolean] EnableWakeOnLan** _(Write)_: Indicates whether to send Wake On LAN + packets for scheduled activities such as deployments of software updates. + This parameter is only valid on a Primary Site. +- **[String] WakeOnLanTransmissionMethodType** _(Write)_: Specifies the type of + transmission method to use for Wake On LAN transmissions. + This parameter is only valid on a Primary Site. + - Values include: { Unicast | SubnetDirectedBroadcasts } +- **[UInt32] RetryNumberOfSendingWakeupPacketTransmission** _(Write)_: Specifies + the number of times a wake up packet is sent to a target computer. + This parameter is only valid on a Primary Site. +- **[UInt32] SendingWakeupPacketTransmissionDelayMins** _(Write)_: Specifies the + number of minutes to delay between wake up retries. + This parameter is only valid on a Primary Site. +- **[UInt32] MaximumNumberOfSendingWakeupPacketBeforePausing** _(Write)_: Specifies + the maximum number of wake up packets transmitted by this site server before pausing. + This parameter is only valid on a Primary Site. +- **[UInt32] SendingWakeupPacketBeforePausingWaitSec** _(Write)_: Specifies the number + of seconds to wait between sending wake up packets to a target computer. + This parameter is only valid on a Primary Site. +- **[UInt32] ThreadNumberOfSendingWakeupPacket** _(Write)_: Specifies the number + of threads to use when sending wake up packets. + This parameter is only valid on a Primary Site. +- **[UInt32] SendingWakeupPacketTransmissionOffsetMins** _(Write)_: Specifies when + wake up packets should be sent prior to a scheduled activity. + This parameter is only valid on a Primary Site. +- **[String] ClientCertificateCustomStoreName** _(Write)_: Specifies the store + name where the client certificate is located in the Computer store when you don't + use the default store of Personal. + This parameter is only valid on a Primary Site. +- **[String] TakeActionForMultipleCertificateMatchCriteria** _(Write)_: Specifies + the action to take if multiple certificates match criteria. + This parameter is only valid on a Primary Site. + - Values include: { FailSelectionAndSendErrorMessage | + SelectCertificateWithLongestValidityPeriod } +- **[String] ClientCertificateSelectionCriteriaType** _(Write)_: Specifies the criteria + type to match in a client certificate when more than one certificate is available. + This parameter is only valid on a Primary Site. + - Values include: { ClientAuthentication | CertificateSubjectContainsString | + CertificateSubjectOrSanIncludesAttributes } +- **[String] ClientCertificateSelectionCriteriaValue** _(Write)_: Specifies a value + for the ClientCertificateSelectionCriteriaType parameter. + This parameter is only valid on a Primary Site. + +#### CMSiteConfiguration Examples + +- [CMSiteConfiguration_Cas](Source\Examples\Resources\CMSiteConfiguration\CMSiteConfiguration_Cas.ps1) +- [CMSiteConfiguration_Primary](Source\Examples\Resources\CMSiteConfiguration\CMSiteConfiguration_Primary.ps1) + ## ReverseDsc Most organizations using this module already have an existing Configuration Manager @@ -2201,7 +2308,7 @@ After importing the module, Set-ConfigMgrCBDscReverse will be available. ClientSettingsMetered|ClientSettingsPower|ClientSettingsRemoteTools|ClientSettingsSoftwareCenter| ClientSettingsSoftwareDeployment|ClientSettingsSoftwareInventory|ClientSettingsSoftwareMetering| ClientSettingsSoftwareUpdate|ClientSettingsStateMessaging| - ClientSettingsUserDeviceAffinity } + ClientSettingsUserDeviceAffinity|SiteConfiguration } - **[String] Exclude** _(Write)_: Specifies which resources will be excluded from being evaluated. Only evaluated when Include = 'All' - Values include: { Accounts|AdministrativeUser|AssetIntelligencePoint|BoundaryGroups| @@ -2217,7 +2324,7 @@ After importing the module, Set-ConfigMgrCBDscReverse will be available. ClientSettingsMetered|ClientSettingsPower|ClientSettingsRemoteTools|ClientSettingsSoftwareCenter| ClientSettingsSoftwareDeployment|ClientSettingsSoftwareInventory|ClientSettingsSoftwareMetering| ClientSettingsSoftwareUpdate|ClientSettingsStateMessaging| - ClientSettingsUserDeviceAffinity } + ClientSettingsUserDeviceAffinity|SiteConfiguration } - **[String] DataFile** _(Write)_: Specifies where the data file will be saved. Filename must end with .psd1. Not specifying DataFile the output will be displayed in the output screen only if Include does not equal ConfigFileOnly. diff --git a/source/ConfigMgrCBDsc.psd1 b/source/ConfigMgrCBDsc.psd1 index efefa3f4..590c3582 100644 --- a/source/ConfigMgrCBDsc.psd1 +++ b/source/ConfigMgrCBDsc.psd1 @@ -44,7 +44,6 @@ DscResourcesToExport = @( 'CMAccounts' 'SccmIniFile' - 'XSccmInstall' 'xSccmPreReqs' 'xSccmSqlSetup' 'CMIniFile' @@ -115,10 +114,10 @@ # Tags applied to this module. These help with module discovery in online galleries. Tags = @('DesiredStateConfiguration', 'DSC', 'DSCResourceKit', 'DSCResource', 'ConfigMgrCBDsc','CMAccounts','SCCMPreReqs', - 'SccmSqlSetup','SCCMInstall','CMIniFile','Collections','Boundaries','ForestDiscovery','ClientStatusSettings','BoundaryGroups', - 'ManagementPoint','AssetIntelligencePoint','FallbackStatusPoint','SoftwareUpdatePoint','DistrubtionPoint','HeartbeatDiscovery', - 'ServiceConnectionPoint','NetworkDiscovery','ReportingServicePoint','SystemDiscovery','PXEDistributionPoint','PullDistributionPoint', - 'SiteMaintenance','AdministrativeUser','DistributionGroup','SiteSystemServer','StatusReportingComponent','CollectionMembershipEvaluationComponent', + 'SCCMInstall','CMIniFile','Collections','Boundaries','ForestDiscovery','ClientStatusSettings','BoundaryGroups','ManagementPoint', + 'AssetIntelligencePoint','FallbackStatusPoint','SoftwareUpdatePoint','DistrubtionPoint','HeartbeatDiscovery','ServiceConnectionPoint', + 'NetworkDiscovery','ReportingServicePoint','SystemDiscovery','PXEDistributionPoint','PullDistributionPoint','SiteMaintenance', + 'AdministrativeUser','DistributionGroup','SiteSystemServer','StatusReportingComponent','CollectionMembershipEvaluationComponent', 'DistributionPointGroupMembers','SecurityScopes','UserDiscovery','SecurityRoles','ClientPushSettings','SoftwareDistributionComponent', 'MaintenanceWindows','FileReplication','EmailNotificationComponent','CMGroupDiscovery','SoftwareUpdatePointComponent','ClientSettings', 'ClientSettingsBits','ClientSettingsClientCache','ClientSettingsClientPolicy','ClientSettingsCompliance','ClientSettingsComputerAgent', diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index 9747d88e..3d43057b 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -280,27 +280,41 @@ function Get-TargetResource Specifies the communication method for the site systems that use IIS. To use HTTPS, the servers need a valid PKI web server certificate for server authentication. + This parameter is only valid on a Primary Site. + .PARAMETER ClientCheckCertificateRevocationListForSiteSystem Indicates whether clients check the Certificate Revocation List (CRL) for site systems. + This parameter is only valid on a Primary Site. + .PARAMETER UsePkiClientCertificate Indicates whether to use a PKI client certificate for client authentication when available. + This parameter is only valid on a Primary Site. + .PARAMETER UseSmsGeneratedCert Use this parameter to enable or disable the site property to Use Configuration Manager-generated certificates for HTTP site systems. + This parameter is only valid on a Primary Site. + .PARAMETER RequireSigning This option requires that clients sign data when they send to management points. + This parameter is only valid on a Primary Site. + .PARAMETER RequireSha256 Specifies if the clients sign data and communicate with site systems by using HTTP, this option requires the clients to use SHA-256 to sign the data. This option applies to clients that don't use PKI certificates. + This parameter is only valid on a Primary Site. + .PARAMETER UseEncryption Specifies to use 3DES to encrypt the client inventory data and state messages that are sent to the management point. + This parameter is only valid on a Primary Site. + .PARAMETER MaximumConcurrentSendingForAllSite Specifies the maximum number of simultaneous communications to all sites. @@ -316,14 +330,20 @@ function Get-TargetResource .PARAMETER EnableLowFreeSpaceAlert Specifies if an alert is created when the free disk space on the site database server is low. + This parameter is only valid on a Primary Site. + .PARAMETER FreeSpaceThresholdWarningGB Specifies disk space warning alert when the free disk space on the site database server falls below the specified threshold. + This parameter is only valid on a Primary Site. + .PARAMETER FreeSpaceThresholdCriticalGB Specifies disk space critical alert when the free disk space on the site database server falls below the specified threshold. + This parameter is only valid on a Primary Site. + .PARAMETER ThresholdOfSelectCollectionByDefault Specifies select collection window hides collections with membership that exceeds this value. @@ -333,47 +353,71 @@ function Get-TargetResource than this maximum value. .PARAMETER SiteSystemCollectionBehavior - Specify the behavior to take when the selected collection includes computers that + Specifies the behavior to take when the selected collection includes computers that host site systems roles. .PARAMETER EnableWakeOnLan Indicates whether to send Wake On LAN packets for scheduled activities such as deployments of software updates. + This parameter is only valid on a Primary Site. + .PARAMETER WakeOnLanTransmissionMethodType Specifies the type of transmission method to use for Wake On LAN transmissions. + This parameter is only valid on a Primary Site. + .PARAMETER RetryNumberOfSendingWakeupPacketTransmission Specifies the number of times a wake up packet is sent to a target computer. + This parameter is only valid on a Primary Site. + .PARAMETER SendingWakeupPacketTransmissionDelayMins Specifies the number of minutes to delay between wake up retries. + This parameter is only valid on a Primary Site. + .PARAMETER MaximumNumberOfSendingWakeupPacketBeforePausing Specifies the maximum number of wake up packets transmitted by this site server before pausing. + This parameter is only valid on a Primary Site. + .PARAMETER SendingWakeupPacketBeforePausingWaitSec Specifies the number of seconds to wait between sending wake up packets to a target computer. + This parameter is only valid on a Primary Site. + .PARAMETER ThreadNumberOfSendingWakeupPacket Specifies the number of threads to use when sending wake up packets. + This parameter is only valid on a Primary Site. + .PARAMETER SendingWakeupPacketTransmissionOffsetMins Specifies when wake up packets should be sent prior to a scheduled activity. + This parameter is only valid on a Primary Site. + .PARAMETER ClientCertificateCustomStoreName Specifies the store name where the client certificate is located in the Computer store when you don't use the default store of Personal. + This parameter is only valid on a Primary Site. + .PARAMETER TakeActionForMultipleCertificateMatchCriteria Specifies the action to take if multiple certificates match criteria. + This parameter is only valid on a Primary Site. + .PARAMETER ClientCertificateSelectionCriteriaType Specifies the criteria type to match in a client certificate when more than one certificate is available. + This parameter is only valid on a Primary Site. + .PARAMETER ClientCertificateSelectionCriteriaValue Specifies a value for the ClientCertificateSelectionCriteriaType parameter. + + This parameter is only valid on a Primary Site. #> function Set-TargetResource { @@ -531,23 +575,11 @@ function Set-TargetResource try { $defaultValues = @( - 'SiteCode','Comment','ClientComputerCommunicationType','MaximumConcurrentSendingForAllSite', - 'MaximumConcurrentSendingForPerSite','RetryNumberForConcurrentSending', - 'ConcurrentSendingDelayBeforeRetryingMins','ThresholdOfSelectCollectionByDefault', + 'SiteCode','Comment','MaximumConcurrentSendingForAllSite','MaximumConcurrentSendingForPerSite', + 'RetryNumberForConcurrentSending','ConcurrentSendingDelayBeforeRetryingMins','ThresholdOfSelectCollectionByDefault', 'ThresholdOfSelectCollectionMax','SiteSystemCollectionBehavior' ) - if (($PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) -and - (-not [string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $ClientComputerCommunicationType -eq 'HttpsOnly') -or - ([string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $state.ClientComputerCommunicationType -eq 'HttpsOnly')) - { - Write-Warning -Message $script:localizedData.IgnoreSMSCert - } - else - { - $defaultValues += @('UseSmsGeneratedCert') - } - if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionByDefault') -or $PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionMax')) { if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionByDefault')) @@ -578,7 +610,18 @@ function Set-TargetResource { $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','ClientCertificateCustomStoreName', - 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType') + 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType','ClientComputerCommunicationType') + + if (($PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) -and + (-not [string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $ClientComputerCommunicationType -eq 'HttpsOnly') -or + ([string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $state.ClientComputerCommunicationType -eq 'HttpsOnly')) + { + Write-Warning -Message $script:localizedData.IgnoreSMSCert + } + else + { + $defaultValues += @('UseSmsGeneratedCert') + } if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) @@ -666,7 +709,7 @@ function Set-TargetResource { foreach ($param in $PSBoundParameters.GetEnumerator()) { - if ($defaultValues -notcontains $param.Key) + if (($defaultValues -notcontains $param.Key) -and ($param.Key -ne 'verbose')) { Write-Warning -Message ($script:localizedData.IgnorePrimarySetting -f $param.Key) } @@ -704,7 +747,7 @@ function Set-TargetResource <# .SYNOPSIS - This will test the desired state. + This will set the desired state. .PARAMETER SiteCode Specifies a site code for the Configuration Manager site. @@ -716,27 +759,41 @@ function Set-TargetResource Specifies the communication method for the site systems that use IIS. To use HTTPS, the servers need a valid PKI web server certificate for server authentication. + This parameter is only valid on a Primary Site. + .PARAMETER ClientCheckCertificateRevocationListForSiteSystem Indicates whether clients check the Certificate Revocation List (CRL) for site systems. + This parameter is only valid on a Primary Site. + .PARAMETER UsePkiClientCertificate Indicates whether to use a PKI client certificate for client authentication when available. + This parameter is only valid on a Primary Site. + .PARAMETER UseSmsGeneratedCert Use this parameter to enable or disable the site property to Use Configuration Manager-generated certificates for HTTP site systems. + This parameter is only valid on a Primary Site. + .PARAMETER RequireSigning This option requires that clients sign data when they send to management points. + This parameter is only valid on a Primary Site. + .PARAMETER RequireSha256 Specifies if the clients sign data and communicate with site systems by using HTTP, this option requires the clients to use SHA-256 to sign the data. This option applies to clients that don't use PKI certificates. + This parameter is only valid on a Primary Site. + .PARAMETER UseEncryption Specifies to use 3DES to encrypt the client inventory data and state messages that are sent to the management point. + This parameter is only valid on a Primary Site. + .PARAMETER MaximumConcurrentSendingForAllSite Specifies the maximum number of simultaneous communications to all sites. @@ -752,14 +809,20 @@ function Set-TargetResource .PARAMETER EnableLowFreeSpaceAlert Specifies if an alert is created when the free disk space on the site database server is low. + This parameter is only valid on a Primary Site. + .PARAMETER FreeSpaceThresholdWarningGB Specifies disk space warning alert when the free disk space on the site database server falls below the specified threshold. + This parameter is only valid on a Primary Site. + .PARAMETER FreeSpaceThresholdCriticalGB Specifies disk space critical alert when the free disk space on the site database server falls below the specified threshold. + This parameter is only valid on a Primary Site. + .PARAMETER ThresholdOfSelectCollectionByDefault Specifies select collection window hides collections with membership that exceeds this value. @@ -769,47 +832,71 @@ function Set-TargetResource than this maximum value. .PARAMETER SiteSystemCollectionBehavior - Specify the behavior to take when the selected collection includes computers that + Specifies the behavior to take when the selected collection includes computers that host site systems roles. .PARAMETER EnableWakeOnLan Indicates whether to send Wake On LAN packets for scheduled activities such as deployments of software updates. + This parameter is only valid on a Primary Site. + .PARAMETER WakeOnLanTransmissionMethodType Specifies the type of transmission method to use for Wake On LAN transmissions. + This parameter is only valid on a Primary Site. + .PARAMETER RetryNumberOfSendingWakeupPacketTransmission Specifies the number of times a wake up packet is sent to a target computer. + This parameter is only valid on a Primary Site. + .PARAMETER SendingWakeupPacketTransmissionDelayMins Specifies the number of minutes to delay between wake up retries. + This parameter is only valid on a Primary Site. + .PARAMETER MaximumNumberOfSendingWakeupPacketBeforePausing Specifies the maximum number of wake up packets transmitted by this site server before pausing. + This parameter is only valid on a Primary Site. + .PARAMETER SendingWakeupPacketBeforePausingWaitSec Specifies the number of seconds to wait between sending wake up packets to a target computer. + This parameter is only valid on a Primary Site. + .PARAMETER ThreadNumberOfSendingWakeupPacket Specifies the number of threads to use when sending wake up packets. + This parameter is only valid on a Primary Site. + .PARAMETER SendingWakeupPacketTransmissionOffsetMins Specifies when wake up packets should be sent prior to a scheduled activity. + This parameter is only valid on a Primary Site. + .PARAMETER ClientCertificateCustomStoreName Specifies the store name where the client certificate is located in the Computer store when you don't use the default store of Personal. + This parameter is only valid on a Primary Site. + .PARAMETER TakeActionForMultipleCertificateMatchCriteria Specifies the action to take if multiple certificates match criteria. + This parameter is only valid on a Primary Site. + .PARAMETER ClientCertificateSelectionCriteriaType Specifies the criteria type to match in a client certificate when more than one certificate is available. + This parameter is only valid on a Primary Site. + .PARAMETER ClientCertificateSelectionCriteriaValue Specifies a value for the ClientCertificateSelectionCriteriaType parameter. + + This parameter is only valid on a Primary Site. #> function Test-TargetResource { @@ -968,23 +1055,11 @@ function Test-TargetResource $badInput = $false $defaultValues = @( - 'SiteCode','Comment','ClientComputerCommunicationType','MaximumConcurrentSendingForAllSite', - 'MaximumConcurrentSendingForPerSite','RetryNumberForConcurrentSending', - 'ConcurrentSendingDelayBeforeRetryingMins','ThresholdOfSelectCollectionByDefault', + 'SiteCode','Comment','MaximumConcurrentSendingForAllSite','MaximumConcurrentSendingForPerSite', + 'RetryNumberForConcurrentSending','ConcurrentSendingDelayBeforeRetryingMins','ThresholdOfSelectCollectionByDefault', 'ThresholdOfSelectCollectionMax','SiteSystemCollectionBehavior' ) - if (($PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) -and - (-not [string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $ClientComputerCommunicationType -eq 'HttpsOnly') -or - ([string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $state.ClientComputerCommunicationType -eq 'HttpsOnly')) - { - Write-Warning -Message $script:localizedData.IgnoreSMSCert - } - else - { - $defaultValues += @('UseSmsGeneratedCert') - } - if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionByDefault') -or $PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionMax')) { if ($PSBoundParameters.ContainsKey('ThresholdOfSelectCollectionByDefault')) @@ -1015,7 +1090,18 @@ function Test-TargetResource { $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','ClientCertificateCustomStoreName', - 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType') + 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType','ClientComputerCommunicationType') + + if (($PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) -and + (-not [string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $ClientComputerCommunicationType -eq 'HttpsOnly') -or + ([string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $state.ClientComputerCommunicationType -eq 'HttpsOnly')) + { + Write-Warning -Message $script:localizedData.IgnoreSMSCert + } + else + { + $defaultValues += @('UseSmsGeneratedCert') + } if ($PSBoundParameters.ContainsKey('EnableLowFreeSpaceAlert') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) @@ -1025,7 +1111,7 @@ function Test-TargetResource if (-not $PSBoundParameters.ContainsKey('FreeSpaceThresholdWarningGB') -or -not $PSBoundParameters.ContainsKey('FreeSpaceThresholdCriticalGB')) { - Write-Warning -Message $script:localizedData.AlertErrorMsg + Write-Warning -Message $script:localizedData.AlertMissing $badInput = $true } else @@ -1058,7 +1144,7 @@ function Test-TargetResource foreach ($param in $wolParams) { if (($EnableWakeOnLan -eq $false) -or ($State.EnableWakeOnLan -eq $false -and (-not $PSBoundParameters.ContainsKey('EnableWakeOnLan'))) -and - ($PSBoundParameters.ContainsKey($prarm))) + ($PSBoundParameters.ContainsKey($param))) { Write-Warning -Message ($script:localizedData.WakeFalse -f $param) } @@ -1105,7 +1191,7 @@ function Test-TargetResource { foreach ($param in $PSBoundParameters.GetEnumerator()) { - if ($defaultValues -notcontains $param.Key) + if (($defaultValues -notcontains $param.Key) -and ($param.Key -ne 'verbose')) { Write-Warning -Message ($script:localizedData.IgnorePrimarySetting -f $param.Key) } diff --git a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 index 87369f1c..97fd9c81 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/en-US/DSC_CMSiteConfiguration.strings.psd1 @@ -3,7 +3,7 @@ ConvertFrom-StringData @' IgnoreSMSCert = When specifying HttpsOnly, UseSMSGeneratedCert can not be specified, ignoring setting. IgnorePrimarySetting = Current site type is CAS, {0} does not apply to a CAS server. IgnoreAlertsSettings = EnableLowFreeSpaceAlert is disabled and FreeSpaceThreshold Warning or Critical GB was specified, ignoring settings. - CollectionError = ThresholdOfSelectCollectionByDefault of: {0} must be greater than ThresholdOfSelectCollectionMax: {1}. + CollectionError = ThresholdOfSelectCollectionByDefault of: {0} must be less than ThresholdOfSelectCollectionMax: {1}. AlertMissing = When setting EnableLowFreeSpaceAlert to true, FreeSpaceThreshold warning and critical must be specified. AlertErrorMsg = FreeSpaceThresholdCritical is greater than or equal to FreeSpaceThresholdWarning. Warning should be greater than Critical. TestState = Test-TargetResource compliance check returned: {0}. diff --git a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 index 7cf611c3..c15d08f8 100644 --- a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 +++ b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Cas.ps1 @@ -19,8 +19,6 @@ Configuration Example ThresholdOfSelectCollectionByDefault = 100 ThresholdOfSelectCollectionMax = 0 SiteSystemCollectionBehavior = 'Block' - ClientComputerCommunicationType = 'HttpsOrHttp' - UseSmsGeneratedCert = $true } } } diff --git a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 index 58728f3f..13ba0975 100644 --- a/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 +++ b/source/Examples/Resources/CMSiteConfiguration/CMSiteConfiguration_Primary.ps1 @@ -33,8 +33,8 @@ Configuration Example WakeOnLanTransmissionMethodType = 'Unicast' RetryNumberOfSendingWakeupPacketTransmission = 3 SendingWakeupPacketTransmissionDelayMins = 1 - MaximumNumberOfSendingWakeupPacketBeforePausing = 10 - SendingWakeupPacketBeforePausingWaitSec = 10000 + MaximumNumberOfSendingWakeupPacketBeforePausing = 10000 + SendingWakeupPacketBeforePausingWaitSec = 10 ThreadNumberOfSendingWakeupPacket = 3 SendingWakeupPacketTransmissionOffsetMins = 0 ClientCertificateCustomStoreName = 'Personal' diff --git a/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 b/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 index acff8bc6..74056267 100644 --- a/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 +++ b/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 @@ -292,7 +292,7 @@ function Set-OutFile if ($ResourceName -eq 'CMPullDistributionPoint') { - $sourceDP = 'SourceDistirbutionPoint' + $sourceDP = 'SourceDistributionPoint' $tester += "`t`t$($sourceDP.PadRight($updatedCount)) = @(`r`n" foreach ($item in $cPush.SourceDistributionPoint) @@ -4286,7 +4286,7 @@ Configuration ConfigureSccm foreach (`$pull in `$CMPullDistributionPoint) { `$pullRankings = @() - foreach (`$value in `$pull.SourceDP) + foreach (`$value in `$pull.SourceDistributionPoint) { `$pullRankings += DSC_CMPullDistributionPointSourceDP { From 78cd0b9a899000283fe7b9e65e7629c69b6619a7 Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Thu, 18 Nov 2021 07:39:07 -0500 Subject: [PATCH 11/16] Adding Pester Tests --- .../DSC_CMSiteConfiguration.psm1 | 8 +- tests/Unit/CMSiteConfiguration.tests.ps1 | 565 +++++++++++++++++- 2 files changed, 541 insertions(+), 32 deletions(-) diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index 3d43057b..ff20e039 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -187,7 +187,7 @@ function Get-TargetResource [boolean]$threeDes = ($siteSecurity | Where-Object -FilterScript {$_.PropertyName -eq 'Use Encryption'}).Value # Wake On LAN - $wol = Get-CMSiteComponent -ComponentName 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' -sitecode $SiteCode + $wol = Get-CMSiteComponent -ComponentName 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' -SiteCode $SiteCode if ($wol.Flag -eq 6) { @@ -662,7 +662,7 @@ function Set-TargetResource foreach ($param in $wolParams) { if (($EnableWakeOnLan -eq $false) -or ($State.EnableWakeOnLan -eq $false -and (-not $PSBoundParameters.ContainsKey('EnableWakeOnLan'))) -and - ($PSBoundParameters.ContainsKey($prarm))) + ($PSBoundParameters.ContainsKey($param))) { Write-Warning -Message ($script:localizedData.WakeFalse -f $param) } @@ -686,7 +686,6 @@ function Set-TargetResource if (-not $PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue')) { throw ($script:localizedData.MissingCertValue -f $ClientCertificateSelectionCriteriaType) - $badInput = $true } else { @@ -697,8 +696,8 @@ function Set-TargetResource elseif ($PSBoundParameters.ContainsKey('ClientCertificateSelectionCriteriaValue')) { throw $script:localizedData.MissingCertType - $badInput = $true } + if ($PSBoundParameters.ContainsKey('ClientCertificateCustomStoreName') -and [string]::IsNullOrEmpty($ClientCertificateCustomStoreName)) { $PSBoundParameters.ClientCertificateCustomStoreName = 'Personal' @@ -1181,6 +1180,7 @@ function Test-TargetResource Write-Warning -Message $script:localizedData.MissingCertType $badInput = $true } + if ($PSBoundParameters.ContainsKey('ClientCertificateCustomStoreName') -and [string]::IsNullOrEmpty($ClientCertificateCustomStoreName)) { $PSBoundParameters.ClientCertificateCustomStoreName = 'Personal' diff --git a/tests/Unit/CMSiteConfiguration.tests.ps1 b/tests/Unit/CMSiteConfiguration.tests.ps1 index aa6f51a9..865355ef 100644 --- a/tests/Unit/CMSiteConfiguration.tests.ps1 +++ b/tests/Unit/CMSiteConfiguration.tests.ps1 @@ -152,6 +152,18 @@ try PropertyName = 'Enforce Message Signing' Value = 1 } + @{ + PropertyName = 'Certificate Store' + Value1 = 'SMSStore' + } + @{ + PropertyName = 'Select First Certificate' + Value = 0 + } + @{ + PropertyName = 'Certificate Selection Criteria' + Value1 = '' + } ) } @@ -169,6 +181,18 @@ try PropertyName = 'Enforce Message Signing' Value = 1 } + @{ + PropertyName = 'Certificate Store' + Value1 = 'SMSStore' + } + @{ + PropertyName = 'Select First Certificate' + Value = 0 + } + @{ + PropertyName = 'Certificate Selection Criteria' + Value1 = 'SubjectStr:Test' + } ) } @@ -186,6 +210,18 @@ try PropertyName = 'Enforce Message Signing' Value = 1 } + @{ + PropertyName = 'Certificate Store' + Value1 = 'SMSStore' + } + @{ + PropertyName = 'Select First Certificate' + Value = 0 + } + @{ + PropertyName = 'Certificate Selection Criteria' + Value1 = 'SubjectAttr:Test' + } ) } @@ -203,6 +239,18 @@ try PropertyName = 'Enforce Message Signing' Value = 1 } + @{ + PropertyName = 'Certificate Store' + Value1 = 'SMSStore' + } + @{ + PropertyName = 'Select First Certificate' + Value = 0 + } + @{ + PropertyName = 'Certificate Selection Criteria' + Value1 = 'SubjectAttr:Test' + } ) } @@ -220,6 +268,18 @@ try PropertyName = 'Enforce Message Signing' Value = 1 } + @{ + PropertyName = 'Certificate Store' + Value1 = 'SMSStore' + } + @{ + PropertyName = 'Select First Certificate' + Value = 0 + } + @{ + PropertyName = 'Certificate Selection Criteria' + Value1 = 'SubjectAttr:Test' + } ) } @@ -237,6 +297,18 @@ try PropertyName = 'Enforce Message Signing' Value = 1 } + @{ + PropertyName = 'Certificate Store' + Value1 = 'SMSStore' + } + @{ + PropertyName = 'Select First Certificate' + Value = 0 + } + @{ + PropertyName = 'Certificate Selection Criteria' + Value1 = 'SubjectAttr:Test' + } ) } @@ -254,6 +326,18 @@ try PropertyName = 'Enforce Message Signing' Value = 1 } + @{ + PropertyName = 'Certificate Store' + Value1 = 'SMSStore' + } + @{ + PropertyName = 'Select First Certificate' + Value = 0 + } + @{ + PropertyName = 'Certificate Selection Criteria' + Value1 = 'SubjectAttr:Test' + } ) } @@ -271,6 +355,18 @@ try PropertyName = 'Enforce Message Signing' Value = 1 } + @{ + PropertyName = 'Certificate Store' + Value1 = 'SMSStore' + } + @{ + PropertyName = 'Select First Certificate' + Value = 0 + } + @{ + PropertyName = 'Certificate Selection Criteria' + Value1 = 'SubjectAttr:Test' + } ) } @@ -288,6 +384,18 @@ try PropertyName = 'Enforce Message Signing' Value = 1 } + @{ + PropertyName = 'Certificate Store' + Value1 = 'SMSStore' + } + @{ + PropertyName = 'Select First Certificate' + Value = 0 + } + @{ + PropertyName = 'Certificate Selection Criteria' + Value1 = 'SubjectAttr:Test' + } ) } @@ -296,22 +404,12 @@ try Name = '$DatabaseFreeSpaceWarningName' PropertyList = @{ ParameterValues = @( - '33105' '51' ) } } ) - $getCMAlertDisabled = @( - @{ - Name = '$DatabaseFreeSpaceWarningName' - PropertyList = @{ - ParameterValues = '33105' - } - } - ) - $getPolicyProvider = @{ Props = @( @{ @@ -321,6 +419,81 @@ try ) } + $wolDisabled = @{ + Flag = 1 + } + + $wolUnicast = @{ + Flag = 6 + Props = @( + @{ + PropertyName = 'SendRetryMax' + Value = 3 + } + @{ + PropertyName = 'SendRetryInterval' + Value = 60 + } + @{ + PropertyName = 'SendThrottleMax' + Value = 10000 + } + @{ + PropertyName = 'SendThrottleInterval' + Value = 10 + } + @{ + PropertyName = 'MaxThreads' + Value = 3 + } + @{ + PropertyName = 'SendMode' + Value = 1 + } + ) + + } + + $wolBroadcast = @{ + Flag = 6 + Props = @( + @{ + PropertyName = 'SendRetryMax' + Value = 3 + } + @{ + PropertyName = 'SendRetryInterval' + Value = 60 + } + @{ + PropertyName = 'SendThrottleMax' + Value = 10000 + } + @{ + PropertyName = 'SendThrottleInterval' + Value = 10 + } + @{ + PropertyName = 'MaxThreads' + Value = 3 + } + @{ + PropertyName = 'SendMode' + Value = 2 + } + ) + + } + + $wolComponent = @{ + Props = @( + @{ + PropertyName = 'ScheduleOffset' + Value = 600 + } + ) + } + Mock -CommandName Get-CMSiteComponent -MockWith { $getLanSenderReturn } -ParameterFilter {$ComponentName -match 'SMS_LAN_Sender'} Mock -CommandName Get-CMSiteComponent -MockWith { $getPolicyProvider } -ParameterFilter {$ComponentName -match 'SMS_POLICY_PROVIDER'} Mock -CommandName Import-ConfigMgrPowerShellModule @@ -359,9 +532,11 @@ try } It 'Should return desired result when site configuration settings are HTTPS Only and blocked Primary' { - Mock -CommandName Get-CMAlert -MockWith { $getCMAlertDisabled } + Mock -CommandName Get-CMAlert -MockWith { $null } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefBlockReturn } - Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager31Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager31Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolDisabled } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' } + Mock -CommandName Get-CMSiteComponent -MockWith { $null } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_MANAGER' } $result = Get-TargetResource @getInput $result | Should -BeOfType System.Collections.HashTable @@ -385,12 +560,26 @@ try $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Block' $result.SiteType | Should -Be -ExpectedValue 'Primary' + $result.EnableWakeOnLan | Should -Be -ExpectedValue $false + $result.WakeOnLanTransmissionMethodType | Should -Be -ExpectedValue $null + $result.RetryNumberOfSendingWakeupPacketTransmission | Should -Be -ExpectedValue $null + $result.SendingWakeupPacketTransmissionDelayMins | Should -Be -ExpectedValue $null + $result.MaximumNumberOfSendingWakeupPacketBeforePausing | Should -Be -ExpectedValue $null + $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue $null + $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue $null + $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 0 + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' + $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'ClientAuthentication' + $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue '' } It 'Should return desired result when site configuration settings are HTTPS Only with CRL and warn' { Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } - Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager63Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager63Return } -ParameterFilter { $ComponentName -match 'SMS_Site_Component_Manager' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolBroadcast } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolComponent } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_MANAGER' } $result = Get-TargetResource @getInput $result | Should -BeOfType System.Collections.HashTable @@ -414,12 +603,26 @@ try $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' $result.SiteType | Should -Be -ExpectedValue 'Primary' + $result.EnableWakeOnLan | Should -Be -ExpectedValue $true + $result.WakeOnLanTransmissionMethodType | Should -Be -ExpectedValue 'SubnetDirectedBroadcasts' + $result.RetryNumberOfSendingWakeupPacketTransmission | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionDelayMins | Should -Be -ExpectedValue 1 + $result.MaximumNumberOfSendingWakeupPacketBeforePausing | Should -Be -ExpectedValue 10000 + $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue 10 + $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 10 + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' + $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'CertificateSubjectContainsString' + $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue 'Test' } It 'Should return desired result when site configuration settings are HTTPS\HTTP only' { Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } - Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager192Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager192Return } -ParameterFilter { $ComponentName -match 'SMS_Site_Component_Manager' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolUnicast } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolComponent } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_MANAGER' } $result = Get-TargetResource @getInput $result | Should -BeOfType System.Collections.HashTable @@ -443,12 +646,26 @@ try $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' $result.SiteType | Should -Be -ExpectedValue 'Primary' + $result.EnableWakeOnLan | Should -Be -ExpectedValue $true + $result.WakeOnLanTransmissionMethodType | Should -Be -ExpectedValue 'Unicast' + $result.RetryNumberOfSendingWakeupPacketTransmission | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionDelayMins | Should -Be -ExpectedValue 1 + $result.MaximumNumberOfSendingWakeupPacketBeforePausing | Should -Be -ExpectedValue 10000 + $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue 10 + $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 10 + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' + $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'CertificateSubjectOrSanIncludesAtrributes' + $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue 'Test' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and CRL' { Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } - Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager224Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager224Return } -ParameterFilter { $ComponentName -match 'SMS_Site_Component_Manager' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolUnicast } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolComponent } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_MANAGER' } $result = Get-TargetResource @getInput $result | Should -BeOfType System.Collections.HashTable @@ -472,12 +689,26 @@ try $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' $result.SiteType | Should -Be -ExpectedValue 'Primary' + $result.EnableWakeOnLan | Should -Be -ExpectedValue $true + $result.WakeOnLanTransmissionMethodType | Should -Be -ExpectedValue 'Unicast' + $result.RetryNumberOfSendingWakeupPacketTransmission | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionDelayMins | Should -Be -ExpectedValue 1 + $result.MaximumNumberOfSendingWakeupPacketBeforePausing | Should -Be -ExpectedValue 10000 + $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue 10 + $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 10 + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' + $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'CertificateSubjectOrSanIncludesAtrributes' + $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue 'Test' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and PKI' { Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } - Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager448Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager448Return } -ParameterFilter { $ComponentName -match 'SMS_Site_Component_Manager' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolUnicast } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolComponent } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_MANAGER' } $result = Get-TargetResource @getInput $result | Should -BeOfType System.Collections.HashTable @@ -501,12 +732,26 @@ try $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' $result.SiteType | Should -Be -ExpectedValue 'Primary' + $result.EnableWakeOnLan | Should -Be -ExpectedValue $true + $result.WakeOnLanTransmissionMethodType | Should -Be -ExpectedValue 'Unicast' + $result.RetryNumberOfSendingWakeupPacketTransmission | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionDelayMins | Should -Be -ExpectedValue 1 + $result.MaximumNumberOfSendingWakeupPacketBeforePausing | Should -Be -ExpectedValue 10000 + $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue 10 + $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 10 + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' + $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'CertificateSubjectOrSanIncludesAtrributes' + $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue 'Test' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and PKI and CRL' { Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } - Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager480Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager480Return } -ParameterFilter { $ComponentName -match 'SMS_Site_Component_Manager' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolUnicast } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolComponent } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_MANAGER' } $result = Get-TargetResource @getInput $result | Should -BeOfType System.Collections.HashTable @@ -530,12 +775,26 @@ try $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' $result.SiteType | Should -Be -ExpectedValue 'Primary' + $result.EnableWakeOnLan | Should -Be -ExpectedValue $true + $result.WakeOnLanTransmissionMethodType | Should -Be -ExpectedValue 'Unicast' + $result.RetryNumberOfSendingWakeupPacketTransmission | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionDelayMins | Should -Be -ExpectedValue 1 + $result.MaximumNumberOfSendingWakeupPacketBeforePausing | Should -Be -ExpectedValue 10000 + $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue 10 + $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 10 + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' + $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'CertificateSubjectOrSanIncludesAtrributes' + $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue 'Test' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and SCCM Cert' { Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } - Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager1216Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager1216Return } -ParameterFilter { $ComponentName -match 'SMS_Site_Component_Manager' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolUnicast } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolComponent } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_MANAGER' } $result = Get-TargetResource @getInput $result | Should -BeOfType System.Collections.HashTable @@ -559,12 +818,26 @@ try $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' $result.SiteType | Should -Be -ExpectedValue 'Primary' + $result.EnableWakeOnLan | Should -Be -ExpectedValue $true + $result.WakeOnLanTransmissionMethodType | Should -Be -ExpectedValue 'Unicast' + $result.RetryNumberOfSendingWakeupPacketTransmission | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionDelayMins | Should -Be -ExpectedValue 1 + $result.MaximumNumberOfSendingWakeupPacketBeforePausing | Should -Be -ExpectedValue 10000 + $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue 10 + $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 10 + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' + $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'CertificateSubjectOrSanIncludesAtrributes' + $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue 'Test' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and SCCM Cert and CRL' { Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } - Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager1248Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager1248Return } -ParameterFilter { $ComponentName -match 'SMS_Site_Component_Manager' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolUnicast } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolComponent } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_MANAGER' } $result = Get-TargetResource @getInput $result | Should -BeOfType System.Collections.HashTable @@ -588,12 +861,26 @@ try $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' $result.SiteType | Should -Be -ExpectedValue 'Primary' + $result.EnableWakeOnLan | Should -Be -ExpectedValue $true + $result.WakeOnLanTransmissionMethodType | Should -Be -ExpectedValue 'Unicast' + $result.RetryNumberOfSendingWakeupPacketTransmission | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionDelayMins | Should -Be -ExpectedValue 1 + $result.MaximumNumberOfSendingWakeupPacketBeforePausing | Should -Be -ExpectedValue 10000 + $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue 10 + $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 10 + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' + $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'CertificateSubjectOrSanIncludesAtrributes' + $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue 'Test' } It 'Should return desired result when site configuration settings are HTTPS\HTTP and SCCM Cert and PKI and CRL' { Mock -CommandName Get-CMAlert -MockWith { $getCMAlertEnabled } Mock -CommandName Get-CMSiteDefinition -MockWith { $getSiteDefWarnReturn } - Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager1504Return } -ParameterFilter {$ComponentName -match 'SMS_Site_Component_Manager'} + Mock -CommandName Get-CMSiteComponent -MockWith { $getSiteCompManager1504Return } -ParameterFilter { $ComponentName -match 'SMS_Site_Component_Manager' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolUnicast } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_COMMUNICATION_MANAGER' } + Mock -CommandName Get-CMSiteComponent -MockWith { $wolComponent } -ParameterFilter { $ComponentName -match 'SMS_WAKEONLAN_MANAGER' } $result = Get-TargetResource @getInput $result | Should -BeOfType System.Collections.HashTable @@ -617,6 +904,18 @@ try $result.ThresholdOfSelectCollectionMax | Should -Be -ExpectedValue 200 $result.SiteSystemCollectionBehavior | Should -Be -ExpectedValue 'Warn' $result.SiteType | Should -Be -ExpectedValue 'Primary' + $result.EnableWakeOnLan | Should -Be -ExpectedValue $true + $result.WakeOnLanTransmissionMethodType | Should -Be -ExpectedValue 'Unicast' + $result.RetryNumberOfSendingWakeupPacketTransmission | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionDelayMins | Should -Be -ExpectedValue 1 + $result.MaximumNumberOfSendingWakeupPacketBeforePausing | Should -Be -ExpectedValue 10000 + $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue 10 + $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue 3 + $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 10 + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' + $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'CertificateSubjectOrSanIncludesAtrributes' + $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue 'Test' } } } @@ -644,6 +943,18 @@ try ThresholdOfSelectCollectionMax = 1000 SiteSystemCollectionBehavior = 'Warn' SiteType = 'Primary' + EnableWakeOnLan = $true + WakeOnLanTransmissionMethodType = 'Unicast' + RetryNumberOfSendingWakeupPacketTransmission = 1 + SendingWakeupPacketTransmissionDelayMins = 10000 + MaximumNumberOfSendingWakeupPacketBeforePausing = 10 + SendingWakeupPacketBeforePausingWaitSec = 3 + ThreadNumberOfSendingWakeupPacket = 10 + SendingWakeupPacketTransmissionOffsetMins = 10 + ClientCertificateCustomStoreName = 'SMSStore' + TakeActionForMultipleCertificateMatchCriteria = 'SelectCertificateWithLongestValidityPeriod' + ClientCertificateSelectionCriteriaType = 'ClientAuthentication' + ClientCertificateSelectionCriteriaValue = '' } Mock -CommandName Import-ConfigMgrPowerShellModule @@ -695,11 +1006,10 @@ try FreeSpaceThresholdCriticalGB = 10 } - $inputSmsCertWithHttpsOnly = @{ - SiteCode = 'Lab' - Comment = 'Site Lab' - ClientComputerCommunicationType = 'HttpsOnly' - UseSmsGeneratedCert = $true + $inputDefaultThresholdMismatch = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + ThresholdOfSelectCollectionByDefault = 101 } $collectionDefault = @{ @@ -717,12 +1027,42 @@ try FreeSpaceThresholdWarningGB = 20 FreeSpaceThresholdCriticalGB = 10 } + + $ignoreSMSCert = @{ + SiteCode = 'Lab' + UseSmsGeneratedCert = $true + ClientComputerCommunicationType = 'HttpsOnly' + + } + + $inputWakeFalse = @{ + SiteCode = 'Lab' + EnableWakeOnLan = $false + RetryNumberOfSendingWakeupPacketTransmission = 3 + } + + $inputBadAuth = @{ + SiteCode = 'Lab' + ClientCertificateSelectionCriteriaType = 'ClientAuthentication' + ClientCertificateSelectionCriteriaValue = 'Test' + } + + $inputAuthString = @{ + SiteCode = 'Lab' + ClientCertificateSelectionCriteriaType = 'CertificateSubjectContainsString' + ClientCertificateSelectionCriteriaValue = 'Test' + } + + $inputNullCert = @{ + SiteCode = 'Lab' + ClientCertificateCustomStoreName = '' + } } It 'Should call expected commands for when changing settings for Primary' { Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } - Set-TargetResource @inputSmsCertWithHttpsOnly + Set-TargetResource @inputDefaultThresholdMismatch Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It @@ -732,7 +1072,7 @@ try It 'Should call expected commands for when changing settings for Cas' { Mock -CommandName Get-TargetResource -MockWith { $getReturnCas } - Set-TargetResource @inputSmsCertWithHttpsOnly + Set-TargetResource @inputDefaultThresholdMismatch Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It @@ -769,6 +1109,16 @@ try Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It } + It 'Should call expected commands when specifying UseSmsGeneratedCert and setting ClientComputerCommunicationType to HttpsOnly' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + Set-TargetResource @ignoreSMSCert + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It + } + It 'Should call expected commands for when changing settings for Cas and specifying Primary only settings' { Mock -CommandName Get-TargetResource -MockWith { $getReturnCas } @@ -798,6 +1148,46 @@ try Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It } + + It 'Should call expected commands Wake On Lan false is specified along with additional Wake On Lan parameters' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + Set-TargetResource @inputWakeFalse + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It + } + + It 'Should call expected commands when ClientCertificateSelectionCriteriaType is erroniously specified' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + Set-TargetResource @inputBadAuth + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It + } + + It 'Should call expected commands when ClientCertificateSelectionCriteriaType is changed' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + Set-TargetResource @inputAuthString + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It + } + + It 'Should call expected commands when changing the certificate store with a null string input' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + Set-TargetResource @inputNullCert + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 1 -Scope It + } } Context 'When Set-TargetResource throws' { @@ -823,9 +1213,21 @@ try FreeSpaceThresholdCriticalGB = 10 } - $collectionError = 'ThresholdOfSelectCollectionByDefault of: 9 must be greater than ThresholdOfSelectCollectionMax: 1.' + $inputMissingValue = @{ + SiteCode = 'Lab' + ClientCertificateSelectionCriteriaType = 'CertificateSubjectContainsString' + } + + $inputMissingType = @{ + SiteCode = 'Lab' + ClientCertificateSelectionCriteriaValue = 'Test' + } + + $collectionError = 'ThresholdOfSelectCollectionByDefault of: 9 must be less than ThresholdOfSelectCollectionMax: 1.' $alertMissing = 'When setting EnableLowFreeSpaceAlert to true, FreeSpaceThreshold warning and critical must be specified.' $alertErrorMsg = 'FreeSpaceThresholdCritical is greater than or equal to FreeSpaceThresholdWarning. Warning should be greater than Critical.' + $certValueError = 'When ClientCertificateSelectionCriteriaType is specified as CertificateSubjectContainsString, ClientCertificateSelectionCriteriaValue is required.' + $missingCertType = 'When ClientCertificateSelectionCriteriaValue is specified, ClientCertificateSelectionCriteriaType is required.' } It 'Should call expected commands and throw when collection default is greater than collection max' { @@ -857,6 +1259,26 @@ try Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It } + + It 'Should call expected commands and throw when ClientCertificateSelectionCriteriaValue is required but omitted' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + { Set-TargetResource @inputMissingValue } | Should -Throw -ExpectedMessage $certValueError + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It + } + + It 'Should call expected commands and throw when ClientCertificateSelectionCriteriaType is required but omitted' { + Mock -CommandName Get-TargetResource -MockWith { $getReturnAll } + + { Set-TargetResource @inputMissingType } | Should -Throw -ExpectedMessage $missingCertType + Assert-MockCalled Import-ConfigMgrPowerShellModule -Exactly -Times 1 -Scope It + Assert-MockCalled Set-Location -Exactly -Times 2 -Scope It + Assert-MockCalled Get-TargetResource -Exactly -Times 1 -Scope It + Assert-MockCalled Set-CMSite -Exactly -Times 0 -Scope It + } } } @@ -883,6 +1305,18 @@ try ThresholdOfSelectCollectionMax = 1000 SiteSystemCollectionBehavior = 'Warn' SiteType = 'Primary' + EnableWakeOnLan = $true + WakeOnLanTransmissionMethodType = 'Unicast' + RetryNumberOfSendingWakeupPacketTransmission = 1 + SendingWakeupPacketTransmissionDelayMins = 10000 + MaximumNumberOfSendingWakeupPacketBeforePausing = 10 + SendingWakeupPacketBeforePausingWaitSec = 3 + ThreadNumberOfSendingWakeupPacket = 10 + SendingWakeupPacketTransmissionOffsetMins = 10 + ClientCertificateCustomStoreName = 'SMSStore' + TakeActionForMultipleCertificateMatchCriteria = 'SelectCertificateWithLongestValidityPeriod' + ClientCertificateSelectionCriteriaType = 'ClientAuthentication' + ClientCertificateSelectionCriteriaValue = '' } $getReturnCas = @{ @@ -929,6 +1363,18 @@ try ThresholdOfSelectCollectionMax = 1000 SiteSystemCollectionBehavior = 'Warn' SiteType = 'Primary' + EnableWakeOnLan = $true + WakeOnLanTransmissionMethodType = 'Unicast' + RetryNumberOfSendingWakeupPacketTransmission = 1 + SendingWakeupPacketTransmissionDelayMins = 10000 + MaximumNumberOfSendingWakeupPacketBeforePausing = 10 + SendingWakeupPacketBeforePausingWaitSec = 3 + ThreadNumberOfSendingWakeupPacket = 10 + SendingWakeupPacketTransmissionOffsetMins = 10 + ClientCertificateCustomStoreName = 'SMSStore' + TakeActionForMultipleCertificateMatchCriteria = 'SelectCertificateWithLongestValidityPeriod' + ClientCertificateSelectionCriteriaType = 'ClientAuthentication' + ClientCertificateSelectionCriteriaValue = '' } $inputMatch = @{ @@ -1011,6 +1457,39 @@ try ThresholdOfSelectCollectionMax = 1 } + $inputWakeFalse = @{ + SiteCode = 'Lab' + EnableWakeOnLan = $false + RetryNumberOfSendingWakeupPacketTransmission = 3 + } + + $inputBadAuth = @{ + SiteCode = 'Lab' + ClientCertificateSelectionCriteriaType = 'ClientAuthentication' + ClientCertificateSelectionCriteriaValue = 'Test' + } + + $inputMissingValue = @{ + SiteCode = 'Lab' + ClientCertificateSelectionCriteriaType = 'CertificateSubjectContainsString' + } + + $inputMissingType = @{ + SiteCode = 'Lab' + ClientCertificateSelectionCriteriaValue = 'Test' + } + + $inputAuthString = @{ + SiteCode = 'Lab' + ClientCertificateSelectionCriteriaType = 'CertificateSubjectContainsString' + ClientCertificateSelectionCriteriaValue = 'Test' + } + + $inputNullCert = @{ + SiteCode = 'Lab' + ClientCertificateCustomStoreName = '' + } + Mock -CommandName Import-ConfigMgrPowerShellModule Mock -CommandName Set-Location } @@ -1064,6 +1543,36 @@ try Test-TargetResource @inputDisableAlertCrit | Should -Be $false } + + It 'Should return desired result false when WOL is specified false and warn for bad params' { + + Test-TargetResource @inputWakeFalse | Should -Be $false + } + + It 'Should return desired result true fpr Cert Selection type and warn for bad params' { + + Test-TargetResource @inputBadAuth | Should -Be $true + } + + It 'Should return desired result false when ClientCertificateSelectionCriteriaValue is missing' { + + Test-TargetResource @inputMissingValue | Should -Be $false + } + + It 'Should return desired result false when ClientCertificateSelectionCriteriaType is missing' { + + Test-TargetResource @inputMissingType | Should -Be $false + } + + It 'Should return desired result false when ClientCertificateSelectionCriteriaType is mismatched' { + + Test-TargetResource @inputAuthString | Should -Be $false + } + + It 'Should return desired result false when Certificate Store mismatched and warn when null' { + + Test-TargetResource @inputNullCert | Should -Be $false + } } Context 'When running Test-TargetResource for Cas Server' { From da67a6c5e7d03b72a65de94bb91737d158d4a47e Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Thu, 18 Nov 2021 11:46:45 -0500 Subject: [PATCH 12/16] Adding Reverse DSC --- .../ConfigMgrCBDsc.ReverseDsc.psm1 | 1076 ++++++++++++++++- 1 file changed, 1074 insertions(+), 2 deletions(-) diff --git a/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 b/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 index 74056267..8aefeee8 100644 --- a/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 +++ b/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 @@ -645,6 +645,10 @@ Configuration ConfigureSccm [HashTable] `$CMServiceConnectionPoint, + [Parameter()] + [HashTable] + `$CMSiteConfiguration, + [Parameter()] [HashTable[]] `$CMSiteMaintenance, @@ -3685,6 +3689,1074 @@ Configuration ConfigureSccm } } + if (`$CMSiteConfiguration) + { + if (`$CMSiteConfiguration.SiteType -eq 'Cas') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + } + } + else + { + if (`$CMSiteConfiguration.EnableWakeOnLan -eq `$false) + { + if (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + } + else + { + if (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB + FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + } + } + elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = 'Personal' + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + { + CMSiteConfiguration CMSiteConfiguration + { + SiteCode = `$SiteCode + Comment = `$CMSiteConfiguration.Comment + MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite + MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite + RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending + ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins + ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault + ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax + SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior + EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert + ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType + ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem + UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate + UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert + RequireSha256 = `$CMSiteConfiguration.RequireSha256 + RequireSigning = `$CMSiteConfiguration.RequireSigning + UseEncryption = `$CMSiteConfiguration.UseEncryption + EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan + WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType + RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission + SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins + MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing + SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec + ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket + SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins + ClientCertificateCustomStoreName = `$CMSiteConfiguration.ClientCertificateCustomStoreName + TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria + ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType + ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue + } + } + } + } + } + if (`$CMSiteSystemServer) { foreach (`$item in `$CMSiteSystemServer) @@ -12194,9 +13266,9 @@ function Set-ConfigMgrCBDscReverse } else { - $excluded = @('SiteCode','ClientCheckCertificateRevocationListForSiteSystem', + $excluded = @('SiteCode','ClientCheckCertificateRevocationListForSiteSystem', 'ClientComputerCommunicationType' 'UsePkiClientCertificate', 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert', - 'FreeSpaceThresholdCriticalGB','FreeSpaceThresholdWarningGB','SiteType') + 'FreeSpaceThresholdCriticalGB','FreeSpaceThresholdWarningGB','SiteType','UseSmsGeneratedCert') } $params = @{ From 4145ad2a789b06c8bfb5ac4698d1ad925f1774cf Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Fri, 19 Nov 2021 09:59:08 -0500 Subject: [PATCH 13/16] Updating Reverse DSC and fixing Build Pipeline --- azure-pipelines.yml | 4 + build.yaml | 1 + .../DSC_CMSiteConfiguration.psm1 | 11 +- .../ConfigMgrCBDsc.ReverseDsc.psm1 | 562 +----------------- tests/Unit/CMSiteConfiguration.tests.ps1 | 4 +- 5 files changed, 38 insertions(+), 544 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 45f43004..fd7dfd53 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -223,6 +223,8 @@ stages: env: GitHubToken: $(GitHubToken) GalleryApiToken: $(GalleryApiToken) + ReleaseBranch: master + MainGitBranch: master - task: PowerShell@2 name: sendChangelogPR displayName: 'Send Changelog PR' @@ -232,3 +234,5 @@ stages: pwsh: true env: GitHubToken: $(GitHubToken) + ReleaseBranch: master + MainGitBranch: master diff --git a/build.yaml b/build.yaml index 508feabb..8f1942ae 100644 --- a/build.yaml +++ b/build.yaml @@ -75,6 +75,7 @@ DscTest: - output ExcludeModuleFile: - Modules/DscResource.Common + MainGitBranch: master Resolve-Dependency: Gallery: '' diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index ff20e039..475b743d 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -135,7 +135,16 @@ function Get-TargetResource { switch ($item.PropertyName) { - 'Certificate Store' { $customStore = $item.Value1 } + 'Certificate Store' { if ([string]::IsNullOrEmpty($item.Value1)) + { + $customStore = 'Personal' + } + else + { + $customStore = $item.Value1 + } + } + 'Select First Certificate' { $certSel = @('FailSelectionAndSendErrorMessage','SelectCertificateWithLongestValidityPeriod')[($item.Value)] } 'Certificate Selection Criteria' { $criteria = $item.Value1 diff --git a/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 b/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 index 8aefeee8..5c8e4808 100644 --- a/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 +++ b/source/Modules/ConfigMgrCBDsc.ReverseDsc/ConfigMgrCBDsc.ReverseDsc.psm1 @@ -3691,7 +3691,7 @@ Configuration ConfigureSccm if (`$CMSiteConfiguration) { - if (`$CMSiteConfiguration.SiteType -eq 'Cas') + if (`$CMSiteConfiguration.EnableWakeOnLan -eq `$null) { CMSiteConfiguration CMSiteConfiguration { @@ -3710,37 +3710,8 @@ Configuration ConfigureSccm { if (`$CMSiteConfiguration.EnableWakeOnLan -eq `$false) { - if (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB - FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - } - } - elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + if(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -3768,38 +3739,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB - FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -3828,35 +3769,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -3882,36 +3796,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -3938,38 +3824,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB - FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -3998,39 +3854,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB - FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4060,36 +3885,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4116,37 +3913,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4177,44 +3945,8 @@ Configuration ConfigureSccm } else { - if (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB - FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType - RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission - SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins - MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing - SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec - ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket - SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - } - } - elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + if(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4249,45 +3981,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB - FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType - RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission - SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins - MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing - SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec - ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket - SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4323,42 +4018,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType - RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission - SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins - MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing - SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec - ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket - SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4391,43 +4052,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType - RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission - SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins - MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing - SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec - ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket - SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOnly' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4461,45 +4087,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB - FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType - RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission - SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins - MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing - SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec - ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket - SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4535,46 +4124,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - FreeSpaceThresholdWarningGB = `$CMSiteConfiguration.FreeSpaceThresholdWarningGB - FreeSpaceThresholdCriticalGB = `$CMSiteConfiguration.FreeSpaceThresholdCriticalGB - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType - RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission - SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins - MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing - SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec - ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket - SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$true -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4611,43 +4162,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType - RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission - SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins - MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing - SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec - ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket - SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -eq 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -4681,44 +4197,8 @@ Configuration ConfigureSccm ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType } } - elseif (`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -eq '') - { - CMSiteConfiguration CMSiteConfiguration - { - SiteCode = `$SiteCode - Comment = `$CMSiteConfiguration.Comment - MaximumConcurrentSendingForAllSite = `$CMSiteConfiguration.MaximumConcurrentSendingForAllSite - MaximumConcurrentSendingForPerSite = `$CMSiteConfiguration.MaximumConcurrentSendingForPerSite - RetryNumberForConcurrentSending = `$CMSiteConfiguration.RetryNumberForConcurrentSending - ConcurrentSendingDelayBeforeRetryingMins = `$CMSiteConfiguration.ConcurrentSendingDelayBeforeRetryingMins - ThresholdOfSelectCollectionByDefault = `$CMSiteConfiguration.ThresholdOfSelectCollectionByDefault - ThresholdOfSelectCollectionMax = `$CMSiteConfiguration.ThresholdOfSelectCollectionMax - SiteSystemCollectionBehavior = `$CMSiteConfiguration.SiteSystemCollectionBehavior - EnableLowFreeSpaceAlert = `$CMSiteConfiguration.EnableLowFreeSpaceAlert - ClientComputerCommunicationType = `$CMSiteConfiguration.ClientComputerCommunicationType - ClientCheckCertificateRevocationListForSiteSystem = `$CMSiteConfiguration.ClientCheckCertificateRevocationListForSiteSystem - UsePkiClientCertificate = `$CMSiteConfiguration.UsePkiClientCertificate - UseSmsGeneratedCert = `$CMSiteConfiguration.UseSmsGeneratedCert - RequireSha256 = `$CMSiteConfiguration.RequireSha256 - RequireSigning = `$CMSiteConfiguration.RequireSigning - UseEncryption = `$CMSiteConfiguration.UseEncryption - EnableWakeOnLan = `$CMSiteConfiguration.EnableWakeOnLan - WakeOnLanTransmissionMethodType = `$CMSiteConfiguration.WakeOnLanTransmissionMethodType - RetryNumberOfSendingWakeupPacketTransmission = `$CMSiteConfiguration.RetryNumberOfSendingWakeupPacketTransmission - SendingWakeupPacketTransmissionDelayMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionDelayMins - MaximumNumberOfSendingWakeupPacketBeforePausing = `$CMSiteConfiguration.MaximumNumberOfSendingWakeupPacketBeforePausing - SendingWakeupPacketBeforePausingWaitSec = `$CMSiteConfiguration.SendingWakeupPacketBeforePausingWaitSec - ThreadNumberOfSendingWakeupPacket = `$CMSiteConfiguration.ThreadNumberOfSendingWakeupPacket - SendingWakeupPacketTransmissionOffsetMins = `$CMSiteConfiguration.SendingWakeupPacketTransmissionOffsetMins - ClientCertificateCustomStoreName = 'Personal' - TakeActionForMultipleCertificateMatchCriteria = `$CMSiteConfiguration.TakeActionForMultipleCertificateMatchCriteria - ClientCertificateSelectionCriteriaType = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType - ClientCertificateSelectionCriteriaValue = `$CMSiteConfiguration.ClientCertificateSelectionCriteriaValue - } - } elseif(`$CMSiteConfiguration.ClientComputerCommunicationType -eq 'HttpsOrHttp' -and `$CMSiteConfiguration.EnableLowFreeSpaceAlert -eq `$false -and - `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication' -and `$CMSiteConfiguration.ClientCertificateCustomStoreName -ne '') + `$CMSiteConfiguration.ClientCertificateSelectionCriteriaType -ne 'ClientAuthentication') { CMSiteConfiguration CMSiteConfiguration { @@ -13257,7 +12737,7 @@ function Set-ConfigMgrCBDscReverse { $resourceName = 'CMSiteConfiguration' Write-Verbose -Message ($script:localizedData.SingleOutput -f $resourceName) -Verbose - $wSiteConfiguration = "$resourceName = @(`r`n" + $wSiteConfiguration = "$resourceName = @{`r`n" $siteType = Get-CMSiteDefinition -SiteCode $SiteCode if ($siteType.SiteType -eq 2) @@ -13282,7 +12762,7 @@ function Set-ConfigMgrCBDscReverse $testThing = Set-OutFile @params $wSiteConfiguration += "$testThing" - $fileOut += $wSiteConfiguration + $fileOut += "$wSiteConfiguration`r`n" } if (($Include -eq 'All' -and $Exclude -notcontains 'SiteMaintenance') -or ($Include -contains 'SiteMaintenance')) diff --git a/tests/Unit/CMSiteConfiguration.tests.ps1 b/tests/Unit/CMSiteConfiguration.tests.ps1 index 865355ef..e977bec5 100644 --- a/tests/Unit/CMSiteConfiguration.tests.ps1 +++ b/tests/Unit/CMSiteConfiguration.tests.ps1 @@ -386,7 +386,7 @@ try } @{ PropertyName = 'Certificate Store' - Value1 = 'SMSStore' + Value1 = '' } @{ PropertyName = 'Select First Certificate' @@ -912,7 +912,7 @@ try $result.SendingWakeupPacketBeforePausingWaitSec | Should -Be -ExpectedValue 10 $result.ThreadNumberOfSendingWakeupPacket | Should -Be -ExpectedValue 3 $result.SendingWakeupPacketTransmissionOffsetMins | Should -Be -ExpectedValue 10 - $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'SMSStore' + $result.ClientCertificateCustomStoreName | Should -Be -ExpectedValue 'Personal' $result.TakeActionForMultipleCertificateMatchCriteria | Should -Be -ExpectedValue 'FailSelectionAndSendErrorMessage' $result.ClientCertificateSelectionCriteriaType | Should -Be -ExpectedValue 'CertificateSubjectOrSanIncludesAtrributes' $result.ClientCertificateSelectionCriteriaValue | Should -Be -ExpectedValue 'Test' From 06b2ada8229a937c3cfb941ecb6cbba76849b174 Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Fri, 19 Nov 2021 13:27:26 -0500 Subject: [PATCH 14/16] End of Week sync --- .../Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 | 228 +++++++++++++++++- 1 file changed, 227 insertions(+), 1 deletion(-) diff --git a/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 b/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 index 46056bb1..2a3b0b55 100644 --- a/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 +++ b/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 @@ -3111,6 +3111,206 @@ InModuleScope $script:subModuleName { } ) } + @{ + ImplementedAs = 'PowerShell' + Name = 'CMSiteConfiguration' + ModuleName = 'ConfigMgrCBDsc' + Version = '1.0.1' + Properties = @( + @{ + Name = 'SiteCode' + PropertyType = '[string]' + IsMandatory = $true + Values = '{}' + } + @{ + Name = 'Comment' + PropertyType = '[string]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'ClientComputerCommunicationType' + PropertyType = '[string]' + IsMandatory = $false + Values = '{HttpsOnly,HttpsOrHttp}' + } + @{ + Name = 'ClientCheckCertificateRevocationListForSiteSystem' + PropertyType = '[bool]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'UsePkiClientCertificate' + PropertyType = '[bool]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'UseSmsGeneratedCert' + PropertyType = '[bool]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'RequireSigning' + PropertyType = '[bool]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'RequireSha256' + PropertyType = '[bool]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'UseEncryption' + PropertyType = '[bool]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'MaximumConcurrentSendingForAllSite' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'MaximumConcurrentSendingForPerSite' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'RetryNumberForConcurrentSending' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'ConcurrentSendingDelayBeforeRetryingMins' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'EnableLowFreeSpaceAlert' + PropertyType = '[bool]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'FreeSpaceThresholdWarningGB' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'FreeSpaceThresholdCriticalGB' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'ThresholdOfSelectCollectionByDefault' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'ThresholdOfSelectCollectionMax' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'SiteSystemCollectionBehavior' + PropertyType = '[string]' + IsMandatory = $false + Values = '{Warn,Block}' + } + @{ + Name = 'EnableWakeOnLan' + PropertyType = '[bool]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'WakeOnLanTransmissionMethodType' + PropertyType = '[string]' + IsMandatory = $false + Values = '{Unicast,SubnetDirectedBroadcasts}' + } + @{ + Name = 'RetryNumberOfSendingWakeupPacketTransmission' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'SendingWakeupPacketTransmissionDelayMins' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'MaximumNumberOfSendingWakeupPacketBeforePausing' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'SendingWakeupPacketBeforePausingWaitSec' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'ThreadNumberOfSendingWakeupPacket' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'SendingWakeupPacketTransmissionOffsetMins' + PropertyType = '[UInt32]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'ClientCertificateCustomStoreName' + PropertyType = '[string]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'TakeActionForMultipleCertificateMatchCriteria' + PropertyType = '[string]' + IsMandatory = $false + Values = '{FailSelectionAndSendErrorMessage,SelectCertificateWithLongestValidityPeriod}' + } + @{ + Name = 'ClientCertificateSelectionCriteriaType' + PropertyType = '[string]' + IsMandatory = $false + Values = '{ClientAuthentication,CertificateSubjectContainsString,CertificateSubjectOrSanIncludesAttributes}' + } + @{ + Name = 'ClientCertificateSelectionCriteriaValue' + PropertyType = '[string]' + IsMandatory = $false + Values = '{}' + } + @{ + Name = 'PsDscRunAsCredential' + PropertyType = '[PSCredential]' + IsMandatory = $false + Values = '{}' + } + ) + } @{ ImplementedAs = 'PowerShell' Name = 'CMSiteMaintenance' @@ -5912,6 +6112,31 @@ InModuleScope $script:subModuleName { SiteCode = 'Lab' PSComputerName = 'localhost' } + + $siteConfig = @{ + SiteCode = 'Lab' + Include = 'SiteConfiguration' + } + + $invokeSiteConfiguration = @{ + ConfigurationName = $null + DependsOn = $null + ModuleName = 'ConfigMgrCBDsc' + ModuleVersion = 1.0.1 + PsDscRunAsCredential = $null + ResourceId = $null + SourceInfo = $null + SiteCode = 'Lab' + Comment = 'Lab Site CAS' + MaximumConcurrentSendingForAllSite = 5 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 10 + ConcurrentSendingDelayBeforeRetryingMins = 5 + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 0 + SiteSystemCollectionBehavior = 'Block' + PSComputerName = 'localhost' + } } Context 'When running the Set-ConfigMgrCBDscReverse' { @@ -6009,11 +6234,12 @@ InModuleScope $script:subModuleName { Mock -CommandName Invoke-DscResource -MockWith { $invokeCMClientSettingsUpdate } -ParameterFilter { $Name -eq 'CMClientSettingsSoftwareUpdate' } Mock -CommandName Invoke-DscResource -MockWith { $invokeCMClientSettingsStateMessaging } -ParameterFilter { $Name -eq 'CMClientSettingsStateMessaging' } Mock -CommandName Invoke-DscResource -MockWith { $invokeCMClientSettingsUserDeviceAffinity } -ParameterFilter { $Name -eq 'CMClientSettingsUserDeviceAffinity' } + Mock -CommandName Invoke-DscResource -MockWith { $invokeSiteConfiguration } -ParameterFilter { $Name -eq 'CMSiteConfiguration' } $result = Set-ConfigMgrCBDscReverse @testAll $result | Should -BeOfType System.String Assert-MockCalled Get-CMAccount -Exactly -Times 1 -Scope It - Assert-MockCalled Invoke-DscResource -Exactly -Times 46 -Scope It + Assert-MockCalled Invoke-DscResource -Exactly -Times 47 -Scope It Assert-MockCalled Get-CMAdministrativeUser -Exactly -Times 1 -Scope It Assert-MockCalled Get-CMAssetIntelligenceSynchronizationPoint -Exactly -Times 1 -Scope It Assert-MockCalled Get-CMClientSetting -Exactly -Times 19 -Scope It From a459eb23960cf0c0891fa7c06d9831140b6875fa Mon Sep 17 00:00:00 2001 From: Easyreturns <20781445+jeffotterpohl@users.noreply.github.com> Date: Fri, 19 Nov 2021 14:13:39 -0600 Subject: [PATCH 15/16] Updates for ReverseDSC Pester tests --- tests/Unit/CMSiteConfiguration.tests.ps1 | 4 +- .../Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 | 75 ++++++++++++++++++- 2 files changed, 74 insertions(+), 5 deletions(-) diff --git a/tests/Unit/CMSiteConfiguration.tests.ps1 b/tests/Unit/CMSiteConfiguration.tests.ps1 index e977bec5..fa572ac3 100644 --- a/tests/Unit/CMSiteConfiguration.tests.ps1 +++ b/tests/Unit/CMSiteConfiguration.tests.ps1 @@ -1316,7 +1316,7 @@ try ClientCertificateCustomStoreName = 'SMSStore' TakeActionForMultipleCertificateMatchCriteria = 'SelectCertificateWithLongestValidityPeriod' ClientCertificateSelectionCriteriaType = 'ClientAuthentication' - ClientCertificateSelectionCriteriaValue = '' + ClientCertificateSelectionCriteriaValue = 'Personal' } $getReturnCas = @{ @@ -1374,7 +1374,7 @@ try ClientCertificateCustomStoreName = 'SMSStore' TakeActionForMultipleCertificateMatchCriteria = 'SelectCertificateWithLongestValidityPeriod' ClientCertificateSelectionCriteriaType = 'ClientAuthentication' - ClientCertificateSelectionCriteriaValue = '' + ClientCertificateSelectionCriteriaValue = 'Personal' } $inputMatch = @{ diff --git a/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 b/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 index 2a3b0b55..a6213dc2 100644 --- a/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 +++ b/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 @@ -6118,7 +6118,42 @@ InModuleScope $script:subModuleName { Include = 'SiteConfiguration' } - $invokeSiteConfiguration = @{ + $invokeSiteConfigurationPri = @{ + SiteCode = 'Lab' + Comment = 'Site Lab' + ClientComputerCommunicationType = 'HttpsOrHttp' + ClientCheckCertificateRevocationListForSiteSystem = $true + UsePkiClientCertificate = $false + UseSmsGeneratedCert = $true + RequireSigning = $true + RequireSha256 = $false + UseEncryption = $false + MaximumConcurrentSendingForAllSite = 6 + MaximumConcurrentSendingForPerSite = 3 + RetryNumberForConcurrentSending = 2 + ConcurrentSendingDelayBeforeRetryingMins = 10 + EnableLowFreeSpaceAlert = $true + FreeSpaceThresholdWarningGB = 10 + FreeSpaceThresholdCriticalGB = 5 + ThresholdOfSelectCollectionByDefault = 100 + ThresholdOfSelectCollectionMax = 1000 + SiteSystemCollectionBehavior = 'Warn' + SiteType = 'Primary' + EnableWakeOnLan = $true + WakeOnLanTransmissionMethodType = 'Unicast' + RetryNumberOfSendingWakeupPacketTransmission = 1 + SendingWakeupPacketTransmissionDelayMins = 10000 + MaximumNumberOfSendingWakeupPacketBeforePausing = 10 + SendingWakeupPacketBeforePausingWaitSec = 3 + ThreadNumberOfSendingWakeupPacket = 10 + SendingWakeupPacketTransmissionOffsetMins = 10 + ClientCertificateCustomStoreName = 'SMSStore' + TakeActionForMultipleCertificateMatchCriteria = 'SelectCertificateWithLongestValidityPeriod' + ClientCertificateSelectionCriteriaType = 'ClientAuthentication' + ClientCertificateSelectionCriteriaValue = 'Personal' + } + + $invokeSiteConfigurationCas = @{ ConfigurationName = $null DependsOn = $null ModuleName = 'ConfigMgrCBDsc' @@ -6234,7 +6269,7 @@ InModuleScope $script:subModuleName { Mock -CommandName Invoke-DscResource -MockWith { $invokeCMClientSettingsUpdate } -ParameterFilter { $Name -eq 'CMClientSettingsSoftwareUpdate' } Mock -CommandName Invoke-DscResource -MockWith { $invokeCMClientSettingsStateMessaging } -ParameterFilter { $Name -eq 'CMClientSettingsStateMessaging' } Mock -CommandName Invoke-DscResource -MockWith { $invokeCMClientSettingsUserDeviceAffinity } -ParameterFilter { $Name -eq 'CMClientSettingsUserDeviceAffinity' } - Mock -CommandName Invoke-DscResource -MockWith { $invokeSiteConfiguration } -ParameterFilter { $Name -eq 'CMSiteConfiguration' } + Mock -CommandName Invoke-DscResource -MockWith { $invokeSiteConfigurationCas } -ParameterFilter { $Name -eq 'CMSiteConfiguration' } $result = Set-ConfigMgrCBDscReverse @testAll $result | Should -BeOfType System.String @@ -6253,7 +6288,7 @@ InModuleScope $script:subModuleName { Assert-MockCalled Get-CMReportingServicePoint -Exactly -Times 1 -Scope It Assert-MockCalled Get-CMSecurityScope -Exactly -Times 1 -Scope It Assert-MockCalled Get-CMServiceConnectionPoint -Exactly -Times 1 -Scope It - Assert-MockCalled Get-CMSiteDefinition -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMSiteDefinition -Exactly -Times 1 -Scope It Assert-MockCalled Get-CMSiteSystemServer -Exactly -Times 1 -Scope It Assert-MockCalled Get-CMSoftwareUpdatePoint -Exactly -Times 1 -Scope It Assert-MockCalled Get-CMSite -Exactly -Times 1 -Scope It @@ -6673,6 +6708,40 @@ InModuleScope $script:subModuleName { Assert-MockCalled New-Configuration -Exactly -Times 0 -Scope It } + It 'Should return expected results and call expected commands for Site Configuration Primary' { + Mock -CommandName Get-DscResource -MockWith { $getDscResourceReturn } + Mock -CommandName Invoke-DscResource -MockWith { $invokeSiteConfigurationPri } + Mock -CommandName Get-CMSiteDefinition -MockWith { $getCMDefinitionPrimary } + + $result = Set-ConfigMgrCBDscReverse @siteConfig + $result | Should -BeOfType System.String + $result | Should -Match "CMSiteConfiguration" + Assert-MockCalled Get-CMAccount -Exactly -Times 0 -Scope It + Assert-MockCalled Invoke-DscResource -Exactly -Times 1 -Scope It + Assert-MockCalled Get-CMAdministrativeUser -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMAssetIntelligenceSynchronizationPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMClientSetting -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMCollection -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMDistributionPointGroup -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMDistributionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMFallbackStatusPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMDiscoveryMethod -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMManagementPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMDistributionPointInfo -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMReportingServicePoint -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMSecurityScope -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMServiceConnectionPoint -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMSiteDefinition -Exactly -Times 1 -Scope It + Assert-MockCalled Get-CMSiteSystemServer -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMSoftwareUpdatePoint -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMMaintenanceWindow -Exactly -Times 0 -Scope It + Assert-MockCalled Get-CMBoundaryGroup -Exactly -Times 0 -Scope It + Assert-MockCalled Test-Path -Exactly -Times 0 -Scope It + Assert-MockCalled Remove-Item -Exactly -Times 0 -Scope It + Assert-MockCalled Add-Content -Exactly -Times 0 -Scope It + Assert-MockCalled New-Configuration -Exactly -Times 0 -Scope It + } + It 'Should return expected results and call expected commands for Site System Server' { Mock -CommandName Get-DscResource -MockWith { $getDscResourceReturn } Mock -CommandName Invoke-DscResource -MockWith { $invokeSiteSystemProxy } From e75c4be6aa14ab98803c2ad744bb94da2ca8af0a Mon Sep 17 00:00:00 2001 From: Nick Ellis Date: Mon, 29 Nov 2021 09:14:52 -0500 Subject: [PATCH 16/16] Resolving PR Comments --- .../DSC_CMSiteConfiguration.psm1 | 45 +++++++++++-------- tests/Unit/CMSiteConfiguration.tests.ps1 | 9 ++-- .../Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 | 8 ++++ 3 files changed, 38 insertions(+), 24 deletions(-) diff --git a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 index 475b743d..61501516 100644 --- a/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 +++ b/source/DSCResources/DSC_CMSiteConfiguration/DSC_CMSiteConfiguration.psm1 @@ -135,14 +135,15 @@ function Get-TargetResource { switch ($item.PropertyName) { - 'Certificate Store' { if ([string]::IsNullOrEmpty($item.Value1)) - { + 'Certificate Store' { + if ([string]::IsNullOrEmpty($item.Value1)) + { $customStore = 'Personal' - } - else - { + } + else + { $customStore = $item.Value1 - } + } } 'Select First Certificate' { $certSel = @('FailSelectionAndSendErrorMessage','SelectCertificateWithLongestValidityPeriod')[($item.Value)] } @@ -617,9 +618,11 @@ function Set-TargetResource if ($state.SiteType -eq 'Primary') { - $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', - 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','ClientCertificateCustomStoreName', - 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType','ClientComputerCommunicationType') + $defaultValues += @( + 'ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate','RequireSigning','UseEncryption', + 'EnableLowFreeSpaceAlert','EnableWakeOnLan','ClientCertificateCustomStoreName','TakeActionForMultipleCertificateMatchCriteria', + 'ClientCertificateSelectionCriteriaType','ClientComputerCommunicationType' + ) if (($PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) -and (-not [string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $ClientComputerCommunicationType -eq 'HttpsOnly') -or @@ -664,9 +667,11 @@ function Set-TargetResource } } - $wolParams = @('WakeOnLanTransmissionMethodType','RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', - 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec','ThreadNumberOfSendingWakeupPacket', - 'SendingWakeupPacketTransmissionOffsetMins') + $wolParams = @( + 'WakeOnLanTransmissionMethodType','RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', + 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec','ThreadNumberOfSendingWakeupPacket', + 'SendingWakeupPacketTransmissionOffsetMins' + ) foreach ($param in $wolParams) { @@ -1096,9 +1101,11 @@ function Test-TargetResource if ($state.SiteType -eq 'Primary') { - $defaultValues += @('ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate', - 'RequireSigning','UseEncryption','EnableLowFreeSpaceAlert','EnableWakeOnLan','ClientCertificateCustomStoreName', - 'TakeActionForMultipleCertificateMatchCriteria','ClientCertificateSelectionCriteriaType','ClientComputerCommunicationType') + $defaultValues += @( + 'ClientCheckCertificateRevocationListForSiteSystem','UsePkiClientCertificate','RequireSigning','UseEncryption', + 'EnableLowFreeSpaceAlert','EnableWakeOnLan','ClientCertificateCustomStoreName','TakeActionForMultipleCertificateMatchCriteria', + 'ClientCertificateSelectionCriteriaType','ClientComputerCommunicationType' + ) if (($PSBoundParameters.ContainsKey('UseSmsGeneratedCert')) -and (-not [string]::IsNullOrEmpty($ClientComputerCommunicationType) -and $ClientComputerCommunicationType -eq 'HttpsOnly') -or @@ -1145,9 +1152,11 @@ function Test-TargetResource } } - $wolParams = @('WakeOnLanTransmissionMethodType','RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', - 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec','ThreadNumberOfSendingWakeupPacket', - 'SendingWakeupPacketTransmissionOffsetMins') + $wolParams = @( + 'WakeOnLanTransmissionMethodType','RetryNumberOfSendingWakeupPacketTransmission','SendingWakeupPacketTransmissionDelayMins', + 'MaximumNumberOfSendingWakeupPacketBeforePausing','SendingWakeupPacketBeforePausingWaitSec','ThreadNumberOfSendingWakeupPacket', + 'SendingWakeupPacketTransmissionOffsetMins' + ) foreach ($param in $wolParams) { diff --git a/tests/Unit/CMSiteConfiguration.tests.ps1 b/tests/Unit/CMSiteConfiguration.tests.ps1 index fa572ac3..42dd739e 100644 --- a/tests/Unit/CMSiteConfiguration.tests.ps1 +++ b/tests/Unit/CMSiteConfiguration.tests.ps1 @@ -36,7 +36,7 @@ Invoke-TestSetup try { InModuleScope $script:dscResourceName { - Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Get-TargetResource' -Tag 'Get'{ + Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Get-TargetResource' -Tag 'Get' { BeforeAll { $getInput = @{ SiteCode = 'Lab' @@ -451,7 +451,6 @@ try Value = 1 } ) - } $wolBroadcast = @{ @@ -482,7 +481,6 @@ try Value = 2 } ) - } $wolComponent = @{ @@ -920,7 +918,7 @@ try } } - Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Set-TargetResource' -Tag 'Set'{ + Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Set-TargetResource' -Tag 'Set' { BeforeAll { $getReturnAll = @{ SiteCode = 'Lab' @@ -1032,7 +1030,6 @@ try SiteCode = 'Lab' UseSmsGeneratedCert = $true ClientComputerCommunicationType = 'HttpsOnly' - } $inputWakeFalse = @{ @@ -1282,7 +1279,7 @@ try } } - Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Test-TargetResource' -Tag 'Test'{ + Describe 'ConfigMgrCBDsc - DSC_CMSiteConfiguration\Test-TargetResource' -Tag 'Test' { BeforeAll { $getReturnAll = @{ SiteCode = 'Lab' diff --git a/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 b/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 index a6213dc2..ef84286c 100644 --- a/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 +++ b/tests/Unit/ConfigMgrCBDsc.ReverseDsc.tests.ps1 @@ -6119,6 +6119,13 @@ InModuleScope $script:subModuleName { } $invokeSiteConfigurationPri = @{ + ConfigurationName = $null + DependsOn = $null + ModuleName = 'ConfigMgrCBDsc' + ModuleVersion = 1.0.1 + PsDscRunAsCredential = $null + ResourceId = $null + SourceInfo = $null SiteCode = 'Lab' Comment = 'Site Lab' ClientComputerCommunicationType = 'HttpsOrHttp' @@ -6151,6 +6158,7 @@ InModuleScope $script:subModuleName { TakeActionForMultipleCertificateMatchCriteria = 'SelectCertificateWithLongestValidityPeriod' ClientCertificateSelectionCriteriaType = 'ClientAuthentication' ClientCertificateSelectionCriteriaValue = 'Personal' + PSComputerName = 'localhost' } $invokeSiteConfigurationCas = @{