
Si us flipen les fotos que mostra Windows Spotlight a la pantalla de bloqueig i us agradaria que apareguessin soles com a fons d'escriptori, ets al lloc adequat. Amb una mica de PowerShell pots automatitzar completament el canvi de wallpaper , ja sigui usant Spotlight, imatges de satèl·lits com Himawari-8 o fins i tot fotos diàries descarregades d'Internet.
A més de la part estètica, aquest tema enganxa molt bé amb una altra realitat: PowerShell és una navalla suïssa per automatitzar Windows, desplegar infraestructura i fins i tot jugar un paper clau en ciberseguretat . Al llarg de l'article filarem tot: scripts reals per automatitzar fons, com programar-los amb el Programador de tasques, el seu ús en entorns gestionats (Intune, GPO, CSP) i quins riscos comporta donar carta blanca als scripts.
Què és Windows Spotlight i com es relaciona amb PowerShell?
Windows Spotlight (Contingut destacat de Windows) és una funció que mostra imatges espectaculars i missatges a la pantalla de bloqueig , de vegades acompanyats de dades curioses, suggeriments o avisos de l'organització. En entorns corporatius es pot controlar mitjançant directiva de grup, CSP o solucions MDM com Intune.
Oficialment, Spotlight està disponible de forma nativa a les edicions Enterprise i Education , on els administradors poden decidir si es fa servir, si se substitueixen les seves imatges per una foto corporativa o si s'integren missatges interns. Per a un únic usuari, és tan senzill com anar a Configuració > Personalització > Pantalla de bloqueig i triar “Contingut destacat de Windows” al desplegable.
Quan es busca anar més enllà dels paràmetres visuals bàsics, PowerShell entra en joc com a eina d'automatització avançada des de Windows Terminal . Des de scripts que graten el registre de Windows per trobar la darrera imatge de Spotlight, fins a solucions que giren wallpapers des d'una carpeta local o descarreguen imatges externes cada pocs minuts, tot es pot orquestrar amb unes quantes línies de codi.
Automatitzar fons amb imatges de Spotlight i PowerShell
Un dels enfocaments més curiosos consisteix a reutilitzar directament la imatge que Spotlight mostra a la pantalla de bloqueig per establir-la com a fons descriptori. Windows no porta un botó màgic per a això, però les dades necessàries són al registre i PowerShell pot llegir-los sense massa drama.
El procés típic arrenca obtenint el SID (identificador de seguretat) de l'usuari actual, una cosa que es pot fer amb ::GetCurrent(). Aquest SID es concatena en una ruta concreta del registre, dins de HKEY_LOCAL_MACHINE, a la zona de configuració de LogonUI i contingut creatiu. Aquesta ruta és la que utilitza Windows per associar a lusuari les seves imatges de Spotlight.
Un cop muntada la ruta, l'script recorre les subclaus amb Get-ChildItem y pren la darrera clau disponible com a candidata. Normalment aquestes claus es creen en ordre cronològic, de manera que la darrera sol correspondre a la imatge més recent descarregada per Spotlight. Després es consulta la propietat que guarda la ruta del fitxer físic (sol anomenar-se alguna cosa com landscapeImage) i s'emmagatzema en una variable PowerShell.
Amb aquesta ruta a la mà, el següent pas és comparar-la amb el fons de pantalla actual de l'usuari, que es guarda a HKCU:\Control Panel\Desktop sota el valor WallPaper. Si les dues rutes coincideixen, vol dir que ja estem utilitzant aquesta imatge de Spotlight com a wallpaper i l'script pot sortir sense més ni més, evitant parpellejos o actualitzacions innecessàries de l'escriptori.
Molts scripts aprofiten el viatge per ajustar també la qualitat del JPEG que Windows utilitza per processar el fons. A la mateixa branca de registre (HKCU:\Control Panel\Desktop) existeix un valor anomenat JPEGImportQuality. Si no existeix, es crea com a DWord amb valor 100; si existeix però té un altre valor, s'actualitza a 100. Així ens assegurem que el fons de pantalla es vegi amb la màxima qualitat possible, sense compressió extra que faci malbé la foto. Si a més vols retocar les imatges abans de fer-les servir, consulta millors alternatives a Photoshop.
Quan es detecta que la imatge de Spotlight és diferent de la de l'escriptori, l'script actualitza el valor WallPaper amb la ruta de la nova imatge usant Set-ItemProperty. El registre, per si mateix, no provoca el canvi immediat, així que cal forçar Windows a refrescar el fons. El més habitual és trucar a RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters en un bucle amb pauses d'un segon per assegurar-vos que el sistema acaba aplicant el canvi.
Convé tenir en compte que la ruta exacta del registre on s'emmagatzemen aquestes claus de Spotlight pot variar segons versió de Windows o futures actualitzacions. Per això, qualsevol script que es desplegui en molts equips hauria de provar primer en un parell de màquines representatives i documentar bé la ruta usada, per si Microsoft decideix moure-la en properes versions.
Un truc habitual perquè tot això sigui realment automàtic és programar l'script al Programador de tasques de Windows perquè s'executi cada X minuts en el context de l'usuari actual. Un interval de 15 minuts sol ser més que suficient perquè quan Spotlight canviï d'imatge, l'escriptori s'actualitzi amb el nou fons sense intervenció de l'usuari.

