@@ -15,6 +15,7 @@ class PowerShellHashFormatter
1515 # @return [Object] Formatted value.
1616 def self . format ( dsc_value )
1717 resolved = resolve_deferred_deep ( dsc_value )
18+
1819 if resolved . instance_of? ( ::Hash )
1920 format_hash ( resolved )
2021 elsif resolved . instance_of? ( ::Puppet ::Pops ::Types ::PSensitiveType ::Sensitive )
@@ -24,12 +25,13 @@ def self.format(dsc_value)
2425 end
2526 end
2627
27- # --- NEW: Resolve any DeferredValue recursively before formatting ---
28+ # --- Resolve any DeferredValue recursively before formatting ---
2829 def self . resolve_deferred_deep ( obj )
2930 case obj
3031 when Puppet ::Pops ::Evaluator ::DeferredValue
3132 compiler = Puppet . lookup ( :compiler ) { nil }
3233 raise Puppet ::Error , 'DSC_lite: DeferredValue encountered but no compiler is available to resolve it' unless compiler
34+
3335 Puppet ::Pops ::Evaluator ::DeferredResolver . resolve ( obj , compiler )
3436 when Puppet ::Pops ::Types ::PSensitiveType ::Sensitive
3537 inner = resolve_deferred_deep ( obj . unwrap )
@@ -44,7 +46,7 @@ def self.resolve_deferred_deep(obj)
4446 obj
4547 end
4648 end
47- # -------------------------------------------------------------------
49+ # ----------------------------------------------------------------
4850
4951 private_class_method def self . format_hash ( value )
5052 if value . key? ( 'dsc_type' )
@@ -68,7 +70,7 @@ def self.resolve_deferred_deep(obj)
6870 properties = [ value [ 'dsc_properties' ] ] . flatten
6971
7072 output = properties . map do |p |
71- ' (New-C_to_string (p)})'
73+ " (New-CimInstance -ClassName ' #{ type } ' -ClientOnly -Property #{ format_hash_to_string ( p ) } )"
7274 end
7375
7476 if value [ 'dsc_type' ] . end_with? ( '[]' )
0 commit comments