Public/Install-Configurations.ps1

Function Install-Configurations {
  <#
      .Synopsis
      Installs all needed configurations
 
      .Description
      Installs all needed configurations
 
       
 
      #>


  [CmdletBinding()]
  param()
  begin
  {
    $ModuleConfig = Get-ItemProperty -Path 'HKLM:\SOFTWARE\PSWCMA'
    $ConfigurationPath = "$($ModuleConfig.FilePath)\Configuration"
    $Groups = Get-ConfigurationGroups -Filter $ModuleConfig.AdFilter -ADServer $ModuleConfig.ActiveDirectory -Path $ModuleConfig.FilePath -Baseline $ModuleConfig.BaseLineConfig
  }
  process
  {
    $ConfigCount = Get-Configurations -ConfigurationNames $Groups -GitServer $ModuleConfig.Git -Path $ModuleConfig.FilePath
    Update-LocalConfigManager -ConfigCount $ConfigCount -ConfigNames $Groups -Path $ModuleConfig.FilePath
    if($ConfigCount -eq 1) {
      
      $Group = $Groups[0].Name
      Write-Verbose "Only one Configuration to install. Install from $ConfigurationPath\$Group"
      Start-DscConfiguration -Path "$ConfigurationPath\$Group" -ComputerName localhost -Wait
    } 
    else {
      Write-Verbose "Going to install $ConfigCount Configurations"
      foreach($Group in $Groups) {
        Publish-DscConfiguration -Path "$ConfigurationPath\$($Group.Name)" -ComputerName localhost
      }
      Start-DscConfiguration -UseExisting -ComputerName localhost -Wait
    }
  }
  end
  {
    Write-Verbose "Finished installing Configurations"
  }

}