@@ -461,24 +461,38 @@ public static IEnumerable<string> GetModuleNameFromErrorExtent(ParseError error,
461
461
var paramValAst = dynamicKywdAst . CommandElements [ positionOfModuleNameParamter ] ;
462
462
463
463
// import-dscresource -ModuleName module1
464
- var paramValStrConstExprAst = paramValAst as StringConstantExpressionAst ;
465
- if ( paramValStrConstExprAst != null )
464
+ if ( paramValAst is StringConstantExpressionAst paramValStrConstExprAst )
466
465
{
467
466
modules . Add ( paramValStrConstExprAst . Value ) ;
468
467
469
468
// import-dscresource -ModuleName module1 -ModuleVersion major.minor.patch.build
470
469
var versionParameterAst = dynamicKywdAst . CommandElements [ positionOfModuleVersionParameter ] as StringConstantExpressionAst ;
471
470
if ( versionParameterAst != null )
472
471
{
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
475
473
}
476
474
return modules ;
477
475
}
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
+
479
494
// import-dscresource -ModuleName module1,module2
480
- var paramValArrLtrlAst = paramValAst as ArrayLiteralAst ;
481
- if ( paramValArrLtrlAst != null )
495
+ if ( paramValAst is ArrayLiteralAst paramValArrLtrlAst )
482
496
{
483
497
foreach ( var elem in paramValArrLtrlAst . Elements )
484
498
{
0 commit comments