Guide: Hur man återanvänder task sequences i SCCM 2012 med PowerShell

När man som jag sätter upp nya SCCM-installationer på löpande band, både ute i verkligheten och i labb/test/demo-miljöer, så blir det snabbt väldigt tradigt att sitta och klicka runt i konsolen för att göra samma saker om och om igen. Tänk om det bara fanns något bra sätt att automatisera saker och ting…

PowerShell to the rescue!
Det mesta, men långt ifrån allt, som kan konfigureras i SCCM går att göra med färdiga cmdlets. En av de lite knepigare sakerna är att skapa task sequences. De färdiga möjligheter vi har innefattar cmdleten New-CMTaskSequence, men den räcker inte för mina och förmodligen de flestas behov. Jag vill normalt integrera MDT med SCCM och använda en MDT-baserad task sequence. Sen finns det ett antal saker som jag alltid gör i mina task sequences, såsom att lägga till diverse variabler, ändra eller ta bort vissa av de inbyggda stegen samt lägga till egna. Vidare finns det saker som jag alltid vill lägga till eller ändra i de standardpaket som används av task sequencen, såsom boot imagen och MDT Settings- och Toolkit-paketen.

Det jag vill uppnå är alltså möjligheten att skapa en bra mall med en task sequence och alla tillhörande paket, som jag enkelt kan återanvända i nya SCCM-miljöer. Använder man bara MDT som fristående verktyg är ju detta väldigt tacksamt eftersom allting man gör bara sparas i en mapp som man kan kopiera om och om igen. Men SCCM är trixigare eftersom task sequencen bl.a. innehåller referenser till paket ID’n i databasen.

Vi kan använda oss av de inbyggda cmdleterna Export-CMTaskSequence och Import-CMTaskSequence (går också att göra i konsolen), men dessa är inte tillräckligt bra och flexibla i min mening. De har haft, och har fortfarande en del buggar, och exporten blir i form av en zip-fil som blir omständig att redigera och uppdatera på ett automatiserat sätt innan en import.

Så istället ska vi titta på hur vi kan göra detta själva med lite knåpande i PowerShell.

Det vi gör i den här guiden är följande:

  1. Skapa en bra task sequence som vi vill använda som mall och exportera denna. Exportfilen generaliseras sedan så att den går att använda för framtida importer i nya miljöer.
  2. Importera in de till task sequencen tillhörande paketen till den nya SCCM-miljön.
  3. Uppdatera export-filen som innehåller task sequencen som ska importeras med korrekta paket ID’n som matchar den nya SCCM-miljön, och importera denna.

I det här exmplet kommer jag använda en helt vanlig MDT-baserad task sequence som innehåller följande paket:

  • Boot image
  • Windows image
  • SCCM klient
  • MDT Toolkit paket
  • MDT Settings paket
  • USMT paketet kommer jag i det här exemplet använda det som är färdigskapat i SCCM

Scripten nedan är alltså ett enkelt exempel, så vill man t.ex. ha fler paket än så här får man lägga till dem i scripten.

Exportera task sequencen

Vi börjar med att manuellt skapa en task sequence i SCCM baserad på MDT (MDT integrationen måste alltså vara gjord) genom att stega igenom wizarden. Vi skapar de paket som behövs, såsom boot imagen och MDT-paketen. Jag har i det här exemplet också skapat ett eget paket för SCCM klienten där jag har lagt med senaste cumulative update. Vi modifierar task sequencen och de tillhörande paketen och lägger till och ändrar allt som vi tycker är bra. När vi känner oss nöjda och har en bra mall som vi vill återanvända så exporterar vi den med följande script:

Vi använder oss här alltså inte av Export-CMTaskSequence. Istället hämtar vi värdet från attributet Sequence från Get-CMTaskSequence, vilket innehåller just hela task sequencen i xml-format.

Uppdatera variablerna i början så att site code, namn på task sequencen, namn och sökväg till exportfilen samt namnen på paketen i task sequencen matchar din miljö.

Efter att scriptet körts har vi fått en xml-fil som innehåller hela task sequencen. Alla paket ID’n har bytts ut mot unika påhittade strängar, som vi enkelt kan hitta och byta ut igen när task sequencen ska importeras till en ny miljö. Den här filen sparar vi tillsammans med alla paket som används i task sequencen, så att vi har en liten mapp som innehåller allt som vi vill återanvända.

Importera paketen

I vår nya miljö där vi vill återanvända vår task sequence med tillhörande paket så börjar vi med att importera in paketen med följande script:

Ändra site code, namn på distributionspunktsgrupp samt namn och sökvägar till paketen så att de matchar din miljö.

Scriptet kommer skapa Windows image, boot image samt de övriga paketen som Packages. Boot imagen kommer konfigureras med flaggan för att det ska disttribueras från PXE, samt aktivera stöd för kommandoprompt med F8.

Till sist kommer samtliga paket att distribueras till den distributionspunktsgrupp som vi angett (jag skapar ALLTID en grupp även om det bara finns en enda DP).

Importera task sequencen

När nu alla paket finns på plats kan vi importera in vår sparade task sequence med följande script:

Ändra site code, namn på exportfilen och den task sequence som ska skapas, samt namnen på paketen i task sequencen så att de matchar din miljö.

Scriptet kommer göra en kopia av exportfilen, så att vi inte förstör orginalet, och uppdatera denna med de riktiga paket ID’n som vi nu har i vår nya miljö. Därefter kommer en ny task sequence att skapas, med det namn som vi har valt, baserad på denna exportfil. Till sist kommer vår boot-image att associeras med task sequencen.

Vóila! Nu har vi en fullt fungerande task sequence, med korrekta paket-referenser, som är redo att börja användas direkt. Inte ett enda klick har vi behövt göra i konsolen.

Ladda ned scripten här

 

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Lämna ett svar

Your email address will not be published.

Fyll i svar på den enkla captcha-frågan nedan för att få kommentera * Time limit is exhausted. Please reload CAPTCHA.