@@ -290,13 +290,14 @@ protected override void ProcessRecord()
290290 break ; 
291291
292292 case  InputObjectParameterSet : 
293-  foreach  ( var  inputObj  in  InputObject )  { 
293+  foreach  ( var  inputObj  in  InputObject ) 
294+  { 
294295 string  normalizedVersionString  =  Utils . GetNormalizedVersionString ( inputObj . Version . ToString ( ) ,  inputObj . Prerelease ) ; 
295296 ProcessInstallHelper ( 
296297 pkgNames :  new  string [ ]  {  inputObj . Name  } , 
297298 pkgVersion :  normalizedVersionString , 
298299 pkgPrerelease :  inputObj . IsPrerelease , 
299-  pkgRepository :  new  string [ ] {  inputObj . Repository  } , 
300+  pkgRepository :  new  string [ ] {  inputObj . Repository  } , 
300301 pkgCredential :  Credential , 
301302 reqResourceParams :  null ) ; 
302303 } 
@@ -430,8 +431,10 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
430431 WriteDebug ( "In InstallPSResource::RequiredResourceHelper()" ) ; 
431432 foreach  ( DictionaryEntry  entry  in  reqResourceHash ) 
432433 { 
433-  InstallPkgParams  pkgParams  =  new InstallPkgParams ( ) ; 
434+  InstallPkgParams  pkgParams  =  new ( ) ; 
434435 PSCredential  pkgCredential  =  Credential ; 
436+  string  pkgVersion  =  String . Empty ; 
437+  bool  isPrerelease  =  false ; 
435438
436439 // The package name will be the key for the inner hashtable and is present for all scenarios, 
437440 // including the scenario where only package name is specified 
@@ -450,8 +453,7 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
450453 return ; 
451454 } 
452455
453-  string  pkgVersion  =  String . Empty ; 
454-  if  ( ! ( entry . Value  is  Hashtable  pkgInstallInfo ) ) 
456+  if  ( entry . Value  is  not Hashtable  pkgInstallInfo ) 
455457 { 
456458 var  requiredResourceHashtableInputFormatError  =  new  ErrorRecord ( 
457459 new  ArgumentException ( $ "The RequiredResource input with name '{ pkgName } ' does not have a valid value, the value must be a hashtable.") , 
@@ -467,7 +469,7 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
467469 // Install-PSResource -RequiredResource @ { MyPackage = @{ version = '1.2.3', repository = 'PSGallery' } } 
468470 if  ( pkgInstallInfo . Count  !=  0 ) 
469471 { 
470-  var  pkgParamNames  =  pkgInstallInfo . Keys ; 
472+  ICollection  pkgParamNames  =  pkgInstallInfo . Keys ; 
471473
472474 foreach  ( string  paramName  in  pkgParamNames ) 
473475 { 
@@ -491,13 +493,27 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
491493 } 
492494
493495 pkgVersion  =  pkgInstallInfo [ "version" ]  ==  null  ?  String . Empty  :  pkgInstallInfo [ "version" ] . ToString ( ) ; 
496+ 497+  // Prerelease - Handle both string and boolean 
498+  object  prereleaseObj  =  pkgInstallInfo . ContainsKey ( "prerelease" )  ?  pkgInstallInfo [ "prerelease" ]  :  null ; 
499+  if  ( prereleaseObj  !=  null ) 
500+  { 
501+  if  ( prereleaseObj  is  bool  b ) 
502+  { 
503+  isPrerelease  =  b ; 
504+  } 
505+  else  if  ( prereleaseObj  is  string  s ) 
506+  { 
507+  isPrerelease  =  s . Equals ( "true" ,  StringComparison . OrdinalIgnoreCase ) ; 
508+  } 
509+  } 
494510 } 
495511
496512 ProcessInstallHelper ( 
497513 pkgNames :  new  string [ ]  {  pkgName  } , 
498514 pkgVersion :  pkgVersion , 
499-  pkgPrerelease :  pkgParams . Prerelease , 
500-  pkgRepository :  pkgParams . Repository  !=  null  ?  new  string [ ]  {  pkgParams . Repository  }  :  new  string [ ] { } , 
515+  pkgPrerelease :  isPrerelease , 
516+  pkgRepository :  pkgParams . Repository  !=  null  ?  new  string [ ]  {  pkgParams . Repository  }  :  new  string [ ] { } , 
501517 pkgCredential :  pkgCredential , 
502518 reqResourceParams :  pkgParams ) ; 
503519 } 
@@ -506,7 +522,7 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
506522 private  void  ProcessInstallHelper ( string [ ]  pkgNames ,  string  pkgVersion ,  bool  pkgPrerelease ,  string [ ]  pkgRepository ,  PSCredential  pkgCredential ,  InstallPkgParams  reqResourceParams ) 
507523 { 
508524 WriteDebug ( "In InstallPSResource::ProcessInstallHelper()" ) ; 
509-  var  inputNameToInstall  =  Utils . ProcessNameWildcards ( pkgNames ,  removeWildcardEntries : false ,  out  string [ ]  errorMsgs ,  out  bool  nameContainsWildcard ) ; 
525+  var  inputNameToInstall  =  Utils . ProcessNameWildcards ( pkgNames ,  removeWildcardEntries : false ,  out  string [ ]  errorMsgs ,  out  bool  nameContainsWildcard ) ; 
510526 if  ( nameContainsWildcard ) 
511527 { 
512528 WriteError ( new  ErrorRecord ( 
@@ -549,7 +565,7 @@ private void ProcessInstallHelper(string[] pkgNames, string pkgVersion, bool pkg
549565 this ) ) ; 
550566 } 
551567
552-  var  installedPkgs  =  _installHelper . BeginInstallPackages ( 
568+  IEnumerable < PSResourceInfo >  installedPkgs  =  _installHelper . BeginInstallPackages ( 
553569 names :  pkgNames , 
554570 versionRange :  versionRange , 
555571 nugetVersion :  nugetVersion , 
0 commit comments