Jump to content

Recommended Posts

Posted (edited)

$260???? i was recently quoted $130 per month and that includes the 50% educational discount. :(

 

and that's for 130 pc's

Edited by habz99
Posted
My memory of dabbling with PDQ the other year was that it needed client machines to be on when you start a deployment, whereas a GPO could just be left in place to be picked up by machines as and when they were in use or get moved into/out of the scope of the GPO. Am I remembering PDQ wrongly?
Posted
My memory of dabbling with PDQ the other year was that it needed client machines to be on when you start a deployment, whereas a GPO could just be left in place to be picked up by machines as and when they were in use or get moved into/out of the scope of the GPO. Am I remembering PDQ wrongly?

That's true of the free version, but with the paid version (around £250) you can schedule deployments and set it to retry offline machines

Posted

+1 PDQ with inventory you can take it a couple steps further.

deploy to only the machines with the old version

inventory detects when the PC is online (heartbeat)

deploy to all the online machines then schedule a deployment on heartbeat will get the rest as they come online.

The retry mentioned previously just tries every hour.

 

Also the paid version has package and collection libraries, so all you need to do is select the packages and click import. They do the rest.

Posted

Chocolatey works really well in the schools where they have Software like Impero or ABTutor as you can run this very easily with the remote CMD tools.

 

This is true for both the install of chocolatey and the install of the packages.

 

The user is unaware of the install and it can be installed with very little effort.

 

Windows 10 has support for oneget (windows version, sort of) built in.

 

https://github.com/OneGet/oneget

 

BoX

  • Thanks 2
  • 2 years later...
Posted

https://chocolatey.org/docs/how-to-setup-offline-installation

 

The link to the offline installer has moved, and it's a slightly different line to change for the local path to the chocolatey.0.10.15.nupkg file.

 

Once you have your own local copy on a file share

 

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('\\dfs.share\sharename$\ChocolateyLocalInstall.ps1'))

 

Will install it locally, and not overwrite if already installed

Posted

Simplest choco deployment system I could think of: Generally we're following https://chocolatey.org/docs/how-to-setup-offline-installation

 

But most of it can be skipped. In fact most of section 0 can be skipped because we're not really doing a whole push packages to a server thing, just copying .nupkg files to a file share. https://chocolatey.org/docs/how-to-setup-offline-installation#exercise-2c-set-up-a-file-share-repository and https://chocolatey.org/docs/how-to-setup-offline-installation#exercise-6a-installing-chocolatey-on-clients-directly-using-powershell are more relevent.

 

So, you want a read-only share that anonymous users can read, for the computer machine user, like GPO installs.

 

3 folders in that, files, packages, config

 

In package: never delete or overwrite a package, only add new ones, all files have versions in their filename, so not too hard. Download nupkg files from Chocolatey website, reconfigure them to have the actual exe/msi/etc files embedded if you wish https://chocolatey.org/docs/how-to-recompile-packages

 

In files: I have an install.bat file to be added to a startup/shutdown/timed run:

Powershell.exe -executionpolicy Bypass -File "\\dfs.share\share$\choco\files\install-command.ps1"

 

An install-command.ps1 file:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('\\dfs.share\choco\files\ChocolateyLocalInstall.ps1'))
choco source remove --name="'chocolatey'"
choco source add --name="'internal_server'" --source="\\dfs.share\choco\packages" --priority="'1'"
choco feature enable -n allowGlobalConfirmation
\\dfs.share\choco\files\run-command.ps1

That last line just runs the command to actually install stuff straight away

 

run-command.ps1:

$name = $env:computername
$nameparts = $name.split("-")
$currentprefix = ""
ForEach ($part in $nameparts) {
   if ($currentprefix.Length -gt 0)
      { $currentprefix += "-" + $part }
   else
      { $currentprefix = $part }
   write-host $part, $currentprefix
   $path = "\\dfs.share\choco\config\" + $currentprefix + ".config"
   choco install $path
}
$path = "\\dfs.share\choco\config\default.config"
choco install $path

 

That will run various combinations of .config files, sn-site1-it-04 would run sn.config, sn-site1.config, sn-site1-it.config, and then default.config

 

Lets you do more complex stuff than just install the same packages everywhere

 

the .config files look like:


   
     
   

Just add more package id= lines. All those .config files go in the config folder.

 

And finally ChocolateyLocalInstall.ps1 which is from set 27 in https://chocolatey.org/docs/how-to-setup-offline-installation#exercise-0-prepare-for-internal-use although the correct link is https://chocolatey.org/docs/installation#completely-offline-install

 

Change line 46 to something like:

$localChocolateyPackageFilePath = '\\dfs.share\choco\packages\chocolatey.0.10.15.nupkg'

Posted

Don't forget the dependencies, even if they're already installed, eg .net, still need them to check

 

Running the install/run script when it was already installed took about 10 seconds, but it's async so won't hold up the startup phase.

 

Current list of things I've tried:


   
         
  
  
  
  
  
  
  
  
  
  
  
   

 

Turns out lightworks requires registration though.

  • 1 month later...
Posted

Couple of extra things

 

1. You want to add "choco upgrade all" to the script somewhere

2. "choco outdated" will you show you packages that are out of date compared to your local repo

3. "choco outdated -s https://chocolatey.org/api/v2/" to compared to public repo, now you know which new package files to download

4. https://chocolatey.org/packages/choco-cleaner will install a scheduled task to clean up old installers etc

  • 4 weeks later...
Posted

$name = $env:computername
$nameparts = $name.split("-")
$currentprefix = ""
ForEach ($part in $nameparts) {
   if ($currentprefix.Length -gt 0)
      { $currentprefix += "-" + $part }
   else
      { $currentprefix = $part }
   write-host $part, $currentprefix
   $path = "\\domain.local\choco\config\" + $currentprefix + ".config"
   choco install $path
}
$path = "\\domain.local\choco\config\dm.config"
choco install $path
choco upgrade all
$a = New-ScheduledTaskSettingsSet -StartWhenAvailable
Set-ScheduledTask "choco-cleaner" -Settings $a
$pathname =  "\\domain.local\logs\choco\"+$name+".txt"
choco outdated > $pathname

 

Now it will update existing installs, edit the scheduled task choco-cleaner adds to run after reboot if time missed, and output any outdated packages to a shared log folder

 

# example https://chocolatey.org/api/v2/package/tuxguitar/1.5.3
write-host "Getting list of outdated packages"
$output = choco outdated --limit-output -s https://chocolatey.org/api/v2/
$output | ForEach-Object {
   write-host "Downloading $_"
   $a = $_.split("|")
   $b = "https://chocolatey.org/api/v2/package/$($a[0])/$($a[2])"
   Invoke-WebRequest -uri $b -OutFile "$($a[0]).$($a[2]).nupkg"
}

This will get a list of outdated packages on the local computer (run it on a computer with everything installed), compared to the master internet list, not your local shared drive, and download all the new packages, so you can easily copy them to your local shared drive

  • Thanks 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...