Rotació automàtica de wallpapers des d'una carpeta
Si no vols dependre de Spotlight o prefereixes tenir la teva pròpia col·lecció d'imatges ordenades, una alternativa senzilla és crear una carpeta tipus C:\Wallpapers i deixar que PowerShell esculli un arxiu de forma automàtica cada cert temps, o recórrer a extensions per descarregar imatges.
La idea bàsica és fer servir Get-ChildItem per llistar els fitxers d'imatge (filtrant per extensions o usant el paràmetre -File per evitar subcarpetes), i després seleccionar un aleatòriament amb Get-Random. D'aquest objecte se'n fa servir la propietat .FullName per obtenir la ruta absoluta i s'escriu aquesta ruta a HKCU:\Control Panel\Desktop, en el valor WallPaper, de la mateixa manera que fèiem amb Spotlight.
Després de modificar el valor del registre, es torna a invocar RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters per forçar Windows a repintar l'escriptori. En equips amb diversos monitors o amb certes configuracions de memòria cau descriptori, de vegades compensa trucar a aquesta funció diverses vegades o fins i tot introduir una petita espera abans de tancar lscript.
Aquest tipus de script és ideal per a automatitzacions personals: només cal crear una tasca programada que s'executi en iniciar sessió o una vegada al dia. És una forma estupenda de practicar amb cmdlets bàsics de PowerShell (registre, bucles, selecció aleatòria) sense entrar a APIs complicades ni mòduls externs.
Automatitzar fons amb imatges del satèl·lit Himawari‑8
Una altra variant molt cridanera consisteix a usar imatges gairebé en temps real del satèl·lit meteorològic japonès Himawari‑8 . Aquest satèl·lit ofereix vistes de la Terra que es poden consultar públicament, i alguns usuaris han creat scripts a PowerShell per descarregar-les i convertir-les en un fons d'escriptori automàtic.
L'enfocament típic, publicat originalment a GitHub, consisteix en un script que descarrega la instantània més recent des dels servidors que exposen les imatges de l'Himawari‑8 i la desa en una ubicació local. Després de la descàrrega, PowerShell actualitza el fons d'escriptori amb aquesta imatge, de manera semblant al que ja hem vist: modifica el valor WallPaper del registre i força el refresc amb RUNDLL32.EXE.
Fins aquí tot bé, però al principi calia executar l'script manualment cada cop que es volia actualitzar el fons . Per evitar-ho, es recorre de nou al Programador de tasques: es crea una tasca que s'iniciï en iniciar sessió i es repeteixi, per exemple, cada 10 minuts. D'aquesta manera, l'script es llança automàticament, descarrega l'última captura del satèl·lit i renova el wallpaper amb una vista gairebé en directe del planeta.
Hi ha un detall de seguretat important: com que l'script sol estar sense signar, PowerShell bloqueja la seva execució per defecte. Per permetre-ho, la política d'execució es canvia temporalment amb alguna cosa com Set-ExecutionPolicy Unrestricted executat a una consola de PowerShell amb privilegis d'administrador. És una mesura còmoda però arriscada, així que convé valorar alternatives més segures (per exemple, Signat a distància o la signatura de scripts propis).
Al Programador de tasques, la configuració típica inclou: acció que crida PowerShell amb l'script com a argument (P. Ex. powershell.exe -File .\himawari.ps1), ubicació d'inici a la carpeta on hi ha l'script, i un desencadenador que l'executi en iniciar sessió i ho repeteixi cada X minuts de forma indefinida. Un cop configurat, t'oblides: cada cop que miris l'escriptori estaràs veient la darrera imatge que captura el satèl·lit.
Personalització avançada de colors i elements de la interfície amb PowerShell
Més enllà del fons de pantalla, molts usuaris volen automatitzar la personalització de colors del sistema : mode fosc o clar, color de la barra de tasques, accents en títols de finestra, etc. Per a més ajustaments revisa la configuració DPI de pantalla . Tot i que la interfície gràfica de Windows permet fer-ho a mà, en entorns de treball on es configuren molts equips és molt més còmode fer-ho via script.
Els ajustaments de color i tema s'emmagatzemen principalment en el registre sota branques de HKCU relacionades amb personalització i temes . Amb PowerShell es poden modificar aquests valors per, per exemple, activar mode fosc per a Windows, deixar les aplicacions en mode clar, o definir que la barra de tasques i el menú Inici usin un color específic com un blau marí corporatiu.
Un cop canviats els valors adequats, és possible forçar el refresc de la interfície amb trucades semblants a les utilitzades per al fons de pantalla o, en alguns casos, tancant i reobre sessió perquè tots els canvis s'apliquin sense inconsistències. Aquest tipus de script és especialment útil quan es despleguen configuracions estàndard descriptori en una empresa i es vol que tots els usuaris vegin la mateixa paleta de colors sense haver danar un a un.
Automatitzar fons i pantalles de bloqueig en entorns gestionats (Intune, CSP, GPO)
En organitzacions on els dispositius estan gestionats, no n'hi ha prou que cada usuari faci “els seus arranjaments” amb scripts locals . El normal és que el wallpaper, la pantalla de bloqueig i altres elements visuals es defineixin de manera centralitzada.
Per a aquests escenaris entren en joc diverses peces: Directiva de grup (GPO), proveïdors de serveis de configuració (CSP) i solucions MDM com Intune . Els CSP de directiva dexperiència permeten canviar programàticament el comportament de Spotlight, fons i missatges. GPO cobreix sobretot equips units a Active Directory tradicional, mentre que Intune se centra en dispositius gestionats al núvol (Entra ID, abans Azure AD).
Un patró força estès consisteix a empaquetar un script de PowerShell juntament amb una carpeta de wallpapers i un fitxer de configuració CSV. Per exemple, es pot tenir un script SetDesktop.ps1, un CSV SetDesktop.csv i una carpeta Wallpaper dins un mateix paquet IntuneApp. El CSV conté paràmetres com el nom del fitxer d'imatge, l'estil de presentació (Omplir, Ajustar, Centrar, Mosaic, etc.) i el color de fons en format hexadecimal (#040E4C per a un blau fosc, per exemple).
L'script llegeix el CSV, copia la imatge a la ubicació desitjada (sovint una ruta estàndard com \IntuneApp\Wallpaper\wallpaper1.png) i després ajusta al registre els valors de fons d'escriptori, estil i color base. Per provar-ho localment, se sol incloure un petit SetDesktop.cmd que truca a l'script en mode interactiu. Quan es verifica que funciona, es llança en mode automàtic (per exemple, amb el paràmetre -mode auto) per utilitzar-lo en desplegaments silenciosos via Intune.
En empreses que utilitzen sistemes com IntuneApp, un altre fitxer CSV com intune_settings.csv defineix l'audiència del desplegament: quins grups de dispositius o usuaris reben el nou fons. Això permet gran flexibilitat, com ara assignar wallpapers diferents per departament, país o nivell jeràrquic, sense tocar manualment cada equip.
Cal recordar que, fins i tot usant scripts propis per a fons, Spotlight es pot mantenir actiu per mostrar suggeriments, curiositats o missatges de l'organització sobre una imatge estàtica corporativa. Així, s'aconsegueix una barreja entre identitat visual d'empresa i continguts dinàmics de Microsoft.
Fons i pantalles de bloqueig amb imatges externes (Unsplash i similars)
Una altra via molt popular per automatitzar fons consisteix a estirar repositoris d'imatges com Unsplash , que ofereix fotografies d'alta resolució amb llicències permissives. Molts usuaris munten scripts diaris que descarreguen una imatge aleatòria o d'una categoria concreta i la usen com a wallpaper i, si és possible, com a imatge de pantalla de bloqueig.
El patró típic separa la lògica en dues peces: per una banda, un script que descarrega la imatge i la guarda sempre amb el mateix nom (Per exemple, C:\Wallpapers\daily.jpg) substituint el fitxer anterior; de l'altra, un script que, a partir d'aquest fitxer, actualitza el fons i la pantalla de bloqueig. Programant tots dos amb el Programador de tasques (primer la descàrrega i uns minuts després l'aplicació del fons) es pot tenir un escriptori que canvia només cada dia.
Per al wallpaper, el procés és idèntic al dels exemples anteriors: modificar HKCU:\Control Panel\Desktop i forçar el refresc amb RUNDLL32.EXE. La part de la pantalla de bloqueig, però, pot implicar ajustaments addicionals: Windows maneja aquesta imatge a través de claus específiques i polítiques que no sempre reaccionen igual en totes les versions, de manera que sol requerir una mica de prova i error o recolzar-se en documentació actualitzada de Microsoft.
En dependre d'un servei extern, aquests scripts haurien d'incloure maneig d'errors i un petit log local : registrar resultats de la descàrrega, codis d'estat HTTP, URL usat, etc. Això ajuda a detectar ràpidament si el proveïdor canvia l'API, si hi ha problemes de xarxa o si algun servidor intermediari corporatiu bloqueja el trànsit.
PowerShell com a eina d'automatització i ciberseguretat
Tots aquests exemples de fons bonics es recolzen en una realitat més profunda: PowerShell és una plataforma d'automatització extremadament potent i integrada a Windows , utilitzada tant per a administració legítima com, per desgràcia, per a activitats malicioses.
Des del costat d'administració, PowerShell permet explorar mòduls amb Get-Module -ListAvailable, descobrir ordres amb Get-Command, manipular el registre, gestionar serveis, treballar amb IIS, bases de dades i gairebé qualsevol component que tingui una API. La versió multiplataforma, PowerShell Core, ha ampliat el seu abast a Linux i macOS, de manera que la mateixa lògica es pot reutilitzar en entorns mixtos.
Al plànol de seguretat, aquesta mateixa potència resulta molt atractiva per a atacants. Amb cmdlets estàndard es poden desactivar components com Microsoft Defender mitjançant Set-MpPreference -DisableRealTimeMonitoring $true, excloure rutes completes amb Add-MpPreference -ExclusionPath "c:" o inspeccionar el registre d'esdeveniments a la recerca de pistes interessants amb Get-EventLog. Fins i tot el mateix historial de PowerShell pot delatar contrasenyes teclejades directament a la consola.
PowerShell facilita, a més, atacs sense arxius (fileless), executant codi directament en memòria. Amb construccions com Invoke-Expression (àlies iex) es pot descarregar un script des d'Internet i executar-lo al vol sense tocar disc, sovint combinat amb paràmetres com -ExecutionPolicy Bypass y -nop per saltar restriccions i perfils. No és casualitat que moltes “bromes” a PowerShell consisteixin en una línia que estira un escurçador tipus bit.ly per reproduir música o altres accions sense mostrar el contingut real de l'script.
En els darrers anys han proliferat frameworks ofensius basats en PowerShell , com PowerSploit o PowerShell Empire, que ofereixen col·leccions senceres de scripts per a postexplotació: des de keyloggers fins a extracció de credencials amb eines integrades com Mimikatz. Tot això es recolza en laccés profund que PowerShell té al sistema operatiu.
Per als defensors, simplement bloquejar PowerShell.exe no soluciona el problema: qualsevol aplicació .NET pot carregar la llibreria System.Management.Automation.dll i executar ordres PowerShell des d'aquí, evitant l'executable estàndard. Per això, les solucions modernes aposten per l'anàlisi de comportament, monitoritzant processos, arguments de línia d'ordres, accés al registre i al sistema de fitxers, així com connexions de xarxa, per determinar si un ús de PowerShell és raonable (canviar un fons corporatiu, per exemple) o encaixa en el patró d'una cadena d'atac.
Eines EDR/XDR com SentinelOne, entre d'altres, es basen en aquest enfocament: no bloquegen PowerShell com a tal, sinó que detecten patrons sospitosos en temps real. D'aquesta manera no es trenca l'automatització legítima (desplegaments, scripts d'administració, canvis de wallpapers programats) però se'n limita l'ús com a vector d'atac.
Notificacions i feedback visual/sonor en scripts de PowerShell
Quan els scripts triguen uns quants minuts a executar-se, pot ser desesperant quedar-se mirant la consola. Per això molts administradors recorren a estratègies de notificació creatives a PowerShell per saber quan ha acabat alguna cosa sense estar pendents de la finestra.
Una opció clàssica són els avisos sonors usant ::beep(), on s'especifiquen freqüència i durada. Amb combinacions diferents es poden crear petits “codis” auditius o fins i tot recrear melodies mítiques tipus Marxa Imperial de Star Wars o el tema dels Venjadors. És bàsicament un Write-Host sonor, ideal per marcar fites en un script llarg.
Una altra aproximació és estirar la API de veu de Windows mitjançant SAPI. Creant un objecte COM SAPI.SpVoice i trucant al seu mètode Speak(), un script pot llegir missatges en veu alta, reportant el progrés o el resultat d'una tasca. Amb uns quants ajustaments es poden canviar veus, idiomes o velocitat de lectura, cosa que dóna molt de joc tant per a productivitat com per a bromes internes.
A més, Windows ofereix diverses formes de notificar a l'usuari amb quadres de diàleg i el centre de notificacions. Amb Add-Type -AssemblyName PresentationFramework es pot usar ::Show() per llançar missatges emergents amb botons (Sí/No/Cancel·lar, per exemple) i diferents icones. També es poden muntar llistes visuals amb Out-GridView i l'opció -PassThru, permetent que l'usuari esculli entre diverses opcions en una finestra interactiva.
Per notificacions menys intrusives, es pot recórrer a globus de l'àrea de notificació usant System.Windows.Forms.NotifyIcon. L'script crea una icona associada al procés i mostra un “balloon tip” a la safata del sistema amb un missatge personalitzat durant uns segons. Ideal per avisar que un script ha acabat sense interrompre una trucada de vídeo o el treball en curs.
PowerShell en desplegaments web i infraestructura
Lluny del terreny purament visual, PowerShell és fonamental per desplegar i administrar infraestructures web , especialment en servidors amb IIS. Hi ha col·leccions de scripts dissenyades per treballar juntament amb eines com Web Deploy, simplificant la creació i configuració de llocs web, pools d'aplicacions i bases de dades associades.
Entre aquests scripts destaquen noms com SetupSiteForPublish.ps1, CreateSqlDatabase.ps1, CreateMySqlDatabase.ps1 y AddDelegationRules.ps1. Estan pensats per automatitzar l'alta d'un lloc web, la creació de credencials de publicació, la provisió de bases de dades SQL o MySQL i l'ajust fi de regles de delegació a IIS, de manera que els desenvolupadors puguin publicar sense ser administradors del servidor.
l'script SetupSiteForPublish.ps1, executat sense paràmetres, sol crear un lloc per defecte anomenat alguna cosa tipus WDeploySite amb arrel física a %systemdrive%\inetpub\WDeploySite, un application pool dedicat i un “binding” en un port lliure (per exemple, 8080). A més, genera un usuari local sense privilegis administratius amplis, li atorga permisos sobre la carpeta del lloc i sobre l'administració d'aquest lloc concret a IIS, i desa un fitxer .PublishSettings amb totes les dades necessàries per publicar des d'eines com WebMatrix o Visual Studio.
Aquest mateix script admet paràmetres per personalitzar nom del lloc, ruta física, pool, port, usuari i contrasenya , versió del runtime gestionat i ubicació/nom del fitxer de configuració de publicació, cosa que permet adaptar-lo tant a la creació de llocs nous com a l'habilitació de publicació en llocs ja existents.
En paral·lel, CreateSqlDatabase.ps1 automatitza la creació d'una base de dades SQL Server amb el vostre usuari i permisos db_owner, incorporant la cadena de connexió resultant al mateix fitxer de publicació. Es poden ajustar paràmetres com a nom de la base de dades, usuari SQL, contrasenya, compte administrador (per exemple, sa) i instància (.\SQLExpress per defecte).
Per a entorns que usen MySQL, CreateMySqlDatabase.ps1 compleix funcions similars: crea la base de dades, un usuari amb tots els privilegis sobre ella i actualitza el fitxer de configuració amb la cadena de connexió necessària. Normalment es restringeix l'accés a localhost, però es pot modificar a '%' per permetre accessos remots si l'arquitectura ho requereix (amb els riscos que això comporta).
Finalment, AddDelegationRules.ps1 configura regles de delegació a IIS perquè determinats comptes puguin modificar applicationHost.config en aspectes concrets (com reciclar pools d'aplicacions) sense necessitat de concedir privilegis d'administrador complet al servidor. També podeu crear comptes elevats específics per a aquestes tasques i comptar amb paràmetres per gestionar les vostres credencials de manera controlada.
Aquesta filosofia d'scripts de desplegament reflecteix la mateixa idea que hem anat veient a l'automatització de fons: convertir tasques repetitives i propenses a errors en processos reproduïbles i documentats , ja sigui perquè tots els usuaris tinguin el mateix wallpaper corporatiu o perquè tots els servidors web d'un entorn segueixin el mateix patró de configuració.
Tots aquests usos mostren com PowerShell serveix tant per a detalls estètics d'escriptori com per a capes crítiques d'infraestructura i seguretat . Dominar-lo permet automatitzar des de la simple rotació de fons de Spotlight fins a complexos desplegaments de llocs i bases de dades, sempre amb la cara B que un mal ús o mala configuració de seguretat pot convertir-lo en un vector d'atac potent.
Entendre bé on toca (registre, serveis, polítiques, IIS, Intune) és el que marca la diferència entre un entorn còmode i automatitzat i un de difícil de mantenir o fàcil de comprometre. Comparteix la informació perquè més usuaris coneguin sobre el tema.
