So i'm warping up the SCSM project at my client, and one of the value add deliverables i wanted to include was an automatic way to backup their configuration in case they modifiy it later and break something. googling around i found This script to backup management packs, but that's not really what I wanted to do. Some quick modifications and I ended up with this script:
Import-module SMLets
#discover if anything is modified today $today = Get-Date("{0} 00:00:00" -f (get-date).ToShortDateString()); if (Get-SCSMManagementPack | where-object {$_.LastModified -ge $today}) { #Inscope Definitions $OutPutDir = "C:\Management Packs\UnsealedBackups\"; $UnsealedMPs = Get-SCSMManagementPack | ?{ ! $_.Sealed }; [string]$CurrentDate = Get-Date -uformat "%Y\%m\%d-%A"; $CompletePath = ($OutPutDir + $CurrentDate); if ( ! (test-path $CompletePath)) { $output = New-Item -Type Directory -Name $CurrentDate -Path $OutPutDir; }; $UnsealedMPs | Foreach-Object { " Exporting: {0}" -f $_.Name; $_ | Export-SCSMManagementPack -targetdirectory "$CompletePath"; }; }; Remove-module SMLets -force;Then i scheduled a task to run it every night at 9:00 PM Local time.
powershell.exe -command "& 'C:\Windows\System32\WindowsPowerShell\v1.0\Examples\Backup-SCSMUnsealedMPs.ps1' "
The bonus on this is that the backup will only be created if any pack was changed today, and you get a nice sorted tree by year\month\date-day
No comments:
Post a Comment