@@ -461,24 +461,38 @@ public static IEnumerable<string> GetModuleNameFromErrorExtent(ParseError error,
461461 var paramValAst = dynamicKywdAst . CommandElements [ positionOfModuleNameParamter ] ;
462462
463463 // import-dscresource -ModuleName module1
464- var paramValStrConstExprAst = paramValAst as StringConstantExpressionAst ;
465- if ( paramValStrConstExprAst != null )
464+ if ( paramValAst is StringConstantExpressionAst paramValStrConstExprAst )
466465 {
467466 modules . Add ( paramValStrConstExprAst . Value ) ;
468467
469468 // import-dscresource -ModuleName module1 -ModuleVersion major.minor.patch.build
470469 var versionParameterAst = dynamicKywdAst . CommandElements [ positionOfModuleVersionParameter ] as StringConstantExpressionAst ;
471470 if ( versionParameterAst != null )
472471 {
473- Version . TryParse ( versionParameterAst . Value , out Version version ) ; // ignore return value since a module version of null means no version
474- moduleVersion = version ;
472+ Version . TryParse ( versionParameterAst . Value , out moduleVersion ) ; // ignore return value since a module version of null means no version
475473 }
476474 return modules ;
477475 }
478-
476+
477+ // Import-DscResource –ModuleName @{ModuleName="module1";ModuleVersion="1.2.3.4"}
478+ //var paramValAstHashtableAst = paramValAst.Find(oneAst => oneAst is HashtableAst, true) as HashtableAst;
479+ if ( paramValAst . Find ( oneAst => oneAst is HashtableAst , true ) is HashtableAst paramValAstHashtableAst )
480+ {
481+ var moduleNameTuple = paramValAstHashtableAst . KeyValuePairs . SingleOrDefault ( x => x . Item1 . Extent . Text . Equals ( "ModuleName" ) ) ;
482+ var moduleName = moduleNameTuple . Item2 . Find ( astt => astt is StringConstantExpressionAst , true ) as StringConstantExpressionAst ;
483+ if ( moduleName == null )
484+ {
485+ return null ;
486+ }
487+ modules . Add ( moduleName . Value ) ;
488+ var moduleVersionTuple = paramValAstHashtableAst . KeyValuePairs . SingleOrDefault ( x => x . Item1 . Extent . Text . Equals ( "ModuleVersion" ) ) ;
489+ var moduleVersionAst = moduleVersionTuple . Item2 . Find ( astt => astt is StringConstantExpressionAst , true ) as StringConstantExpressionAst ;
490+ Version . TryParse ( moduleVersionAst . Value , out moduleVersion ) ;
491+ return modules ;
492+ }
493+
479494 // import-dscresource -ModuleName module1,module2
480- var paramValArrLtrlAst = paramValAst as ArrayLiteralAst ;
481- if ( paramValArrLtrlAst != null )
495+ if ( paramValAst is ArrayLiteralAst paramValArrLtrlAst )
482496 {
483497 foreach ( var elem in paramValArrLtrlAst . Elements )
484498 {
0 commit comments