Durante la pandemia decidí utilizar el tiempo muerto para aprender más Powershell, uno de los proyectos que usé para motivarme fue un script para hacer un deploy de Windows 10 desde limpio a usable.
Nada que configuradores como Ansible no hagan ya mejor, pero necesitaba engrasar mis habilidades haciendo algo.
Una de las tareas es actualizar el software instalado previamente usando chocolatey
a través de una tarea programada. El workflow viene a ser este:
- Actualiza todo
- Borra todos los iconos que se creen en el escritorio público
- Lanza la tarea todos los días a las 0AM o, cuando el equipo esté disponible tras esa hora.
$taskAction = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument 'chocolatey upgrade --yes all; Get-ChildItem C:\Users\Public\Desktop -filter '*lnk' | foreach-object { Remove-item -Path $_.Fullname -Force -ErrorAction SilentlyContinue }'
$taskTrigger = New-ScheduledTaskTrigger -Daily -At 0AM
$taskPrincipal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount
$taskSettings=New-ScheduledTaskSettingsSet -StartWhenAvailable
Register-ScheduledTask -TaskName "ChocolateyUpdate" -Action $taskAction -Trigger $taskTrigger -Description "Update chocolatey packages" -Principal $taskPrincipal -Settings $taskSettings
Los logs asociados a la actualización son los de chocolatey, en una instalación por defecto, a fecha de escritura, están en C:\ProgramData\chocolatey\logs
·n·