- Power Det låter dig automatisera användningen av Spotlight-bilder och lokala mappar som bakgrunder och låsskärm genom skript som ändrar registret och tvingar skrivbordet att uppdateras.
- I miljöer som hanteras med Intune paketeras PowerShell-skript som program, vilket möjliggör distribution av företagsbakgrunder och homogena konfigurationer med hjälp av CSV-filer och resursmappar.
- PowerShell är ett viktigt verktyg för administration och distribution (IIS, Web Deploy, databaser SQL och MySQL), men dess kraft gör den också attraktiv för angripare, som använder den i fillösa attacker och ramverk efter utnyttjande.
- Nyckeln till att utnyttja PowerShell utan att öka risken ligger i att kombinera goda skriptpraxis, lämpliga exekveringspolicyer och säkerhetslösningar baserade på beteendeanalys.

I den här artikeln sammanför vi delar som vanligtvis presenteras separat : riktiga skript för att använda Spotlight-bilder som bakgrunder, exempel på automatisk bakgrundsrotation, hur man tillämpar allt detta i Intune-hanterade miljöer och en praktisk introduktion till PowerShells roll inom administration och cybersäkerhet . Målet är att du ska lämna med en omfattande förståelse för både visuell anpassning och riskerna och bästa praxisen för att automatisera ditt skrivbord.
Spotlight + PowerShell: Förvandla dina låsskärmsbilder till din dagliga bakgrund

