Add Chocolatey Private Repo

$privateRepo='kimconnectrepo'
$privateRepoUrl='https://choco.kimconnect.net/chocolatey'
$priority=1

# Set private repo source if it doesn't exist
function addRepo{
  param(
    $privateRepoName,
    $privateRepoUrl,
    $priority=1
  )

  function testUrl($url){
    $HTTP_Request = [System.Net.WebRequest]::Create($url)
    $HTTP_Response = $HTTP_Request.GetResponse()
    $HTTP_Status = [int]$HTTP_Response.StatusCode
    If ($HTTP_Status -eq 200) {
        $valid=$true
    }Else {
      $valid=$false
    }
    If (!($HTTP_Response -eq $null)){ $HTTP_Response.Close()}
    return $valid
  }
  # Install Chocolatey from the Intranet private repo
  [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12  
  if (!(Get-Command choco.exe -ErrorAction SilentlyContinue)){
    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))}
  $privateRepo="'$privateRepoName' -s '$privateRepoUrl' --priority=$priority"  
  $sources=choco source list
  $privateRepoExists=$sources -match $privateRepoName     
  if (!$privateRepoExists -and $(testUrl $privateRepoUrl)){
      invoke-expression "choco source add -n=$privateRepo"
      return $true
  }elseif($privateRepoExists){
    write-host "Private repo $privateRepoName already exists on $env:computername." -foregroundcolor green
    return $True
  }else{
    return $false
  }
}
addRepo $privateRepo $privateRepoUrl $priority

2 thoughts on “Add Chocolatey Private Repo”

  1. This is perfect!

    I was looking for a way to add my private repo for company applications that we use internally to install on multiple computers.
    Do we need to add this to the bottom of the install.ps1 file from chocolatey or is this a standalone file? Any kind of brief setup guide would be great!

    Thank you!

Leave a Reply

Your email address will not be published. Required fields are marked *