Automatisk backup av Task Sequences i SCCM

Task Sequences i SCCM är så pass viktigt och känsligt att en extra backuplösning för just Task Sequences är en god idé. Här kommer en guide med tillhörande script för hur man kan ta en automatisk backup av en Task Sequence i samma ögonblick som någon gör en ändring i den. Tanken är att använda en Status Filter Rule som triggas varje gång en Task Sequence ändras. Regeln kör då ett script som exporterar Task Sequencen till en XML-fil, och sen importerar den igen så att man har den enkelt tillgänglig inne i konsolen.

Då man typiskt har fler än en Task Sequence så styr man exakt vilken man vill ta backup på genom att ange Task Sequence ID som en parameter till scriptet. (Vill du ta backup på fler Task Sequences så är det bara att lägga till fler Status Filter Rules eller modifiera scriptet). Scriptet kommer läsa ut vilken Task Sequence som modifierats från det Status Message som triggar regeln, och jämföra med vilken Task Sequence du angett. Om de inte matchar så sker ingen backup. På så vis kan man mecka runt hur mycket man vill i alla Task Sequences man använder för Test osv, utan att bli nedlusad med backuper. Allting loggas också i en loggfil som sparas i samma katalog som XML-filerna.

För att det här ska bli riktigt snyggt bör man använda versionshantering. Så som jag gör är att jag använder ett steg inne i Task Sequencen, av typen ”Set Task Sequence Variable”, där jag sparar ett versionsnummer. Varje gång jag ändrar något i Task Sequencen så uppdaterar jag också versionsnumret. (Jag sparar också versionsnumret i WMI och i registret på alla datorer, så att jag enkelt kan använda detta i inventeringsrapporter och queries, men det är en annan bloggpost). Scriptet förutsätter att det finns ett sådant här steg, och man anger vad man kallat variabeln i en parameter till scriptet.

Jag använder semantic versioning, alltså MAJOR, MINOR, PATCH som versionsnummer, men här brukar jag också lägga till dagens datum, så att jag på ett och samma ställe ser vilket datum ändringen gjordes. Så versionsnumret i mina Task Sequences ser alltså ut så här (exempel):
1.0.0 – 2018-01-01

(En ny MAJOR version brukar jag använda t.ex. när jag börjar med en ny Windows 10 version, eller någon riktigt stor förändring i Task Sequencen. En MINOR version är de vanliga löpande förändringarna, som t.ex. byta ut OS-imagen månadsvis mot en patchad image, eller lägga till ett nytt drivrutinspaket, m.m. Och PATCH är alltså en fix av någonting som är fel och inte fungerar i Task Sequencen).

Scriptet kommer använda detta versionsnummer och lägga till det i namnet på den exporterade XML-filen samt den importerade Task Sequencen. På så vis får vi en snygg och prydlig versionshistorik.

Tips! För att verkligen ha kontroll, använd en enkel change log där ni antecknar exakt vad varje förändring består av.

Steg för steg…

  1. Ladda ned scriptet från Technet Gallery
  2. När scriptet körs kommer alltså vald Task Sequence att först exporteras ut som en XML-fil. Skapa en mapp för detta ändamål på Site Servern, t.ex. C:\TSBackup.
  3. Scriptet kommer också importera in backupen igen till SCCM så att vi enkelt kan se alla våra backuper där. Dessa vill vi ha snyggt och prydligt placerade i en egen mapp. Skapa alltså en sådan under Task Sequences inne i SCCM-konsolen, och kalla den t.ex. Backup.
  4. I den Task Sequence du vill ta backup på, lägg till ett steg av typen Set Task Sequence Variable, som du kallar exempelvis DeployVersion. Värdet du skriver in här är alltså versionsnumret. Varje gång du gör en ändring i Task Sequencen så uppdaterar du alltså detta versionsnummer.

  5. Skapa en Status Filter Rule och kalla den exempelvis Backup Task Sequence. I fältet Component fyller du i Microsoft.ConfigurationManagement.exe och i fältet Message ID fyller du i 30001.

  6. Lägg till en Action i regeln, av typen Run a program. Fyll i följande kommandorad (exempel):

  7. I kommandoraden ovan, ändra parametrarna SiteServer, TaskSequenceID, BackupPath och TSVersionStepName så att de matchar värdena i din miljö. Ändra inte ModifiedTaskSequenceID, här ska det alltså stå %msgis02, som är en variabel som kommer fyllas i från det status message som triggar regeln. (Vill du däremot någon gång köra scriptet manuellt så anger du bara samma värde för ModifiedTaskSequenceID som för TaskSequenceID).

Resultat

Så här kan det se ut när du har använt scriptet ett tag.

Exporterade XML-filer:


All backuphistorik enkelt tillgänglig inne i konsolen:

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Kommentera

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.