Windows Spotlight visar spektakulära bilder på låsskärmen varje dag , men det finns inget inbyggt alternativ för att automatiskt använda dem som skrivbordsbakgrund. Det är där PowerShell kommer in: med ett litet skript kan du ange att Windows alltid ska använda den senaste Spotlight-bilden som din nuvarande användares bakgrund.
Nyckeln till proceduren ligger i Windows-registretSpotlight-bilderna som är associerade med användaren refereras i en sökväg under HKEY_LOCAL_MACHINEMer specifikt i en gren som konfigurerar LogonUI och kreativt innehåll, vilket ändras baserat på varje användares SID (säkerhetsidentifierare). Tricket är att identifiera det aktiva SID:t, konstruera lämplig registersökväg och sedan hämta den senaste avbildningen.
Ett typiskt skript börjar med att hämta SID:t för den aktuella användaren. genom ::GetCurrent()Det SID:t används för att skapa registersökvägen som pekar till låsskärmsinställningarna. Sedan listas undernycklarna som innehåller referenser till Spotlight-bilder, och den senaste nyckeln väljs, eftersom de vanligtvis sorteras efter skapandedatum, vilket gör det enklare att hitta den senaste bilden.
När rätt registreringsnyckel har hittatsSkriptet läser egenskapen som lagrar bildens sökväg i filformat (till exempel ett värde som heter landscapeImageoch sparar den sökvägen i en variabel. Den variabeln kommer senare att användas för att uppdatera användarens skrivbordsbakgrund i registergrenen. HKCU:\Control Panel\Desktop, vilket är där Windows lagrar bakgrundsbildsinställningarna.
För att undvika onödiga förändringarSkriptet jämför vanligtvis sökvägen till den aktuella Spotlight-bilden med den sökväg som är inställd som bakgrund i användarens registernyckel (WallPaperOm de matchar antas det att den senaste Spotlight-bilden redan används som skrivbordsbakgrund och att skriptet slutförs utan att något annat vidrörs, vilket minskar onödigt skärmflimmer eller uppdateringar.
En annan intressant detalj om dessa skript är kvaliteten på JPEG-filerna.Många administratörer utnyttjar detta för att säkerställa att värdet JPEGImportQuality en HKCU:\Control Panel\Desktop Den är satt till 100. Om nyckeln inte finns skapas den som en DWord med värdet 100; om det finns men har ett annat nummer uppdateras det. Detta förhindrar att Windows försämrar bildkvaliteten när den konverteras för användning som bakgrund.
Det sista steget är att tilldela den nya sökvägen till värdet Bakgrund. med Set-ItemProperty och tvinga Windows att uppdatera bakgrunden. Detta görs vanligtvis genom att anropa... RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters Skriptet körs i en loop i några sekunder, eftersom uppdateringen inte alltid fungerar på första försöket. Det gör flera anrop med en sekunds pauser för att säkerställa att skrivbordet målas om med den nya bilden.
En av de knepiga aspekterna av den här metoden är att den exakta registersökvägen där Spotlight-bilder lagras kan variera mellan datorer eller framtida versioner av Windows. Det är lämpligt att verifiera sökvägen i din miljö innan du distribuerar något i stor skala och kom ihåg att justeringar kan vara nödvändiga om Microsoft ändrar hur de lagrar denna information.
Rotera bakgrunder automatiskt från en mapp: det enkla fallet

Om du inte vill förlita dig på Spotlight Och om du föredrar att välja dina egna bilder gör PowerShell det också väldigt enkelt – till exempel att Ändra bakgrundsbilden automatiskt baserat på tid på dagen i Windows—. Du kan skapa en mapp, till exempel C:\Wallpapers, fyll den med foton och låt ett litet skript välja och tillämpa en bild regelbundet (till exempel en gång om dagen) med hjälp av Windows Schemaläggare.
Ett vanligt tillvägagångssätt är att lista bildfilerna med Get-ChildItem., begränsa dig till filer med parametern -File och välj sedan en slumpmässigt med hjälp av Get-RandomMed fastigheten .FullName Den fullständiga sökvägen hämtas från den filen, vilken sedan skrivs in i värdet Wallpaper från användarens register, precis som gjordes med Spotlight-bilder.
Efter uppdatering av bakgrundsbildsvärdetSkrivbordsbakgrunden tvingas uppdateras med samma teknik: ett anrop till RUNDLL32.EXE user32.dll,UpdatePerUserSystemParametersÄven om det enklaste exemplet bara gör det en gång, föredrar många administratörer i verkliga miljöer att upprepa anropet flera gånger eller lägga till en kort paus för att säkerställa att ändringen syns på alla skrivbordsmiljöer, särskilt på system med flera bildskärmar.
Den här typen av skript är idealiskt för små personliga automatiseringar : schemalägg det helt enkelt i Schemaläggaren så att det körs dagligen eller till och med varje gång du loggar in. Det kräver inte att du mixtrar med Spotlight-sökvägar eller användarens SID, och det fungerar med alla bildsamlingar, från företagsfoton till konstnärliga bakgrunder som laddats ner från internet.
Dessutom är dessa skript en bra ingångspunkt till PowerShell. För nybörjare: de låter dig öva med cmdlets som Get-ChildItem, Get-Random, Set-ItemProperty och grundläggande användning av Windows-registret utan behov av komplex kod. Härifrån är det enkelt att introducera förbättringar som filtrering efter tillägg, felloggen eller integration med externa tjänster.
Bakgrunder och låsskärmar hanterade med Intune
I affärsmiljöer blir saker och ting lite mer komplexa . Det räcker inte för en användare att bara ändra sin bakgrundsbild; många organisationer vill ha enhetliga bakgrunder, företagslåsskärmar och ibland bildspel som visar interna kampanjer, varumärkesbilder eller grundläggande företagsinformation. När team hanteras via Intune och med Windows 11:s produktivitetsinställningar blir PowerShell återigen en nyckelkomponent.
Ett typiskt scenario är en administratör som får en uppsättning bilder och begäran om att konvertera dem till ett bildspel för skrivbordsbakgrunden och ibland för låsskärmen. En lokal mapp definieras vanligtvis, till exempel C:\temp\slideshowtest Detta fungerar som en testplats där alla bilder som ska användas kopieras. Därifrån skapas ett skript som konfigurerar Windows att använda den mappen som bildkälla.
Intunes del handlar om att paketera det skriptet som en applikation (till exempel ett paket som kör .ps1och distribuera det till önskade enheter eller användargrupper. När skriptet körs i användarens kontext har det åtkomst till registernycklarna för HKCUdär du kan ställa in både skrivbordsbakgrund och låsskärmsbild eller -läge, med respekt för organisationens policyer.
En mer avancerad metod är att använda skript som är specifikt utformade för IntuneAppen paketerings- och distributionslösning. Ett exempel är ett skript som heter SetDesktop.ps1, åtföljd av en CSV-fil (SetDesktop.csvoch en mapp WallpaperCSV-filen fungerar som en konfigurationsfil med kolumner som bildfilnamn, placeringsstil (fyllning, centrering, anpassning etc.) och bakgrundsfärg i hexadecimalt format (till exempel #040E4C (för en mörkblå), vilket bara träder i kraft om presentationsstilen kräver det.
Den typiska strukturen för denna typ av lösning Det kan vara något liknande \IntuneApp\Wallpaper\wallpaper1.pngdär huvudbilden lagras med ett standardnamn. I CSV-filen definieras den till exempel enligt följande: WallpaperStyle=Fill så att Windows fyller hela skärmen samtidigt som bildförhållandet bibehålls och det som blir kvar beskärs, och en bakgrundsfärg i hexadecimalt format (till exempel, #040E4C (för en mörkblå), vilket bara träder i kraft om presentationsstilen kräver det.
För att testa beteendet lokaltMånga administratörer kör helt enkelt en fil SetDesktop.cmd vilket anropar skriptet i interaktivt läge. När det har verifierats att bakgrundsbilden är korrekt tillämpad och respekterar färg och stil, används automatiskt läge. -mode auto i PowerShell-skriptet för att integrera det i den tysta installationsprocessen som kommer att distribueras med Intune.
I organisationer som använder IntuneApp-systemetDet är till och med möjligt att justera publikationens målgrupp med hjälp av en annan CSV-fil (till exempel intune_settings.csv), som definierar vilka grupper av enheter eller användare som ska få den nya bakgrunden. Detta gör det möjligt att till exempel tillämpa olika bakgrundsbilder beroende på avdelning, land eller åtkomstnivå, allt centraliserat och automatiserat.
Konfigurera bakgrunder och låsskärm med externa bilder som Unsplash

Inte alla är begeistrade över Spotlight-bilder . Vissa användare föredrar andra arkiv som Unsplash, som erbjuder högkvalitativa foton med mycket flexibel licensiering. Ett vanligt tillvägagångssätt är att programmera ett skript som laddar ner en ny bild varje dag från en Unsplash-URL och sparar den med samma namn på disken, och skriver över den föregående filen.
När du har uppdaterat filen dagligenDet logiska tillvägagångssättet är att automatisera Windows användning av detta som både skrivbordsbakgrund och låsskärm. För bakgrunden krävs återigen ändringar. HKCU:\Control Panel\Desktop och tvinga fram uppdateringen med anropet till RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters, på ett mycket liknande sätt som de tidigare exemplen.
Låsskärmsinställningen är lite mer specifik . Windows tillhandahåller ett API och registerinställningar för att definiera låsskärmsbilden, även om det inte är lika enkelt som den klassiska bakgrundsbilden. Många användare överväger att använda detta API eller att tillgripa alternativa registerinställningar, och accepterar att de måste experimentera för att se vilken kombination som fungerar bäst på deras version av Windows 10 eller 11.
I dessa scenarier är det vanligt att nedladdningsskriptet och applikationsskriptet är separata : det ena hanterar hämtning av den dagliga bilden från internet och sparning av den med ett fast namn, medan det andra, schemalagt strax därefter, helt enkelt tar den filen och ställer in den som skrivbordsbakgrund och (om tillämpligt) som låsskärm. Detta hjälper vid felsökning: om nedladdningen misslyckas fortsätter applikationsskriptet att arbeta med den senast tillgängliga bilden.
När du förlitar dig på externa tjänster som Unsplash måste du också ta hänsyn till nätverkstillgänglighet, proxypolicyer och potentiella ändringar av fjärr-API:et. Det är en bra idé att implementera grundläggande felhantering och loggning (till exempel att registrera datum, URL och resultat för varje nedladdning i en lokal logg) för att snabbt upptäcka om något har slutat fungera.
PowerShell som ett automatiserings- och säkerhetsverktyg: det goda och det farliga
Bakom alla dessa bakgrundsbilder finns en bredare verklighet : PowerShell är ett extremt kraftfullt skriptspråk och kommandoradsgränssnitt för administrativa uppgifter, konfigurationsautomation och säkerhetsåtgärder. Samma kraft är det som gör det till ett så attraktivt verktyg för angripare.
Ur ett administrativt perspektivPowerShell låter dig lista moduler med Get-Module -ListAvailableUpptäck alla tillgängliga kommandon med Get-Commandinteragerar med registret, tjänster, IIS, databaser och praktiskt taget alla systemkomponenter. Detta gör den oumbärlig för Windows-systemadministratörer och även för plattformsoberoende scenarier tack vare PowerShell Core, som körs på Windows. Linux och macOS.
Säkerhetsmässigt måste dock flera risker beaktas.Angripare kan missbruka legitima cmdlets för att inaktivera Microsoft Defender genom Set-MpPreference -DisableRealTimeMonitoring $true eller exkludera hela rutter från analysen med Add-MpPreference -ExclusionPath "c:"De kan också använda Get-PSDrive att lista enheter, Get-EventLog för att granska loggar för känslig information eller granska PowerShell-kommandohistoriken för att försöka återställa lösenord som används direkt på kommandoraden.
PowerShell låter dig köra skript från disk eller bara i minnetDetta underlättar fillösa attacker, vilka är svåra att upptäcka med hjälp av filbaserade analyslösningar. Med cmdlet:en Invoke-Expression (Alias iexDet är möjligt att ladda ner skript från internet och köra dem direkt i minnet, ofta tillsammans med parametrar som -ExecutionPolicy Bypass y -nop (utan profil) för att kringgå körningsbegränsningar.
Under senare år har specialiserade exploateringsramverk som PowerSploit och PowerShell Empire dykt upp, vilka erbjuder samlingar av skript för efterexploatering, keylogger-körning, extrahering av autentiseringsuppgifter med Mimikatz och andra avancerade tekniker. Dessa verktyg drar full nytta av PowerShells flexibilitet och djupa integration med operativsystemet.
För försvararna är det inte ett alternativ att helt enkelt blockera PowerShell.exe.PowerShell är en integrerad del av Windows, och det finns också verktyg som kan köra det via biblioteket. System.Management.Automation.dll utan att gå igenom den vanliga körbara filen. I praktiken kan vilken process som helst köra PowerShell-skript om den DLL-filen missbrukas, så moderna säkerhetslösningar tenderar att fokusera på beteendet snarare än den specifika binärfilen som används.
Lösningar som SentinelOne förlitar sig på beteendeanalys : de övervakar processer, kommandoradsargument, registeråtkomst, nätverks- och filoperationer och använder detta sammanhang för att identifiera när PowerShell-användning är legitim (till exempel att ändra en företags skrivbordsbakgrund) och när det är en del av en attackkedja. På så sätt kan PowerShell fortsätta att användas som ett administrativt verktyg utan att lämna dörren öppen för missbruk.
PowerShell-skript för webbdistribution och infrastruktur
Utöver bakgrunder och visuell anpassning används PowerShell i stor utsträckning för att konfigurera hela infrastrukturer, såsom IIS-servrar och offentliga eller interna webbplatser. Ett utmärkt exempel är den uppsättning skript som installeras av Web Deploy (v2.1), utformade för att underlätta distribution av webbapplikationer och databashantering.
Dessa skript inkluderar verktyg som SetupSiteForPublish.ps1, CreateSqlDatabase.ps1, CreateMySqlDatabase.ps1 och AddDelegationRules.ps1 . De är utformade för att automatisera allt från att skapa webbplatser i IIS och distribuera användare till att etablera SQL- eller MySQL-databaser och konfigurera de delegeringsregler som krävs för att användare säkert ska kunna publicera innehåll utan att vara serveradministratörer.
För att använda den här typen av skript behöver du en miljö med IIS 7 eller högre , det vill säga Windows Server 2008 eller 2008 R2, och användaren som kör dem måste ha administratörsbehörighet. Du måste också se till att webbserverrollen är aktiverad, att IIS Management Service körs, att PowerShell 2 är tillgängligt och att Web Deploy är installerat med integrationskomponenten Management Service.
Skriptet SetupSiteForPublish.ps1, kört utan parametrar, skapar en standardwebbplats som heter WDeploySite med fysisk rot i %systemdrive%\inetpub\WDeploySite, en associerad grupp av applikationer WDeployAppPool och en bindning på port 8080 (eller nästa tillgängliga port). Skapa dessutom en lokal användare som inte är administratör (WDeploySiteuser), ger den fullständiga behörigheter över webbplatsmappen och IIS-administratörsbehörigheter för den specifika webbplatsen och sparar en konfigurationsfil (WDeploy.PublishSettings) på skrivbordet som kan användas av verktyg som WebMatrix eller Visual Studio.
SetupSiteForPublish.ps1 kan också användas mer flexibelt genom parametrar som siteName, sitePhysicalPath, siteAppPoolName, sitePort, deploymentUserName, deploymentUserPassword, managedRunTimeVersion, publishSettingSavePath y publishSettingFileNameDetta gör det till exempel möjligt att publicera till en befintlig webbplats för en specifik användare eller skapa en ny webbplats med ett helt anpassat namn, fysisk sökväg, port och inloggningsuppgifter.
För den delen av SQL-databasCreateSqlDatabase.ps1 automatiserar skapandet från en databas, en inloggning, en användare med behörigheter db_owner och motsvarande anslutningssträng, som sparas i samma publiceringskonfigurationsfil. Parametrarna låter dig definiera databasnamn, användarnamn och lösenord, samt ange SQL-administratören (till exempel sa) och instansen (som standard) .\SQLExpress), utöver sökvägen och namnet på konfigurationsfilen.
I miljöer som använder MySQLCreateMySqlDatabase.ps1 utför en liknande funktion: den genererar databasen, skapar en användare med fullständiga rättigheter över den (som standard begränsad till localhost) och lägger till anslutningssträngen i en publiceringskonfigurationsfil. Parametrar som administratören kan justeras (root normalt), MySQL-värden (som standard localhost) och, om nödvändigt, ändra raden för privilegiumstilldelning för att tillåta fjärråtkomst med hjälp av '%' istället för 'localhost'.
För att slutföra säkerhets- och IIS-behörigheternaSkriptet AddDelegationRules.ps1 används, vilket konfigurerar delegeringsregler på servern för att tillåta vissa konton att skriva till applicationHost.config och utföra åtgärder som att återvinna programpooler. Det här skriptet kan skapa förhöjda konton specifikt för dessa uppgifter och stöder parametrar för att definiera användarnamn och lösenord, samt en modifierare som tillåter återställning av inloggningsuppgifter för befintliga konton.
Alla dessa exempel på distributionsskript visar samma filosofi som vi har sett med fondautomation och Spotlight: att utnyttja PowerShell för att omvandla repetitiva eller komplexa uppgifter till reproducerbara, standardiserade processer som är enkla att distribuera över flera servrar eller maskiner, vilket minskar mänskliga fel och förbättrar spårbarheten för konfigurationen.
Genom att kombinera PowerShell med rätt verktyg kan du både anpassa användarens visuella upplevelse (oavsett om det är med Spotlight, Unsplash eller företagsbakgrunder) och hantera webbinfrastruktur och säkerhet med finjusterad kontroll. Att förstå hur skript interagerar med registret, systemtjänster och exekveringspolicyer är det som gör skillnaden mellan en välautomatiserad miljö och en som är utsatt för onödiga risker.
Passionerad författare om bytesvärlden och tekniken i allmänhet. Jag älskar att dela med mig av min kunskap genom att skriva, och det är vad jag kommer att göra i den här bloggen, visa dig alla de mest intressanta sakerna om prylar, mjukvara, hårdvara, tekniska trender och mer. Mitt mål är att hjälpa dig att navigera i den digitala världen på ett enkelt och underhållande sätt.

