Die Programme könne via Chocolatey schnell und einfach installiert werden. In den vergangenen beiden Beiträgen habe ich darübergeschrieben, wie Chocolatey installiert werden kann und wie Programme als Win32 App verteilt werden können. Hier geht es darum auch das Update dieser Chocolatey Applikationen via Intune zu gewährleisten.

Dieser Beitrag ist der zweite Teil einer Serie zur Verwaltung von Chocolatey Applikationen via Intune.

Part 1: chocolatey - Grundinstallation mit Intune | scloud
Part 2: chocolatey - Programm Installation - Intune | scloud
Part 3: Dieser Beitrag

Mit "choco upgared Appliaktion" kann eine spezifische Applikation und mit "choco upgrade all" alle via Chocolatey installierten Applikationen auf den neusten Stand gebracht werden. Dies einem Endbenutzer beizubringen, funktioniert aber in den meisten Fällen nicht und ist wenig zielführend. Oft scheitert es bereits an den Berechtigungen, welche der Benutzer auf dem Gerät lokal nicht hat.

Lange habe ich darum, um die Applikationen ajour zu halten das ebenfalls auch Chocolatey gelistete Paket "choco-upgrade-all-at-startup" (Chocolatey Software | (unofficial) Choco Upgrade All at Startup (Task) 2021.03.15). Leider hat dieses Pakt in Vergangenheit aber immer wieder zu Problemen geführt, weswegen ich die Funktionalität selbst in einem PowerShell Script aufgebaut habe.

Gelöst habe ich das mit einem Scheduled Task, welcher als Trigger "at Startup" und "Wöchentlich, am Mittwoch um 16.00 Uhr" hat. So wird bei jedem Start des Geräts nach Updates gesucht und Benutzer, welche Ihr Gerät selten bis nie neustarten, werden am Mittwoch abgefangen.

$PackageName = "choco-upgrade"

Start-Transcript -Path "$env:ProgramData\Microsoft\IntuneManagementExtension\Logs\$PackageName-install.log" -Force

# Check choco.exe 
$localprograms = C:\ProgramData\chocolatey\choco.exe list --localonly
if ($localprograms -like "*Chocolatey*"){
    Write-Host "Chocolatey installed"
}else{
    Write-Host "Chocolatey not Found!"
    break
}

# Scheduled Task for "choco upgrade -y"
$schtaskName = $PackageName
$schtaskDescription = "Upgade der mit Chocolaty verwalteten Paketen. "
$trigger1 = New-ScheduledTaskTrigger -AtStartup
$trigger2 = New-ScheduledTaskTrigger -Weekly -WeeksInterval 1 -DaysOfWeek Wednesday -At 4pm
$principal= New-ScheduledTaskPrincipal -UserId 'SYSTEM'
$action = New-ScheduledTaskAction –Execute "C:\ProgramData\chocolatey\choco.exe" -Argument 'upgrade all -y'
$settings= New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries

Register-ScheduledTask -TaskName $schtaskName -Trigger $trigger1,$trigger2 -Action $action -Principal $principal -Settings $settings -Description $schtaskDescription -Force


Stop-TranscriptCode language: PowerShell (powershell)

Das ganze Paket zum deployen auf meinem GitHub: scloud/chocolatey/chocolatey-updater at main · FlorianSLZ/scloud (github.com)

Win32 Settings

SettingsWert
Win32 Fileinstall.intunewin
NameChocolatey Updater
HerausgeberBetreuer der Umgebung, z.B. scloud
LogoChocolatey Updater.png
Nicht zwingend, aber schön, wenn das Unternehmens Portal genutzt wird.
Install command%SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command .\install.ps1
Uninstall command%SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command .\uninstall.ps1
Requirements64 bit
Detection rulecustom script, check.ps1
Dependencieschocolatey