#------------------------------------------------------------------------------------ # Script: PSE 8.1 Backup comments: .NET Framework 4.5 and WMF 5.1 required #------------------------------------------------------------------------------------ #Modify these paths to point to correct directories. $pseBin = "C:\Program Files (x86)\Schneider Electric\PowerSCADA Expert\v8.1" $pseData = "C:\ProgramData\Schneider Electric\PowerSCADA Expert\v8.1" $destinationDir = "C:\PSE" # Self-elevate the script if required if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) { if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) { $CommandLine = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine Exit } } #Copy files $ItemToCopy = $pseBin + "\Applications\AppServices\bin\configuration.xml" Copy-item $ItemToCopy $destinationDir $ItemToCopy = $pseBin + "\Applications\AppServices\bin\Services.xml" Copy-item $ItemToCopy $destinationDir Write-Output "Backing up Logs" #Backup Logs $ItemToCopy = $pseData + "\Logs" $logDestination = $pseData +"\Logs_Backup" + ((Get-Date).ToString('yyyy-MM-dd')) if(Test-path $logDestination) {Remove-Item $logDestination -Recurse} Copy-Item -Path $ItemToCopy -Destination $logDestination -Recurse #Start-sleep -m 500 Write-Output "Creating compressed backup. Backup times will vary depending on data directory size." #Zip up data directory excluding log files(required for online backup) $excludes=@("Logs") $zipFile = $destinationDir + "\PSE_Backup" + ((Get-Date).ToString('yyyy-MM-dd')) + ".zip" $files= Get-ChildItem -Path $pseData -Exclude $excludes Compress-Archive -Path $files -DestinationPath $zipFile -Force Write-Output "Backing up Cipher" #Export Cipher $cipherPath = $pseBin + "\bin\PowerLogic.Cipher.dll" $assembly = [Reflection.Assembly]::LoadFile($cipherPath) $instance = New-Object PowerLogic.Cipher.StrongCipher -ArgumentList ($pseBin + "\Applications\AppServices\bin\") $instance.ExportKey($destinationDir + "\AppServicesCipher.aes") $instance = New-Object PowerLogic.Cipher.StrongCipher -ArgumentList ($pseData + "\Config\") $instance.ExportKey($destinationDir + "\SCADACipher.aes") $instance = New-Object PowerLogic.Cipher.StrongCipher -ArgumentList ($pseData + "\Applications\Profile Editor\") $instance.ExportKey($destinationDir + "\ProfileEditorCipher.aes")