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 = @{