diff --git a/CHANGELOG/v3.md b/CHANGELOG/v3.md index 915f96f..b623735 100644 --- a/CHANGELOG/v3.md +++ b/CHANGELOG/v3.md @@ -1,5 +1,10 @@ # v3 Changelog +## [v3.1.6] + +- Fixed an issue where the MOF file encoding was set to UTF-8 without BOM instead of UTF-16LE required + by the DSC engine. + ## [v3.1.5] - Improved module fingerprint detection to only warn if the actual module contents for the DSC schema diff --git a/M365DSC.PSDesiredStateConfiguration/Compat/PSDesiredStateConfiguration/PSDesiredStateConfiguration.psd1 b/M365DSC.PSDesiredStateConfiguration/Compat/PSDesiredStateConfiguration/PSDesiredStateConfiguration.psd1 index 40c8ecf..a35827b 100644 --- a/M365DSC.PSDesiredStateConfiguration/Compat/PSDesiredStateConfiguration/PSDesiredStateConfiguration.psd1 +++ b/M365DSC.PSDesiredStateConfiguration/Compat/PSDesiredStateConfiguration/PSDesiredStateConfiguration.psd1 @@ -6,7 +6,7 @@ RootModule = 'PSDesiredStateConfiguration.psm1' - ModuleVersion = '3.1.5' + ModuleVersion = '3.1.6' CompatiblePSEditions = @('Desktop', 'Core') diff --git a/M365DSC.PSDesiredStateConfiguration/M365DSC.PSDesiredStateConfiguration.psd1 b/M365DSC.PSDesiredStateConfiguration/M365DSC.PSDesiredStateConfiguration.psd1 index 50a1000..e0070d4 100644 --- a/M365DSC.PSDesiredStateConfiguration/M365DSC.PSDesiredStateConfiguration.psd1 +++ b/M365DSC.PSDesiredStateConfiguration/M365DSC.PSDesiredStateConfiguration.psd1 @@ -9,7 +9,7 @@ RootModule = 'M365DSC.PSDesiredStateConfiguration.psm1' # Version number of this module. - ModuleVersion = '3.1.5' + ModuleVersion = '3.1.6' # Supported PSEditions CompatiblePSEditions = @('Desktop', 'Core') diff --git a/M365DSC.PSDesiredStateConfiguration/M365DSC.PSDesiredStateConfiguration.psm1 b/M365DSC.PSDesiredStateConfiguration/M365DSC.PSDesiredStateConfiguration.psm1 index 1286d7a..8ff4b4f 100644 --- a/M365DSC.PSDesiredStateConfiguration/M365DSC.PSDesiredStateConfiguration.psm1 +++ b/M365DSC.PSDesiredStateConfiguration/M365DSC.PSDesiredStateConfiguration.psm1 @@ -2624,9 +2624,6 @@ function ImportCimAndScriptKeywordsFromModule return $foundCimSchema -or $foundScriptSchema } -# -# Writes a MOF document to disk with a deterministic encoding (UTF-8 without -# BOM) on both Windows PowerShell 5.1 and PowerShell 7. # # Builds the OMI_ConfigurationDocument instance that closes a document. function New-ConfigurationDocumentInstance @@ -2655,6 +2652,10 @@ function New-ConfigurationDocumentInstance " Name=`"$(Get-PSTopConfigurationName)`";`n};" } +# +# Writes a MOF document to disk as UTF-16LE with a BOM. The MI MOF parser decodes a +# document without a UTF-16 BOM as Latin-1, which corrupts every non-ASCII character. +# function Write-MofDocumentFile { param( @@ -2668,7 +2669,7 @@ function Write-MofDocumentFile ) $resolvedPath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($Path) - [System.IO.File]::WriteAllText($resolvedPath, ($Content + "`r`n"), [System.Text.UTF8Encoding]::new($false)) + [System.IO.File]::WriteAllText($resolvedPath, ($Content + "`r`n"), [System.Text.UnicodeEncoding]::new($false, $true)) } #