Skip to content

Commit da89748

Browse files
authored
Merge pull request #855 from Gijsreyn/fix-winps-adapter-hidden-properties
Fix WinPS adapter hidden properties
2 parents db17be0 + 828509f commit da89748

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

build.ps1

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ if ($null -ne $packageType) {
158158
Remove-Item temp:/rustup-init.exe -ErrorAction Ignore
159159
}
160160
}
161+
else {
162+
Write-Verbose -Verbose "Rust found, updating..."
163+
& $rustup update
164+
}
161165

162166
$BuildToolsPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC"
163167

powershell-adapter/Tests/win_powershellgroup.tests.ps1

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,12 @@ resources:
292292
Tags = @(
293293
'PSDscResource_PSClassResource'
294294
)
295+
DscCapabilities = @(
296+
'get'
297+
'test'
298+
'set'
299+
'export'
300+
)
295301
}
296302
}
297303
}
@@ -303,11 +309,24 @@ resources:
303309

304310

305311
$module = @'
312+
enum Ensure {
313+
Present
314+
Absent
315+
}
316+
306317
[DSCResource()]
307318
class PSClassResource {
308319
[DscProperty(Key)]
309320
[string] $Name
310321
322+
[string] $NonDscProperty
323+
324+
hidden
325+
[string] $HiddenNonDscProperty
326+
327+
[DscProperty()]
328+
[Ensure] $Ensure = [Ensure]::Present
329+
311330
PSClassResource() {
312331
}
313332
@@ -333,6 +352,7 @@ class PSClassResource {
333352
1..$resultCount | %{
334353
$obj = New-Object PSClassResource
335354
$obj.Name = "Object$_"
355+
$obj.Ensure = [Ensure]::Present
336356
$resultList.Add($obj)
337357
}
338358
@@ -358,6 +378,8 @@ class PSClassResource {
358378
$out = dsc resource get -r PSClassResource/PSClassResource --input (@{Name = 'TestName' } | ConvertTo-Json) | ConvertFrom-Json
359379
$LASTEXITCODE | Should -Be 0
360380
$out.actualState.Name | Should -Be 'TestName'
381+
$propCount = $out.actualState | Get-Member -MemberType NoteProperty
382+
$propCount.Count | Should -Be 1 # Only the DscProperty should be returned
361383
}
362384

363385
It 'Set works with class-based PS DSC resources' -Skip:(!$IsWindows) {
@@ -373,5 +395,7 @@ class PSClassResource {
373395
$LASTEXITCODE | Should -Be 0
374396
$out | Should -Not -BeNullOrEmpty
375397
$out.resources.count | Should -Be 5
398+
$out.resources[0].properties.Ensure | Should -Be 'Present' # Check for enum property
376399
}
377-
}
400+
}
401+

powershell-adapter/psDscAdapter/win_psDscAdapter.psm1

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,10 @@ function Invoke-DscOperation {
402402
$resource = GetTypeInstanceFromModule -modulename $cachedDscResourceInfo.ModuleName -classname $cachedDscResourceInfo.Name
403403
$dscResourceInstance = $resource::New()
404404

405+
$ValidProperties = $cachedDscResourceInfo.Properties.Name
406+
407+
$ValidProperties | ConvertTo-Json | Write-DscTrace -Operation Trace
408+
405409
if ($DesiredState.properties) {
406410
# set each property of $dscResourceInstance to the value of the property in the $desiredState INPUT object
407411
$DesiredState.properties.psobject.properties | ForEach-Object -Process {
@@ -427,7 +431,16 @@ function Invoke-DscOperation {
427431

428432
switch ($Operation) {
429433
'Get' {
430-
$Result = $dscResourceInstance.Get()
434+
$Result = @{}
435+
$raw_obj = $dscResourceInstance.Get()
436+
$ValidProperties | ForEach-Object {
437+
if ($raw_obj.$_ -is [System.Enum]) {
438+
$Result[$_] = $raw_obj.$_.ToString()
439+
}
440+
else {
441+
$Result[$_] = $raw_obj.$_
442+
}
443+
}
431444
$addToActualState.properties = $Result
432445
}
433446
'Set' {

0 commit comments

Comments
 (0)