Looping through groups of groups in order

Welcome Forums General PowerShell Q&A Looping through groups of groups in order

Viewing 1 reply thread
  • Author
    Posts
    • #233641
      Participant
      Topics: 49
      Replies: 194
      Points: 783
      Helping Hand
      Rank: Major Contributor

      I want to loop through groups first set of values in each group, then loop through the next set of values. I have a Cluster with 4 physical Nodes, that hosts 8 Sql Server Instances, 2 Instances per Node. I want to run a script on each Instance, on each Node. But I only want to run the script on 1 Instance per Node at a time. So run it on Inst01 on Node01, Inst02 on Node02, Inst03 on Node 03 and on Inst04 on Node 04 , I’ll use start-job for each. Then, once each job has completed, loop through the next group and run it on Inst11 on Node01, Inst12 on Node02, Inst13 on Node03 and Inst14 on Node04 , using start-job.

      The information about the Instances and Nodes come from this

      $Instances = @()
      foreach($SqlInstance in $SqlServers | ?{$_ -Match 'PROD'} ) {
      [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
      $Srv = New-Object ("Microsoft.SqlServer.Management.Smo.Server") $sqlInstance
      $Instances += [PSCustomObject]@{
      Instance = $Srv.DomainInstanceName
      IsClustered = $srv.IsClustered
      PhysicalHost = $Srv.ComputerNamePhysicalNetBIOS
      }
      }
      
      $Groups = $Instances | Group PhysicalHost
      
      foreach($Obj in $groups) {
      for ($i=0; $i -le $Obj.Count; $i++) {
      $obj.Group.Instance[$i]
      $obj.Group.PhysicalHost[$i]
      }
      }
      
      

      Which gives me

      INSTP10\ROD10
      NODE-P01
      INSTP03\PROD03
      NODE-P01
      INSTP11\PROD11
      NODE-P03
      INSTP07\PROD07
      NODE-P03
      INSTP04\PROD04
      NODE-P02
      INSTP05\PROD05
      NODE-P02
      INSTP06\PROD06
      NODE-P04
      INSTP08\ROD08
      NODE-P04
      
      

      How can I loop through that group taking only 1 Instance per Node but next loop take the next in the group for each node ?

      • This topic was modified 1 month ago by Iain.
    • #233680
      Participant
      Topics: 3
      Replies: 417
      Points: 1,462
      Helping Hand
      Rank: Community Hero

      Are you wanting the entire first set to finish before starting any of the second? Or are you wanting the second instance to start on a given node once its first one is complete, regardless of the other nodes status?

Viewing 1 reply thread
  • You must be logged in to reply to this topic.