Skip to content

Commit 2a096a5

Browse files
committed
cleaner workaround for binary resources
1 parent bbca66a commit 2a096a5

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

powershell-adapter/psDscAdapter/psDscAdapter.psm1

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,24 +38,24 @@ function Invoke-DscCacheRefresh {
3838
)
3939

4040
# cache the results of Get-DscResource
41-
[dscResourceCache[]]$dscResourceCache = @()
41+
[dscResourceCache[]]$dscResourceCache = [System.Collections.Generic.List[Object]]::new()
4242

4343
# improve by performance by having the option to only get details for named modules
4444
# workaround for File and SignatureValidation resources that ship in Windows
4545
if ($null -ne $module -and 'PSDesiredStateConfiguration' -ne $module) {
4646
if ($module.gettype().name -eq 'string') {
4747
$module = @($module)
4848
}
49-
$DscResources = @()
50-
$Modules = @()
49+
$DscResources = [System.Collections.Generic.List[Object]]::new()
50+
$Modules = [System.Collections.Generic.List[Object]]::new()
5151
foreach ($m in $module) {
5252
$DscResources += Get-DscResource -Module $m
5353
$Modules += Get-Module -Name $m -ListAvailable
5454
}
5555
}
5656
elseif ('PSDesiredStateConfiguration' -eq $module) {
5757
# workaround: the binary modules don't have a module name, so we have to special case File and SignatureValidation resources that ship in Windows
58-
$DscResources = Get-DscResource | Where-Object { $_.modulename -eq $null -and $_.parentpath -like "$env:windir\System32\Configuration\*" }
58+
$DscResources = Get-DscResource | Where-Object { $_.modulename -eq 'PSDesiredStateConfiguration' -or ( $_.modulename -eq $null -and $_.parentpath -like "$env:windir\System32\Configuration\*" )}
5959
}
6060
else {
6161
# if no module is specified, get all resources
@@ -95,6 +95,7 @@ function Invoke-DscCacheRefresh {
9595
$DscResourceInfo.$($_.Name) = ''
9696
}
9797
}
98+
9899
if ($dscResource.ModuleName) {
99100
$moduleName = $dscResource.ModuleName
100101
}
@@ -108,7 +109,7 @@ function Invoke-DscCacheRefresh {
108109
$DscResourceInfo.ImplementationDetail = 'Binary'
109110
}
110111
}
111-
elseif ($dscResource.ParentPath) {
112+
elseif ($binaryBuiltInModulePaths -notcontains $dscResource.ParentPath -and $null -ne $dscResource.ParentPath) {
112113
# workaround: populate module name from parent path that is three levels up
113114
$moduleName = Split-Path $dscResource.ParentPath | Split-Path | Split-Path -Leaf
114115
$DscResourceInfo.Module = $moduleName

0 commit comments

Comments
 (0)