MSFT_xMsiPackage.psm1 and MSFT_xPackageResource.psm1: Consolidate Common Helper Functions
Details of the scenario you tried and the problem that is occurring
MSFT_xMsiPackage.psm1 and MSFT_xPackageResource.psm1 have a number of identical helper functions (like Invoke-PInvoke and Invoke-Process). These should be consolidated into single common helper functions.
Version of the DSC module that was used ('dev' if using current dev branch)
dev
Here's an inventory of all functions with duplicate names throughout the DSCResources folder:
Get-TargetResourceOnFullSKU: DscResources\MSFT_xGroupResource\MSFT_xGroupResource.psm1 DscResources\MSFT_xUserResource\MSFT_xUserResource.psm1
Convert-ProductIdToIdentifyingNumber: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Convert-PathToUri: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Set-TargetResourceOnNanoServer: DscResources\MSFT_xGroupResource\MSFT_xGroupResource.psm1 DscResources\MSFT_xUserResource\MSFT_xUserResource.psm1
Set-TargetResourceOnFullSKU: DscResources\MSFT_xGroupResource\MSFT_xGroupResource.psm1 DscResources\MSFT_xUserResource\MSFT_xUserResource.psm1
Get-MsiTool: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Close-Stream: DscResources\MSFT_xArchive\MSFT_xArchive.psm1 DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1
Get-MsiProductCode: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Register-PInvoke: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Get-TargetResourceOnNanoServer: DscResources\MSFT_xGroupResource\MSFT_xGroupResource.psm1 DscResources\MSFT_xUserResource\MSFT_xUserResource.psm1
Test-TargetResourceOnFullSKU: DscResources\MSFT_xGroupResource\MSFT_xGroupResource.psm1 DscResources\MSFT_xUserResource\MSFT_xUserResource.psm1
Test-TargetResourceOnNanoServer: DscResources\MSFT_xGroupResource\MSFT_xGroupResource.psm1 DscResources\MSFT_xUserResource\MSFT_xUserResource.psm1
Get-ProductEntry: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Assert-FileSignatureValid: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Invoke-PInvoke: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Invoke-Process: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Assert-FileValid: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Assert-PathExtensionValid: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Assert-FileHashValid: DscResources\MSFT_xMsiPackage\MSFT_xMsiPackage.psm1 DscResources\MSFT_xPackageResource\MSFT_xPackageResource.psm1
Great summary @mhendric - now to determine if they actually share the same function :grin: Any that have different function will have to remain in the resource module - unless they can be refactored I guess. I'm thinking the -TargetResourceFor will have to remain in the Resource modules because I'm pretty sure they have different functions.
I got this one.