Private/Get-Configurations.ps1

Function Get-Configurations {
  <#
      .Synopsis
      Downloads Configurations from your Git Server
 
      .Description
      Downloads Configurations from your Git Server
 
      .Outputs
      Returns the amount of Configurations
 
      #>


  [CmdletBinding()]
  param(
    [Parameter(Mandatory=$true)]
    $ConfigurationNames,
    [Parameter(Mandatory=$true)]
    $GitServer,
    [Parameter(Mandatory=$true)]
    $Path
  )
  begin
  {
    $CloneDirectory = "$Path\Configuration"
    $Counter = 0
  }
  process
  {
     foreach ($Configuration in $ConfigurationNames)
     {
       Write-Verbose "Cloning $GitServer/$($Configuration.Name).git"
       if(!(Test-Path -Path "$CloneDirectory\$($Configuration.Name)")){
         Start-Process "git" -ArgumentList "clone $GitServer/$($Configuration.Name).git $CloneDirectory\$($Configuration.Name)" -Wait
       } else {
         Set-Location "$CloneDirectory\$($Configuration.Name)"
         Start-Process "git" -ArgumentList "pull" -Wait
       }
       ++$Counter
     }
     
  }
  end
  {
    return $Counter
  }

}