Posted On April 28, 2021

Add Chocolatey Private Repo

kimconnect 2 comments
blog.KimConnect.com >> Codes >> 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”

  • 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 *

Related Post

Simple Active Directory & DNS Synchronization Script

@echo offGOTO push_or_pull:push_or_pullset /p action="Type in Push, Pull, or Quit. Press Enter for default action…

PowerShell: Replacing Notepad with Notepad Plus Plus

Update 12/04/2020: there's a simpler solution - install notepad2! choco install notepad2 -y The command…

Function to list Domain Controllers

Wuick Script: # This function runs faster than the "Get-ADDomainController -Filter *" methodfunction listControllers{$domain =…