1
1
# Copyright (c) Microsoft Corporation.
2
2
# Licensed under the MIT License.
3
3
4
- $script :CurrentCacheSchemaVersion = 2
4
+ $script :CurrentCacheSchemaVersion = 3
5
5
6
6
function Write-DscTrace {
7
7
param (
@@ -117,7 +117,7 @@ function FindAndParseResourceDefinitions {
117
117
$typeDefinitions = $ast.FindAll (
118
118
{
119
119
$typeAst = $args [0 ] -as [System.Management.Automation.Language.TypeDefinitionAst ]
120
- return $typeAst -ne $null ;
120
+ return $null -ne $typeAst ;
121
121
},
122
122
$false );
123
123
@@ -139,6 +139,7 @@ function FindAndParseResourceDefinitions {
139
139
$DscResourceInfo.Version = $moduleVersion
140
140
141
141
$DscResourceInfo.Properties = [System.Collections.Generic.List [DscResourcePropertyInfo ]]::new()
142
+ $DscResourceInfo.Methods = GetClassBasedCapabilities $typeDefinitionAst.Members
142
143
Add-AstMembers $typeDefinitions $typeDefinitionAst $DscResourceInfo.Properties
143
144
144
145
$resourceList.Add ($DscResourceInfo )
@@ -529,6 +530,28 @@ function GetTypeInstanceFromModule {
529
530
return $instance
530
531
}
531
532
533
+ function GetClassBasedCapabilities ($functionMemberAst ) {
534
+ $capabilities = @ ()
535
+ # These are the methods that we can potentially expect in a class-based DSC resource.
536
+ $availableMethods = @ (' get' , ' set' , ' setHandlesExist' , ' whatIf' , ' test' , ' delete' , ' export' )
537
+ $methods = $functionMemberAst | Where-Object { $_ -is [System.Management.Automation.Language.FunctionMemberAst ] -and $_.Name -in $availableMethods }
538
+
539
+ foreach ($method in $methods.Name ) {
540
+ # We go through each method to properly case handle the method names.
541
+ switch ($method ) {
542
+ ' Get' { $capabilities += ' get' }
543
+ ' Set' { $capabilities += ' set' }
544
+ ' Test' { $capabilities += ' test' }
545
+ ' WhatIf' { $capabilities += ' whatIf' }
546
+ ' SetHandlesExist' { $capabilities += ' setHandlesExist' }
547
+ ' Delete' { $capabilities += ' delete' }
548
+ ' Export' { $capabilities += ' export' }
549
+ }
550
+ }
551
+
552
+ return ($capabilities | Select-Object - Unique)
553
+ }
554
+
532
555
# cached resource
533
556
class dscResourceCacheEntry {
534
557
[string ] $Type
@@ -578,4 +601,5 @@ class DscResourceInfo {
578
601
[string ] $ImplementedAs
579
602
[string ] $CompanyName
580
603
[System.Collections.Generic.List [DscResourcePropertyInfo ]] $Properties
604
+ [string []] $Methods
581
605
}
0 commit comments