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