Backup Lync 2010 Remotely from Orchestrator
cd \ cd "C:\Program Files\Common Files\Microsoft Lync Server 2010\Support" start-process dbimpexp.bat
dbimpexp.bat
@ECHO OFF REM CD "C:\Program Files\Common Files\Microsoft Lync Server 2010\Support" dbimpexp.exe /hrxmlfile:"E:\masterbackup\Lync-Backups\BackupFiles\DBImpExp.xml" /sqlserver:nlkvsqldba04\lync_prod
Sleep:
PING 127.0.0.1 -n 50 (I do a simple ping, always works!)
Export DBImpExp: once you get all of this data I like to package it into a zip file.
############# NEW-ZIP ############################
function New-Zip
{
param(
[Parameter(Mandatory=$true,
Position=0,
ValueFromPipeline=$true)]
[String]
$Path,
[Switch]
$PassThru,
[Switch]
$Force
)
process {
if (Test-Path $path)
{
if (-not $Force) {
return
}
}
Set-Content $path ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
$item = Get-Item $path
$item.IsReadOnly = $false
if ($passThru) { $item }
}
}
Here is the Function to Copy to Zip file
########## Copy-ToZip ###########################
function Copy-ToZip
{
param(
[Parameter(Mandatory=$true,
Position=0,
ValueFromPipelineByPropertyName=$true)]
[Alias('FullName')]
[String]$File,
[Parameter(Mandatory=$true,Position=1)]
[String]$ZipFile,
[Switch]$HideProgress,
[Switch]$Force
)
begin {
$ShellApplication = New-Object -ComObject Shell.Application
if (-not (Test-Path $ZipFile)) {
New-Zip $ZipFile
}
$Path = Resolve-Path $ZipFile
$ZipPackage =$ShellApplication.Namespace("$Path")
}
process {
$RealFile = Get-Item $File
if (-not $RealFile) { return }
if (-not $hideProgress) {
$perc +=5
if ($perc -gt 100) { $perc = 0 }
Write-Progress "Copying to $ZipFile" $RealFile.FullName -PercentComplete $perc
}
$Flags = 0
if ($force) {
$flags = 16 -bor 1024 -bor 64 -bor 512
}
Write-Verbose $realFile.Fullname
$ZipPackage.CopyHere($realFile.Fullname, $flags)
Start-Sleep -Milliseconds 500
}
}
Here is where I move the XML Files into the Zip file
I also call 4 other Lync Cmdlets
export-csconfiguration
export-cslisconfiguration
Get-CSVoicePolicy
Get-CSDialPlan
############ Loads funcion to Zip up XML files #############################
# Loads funcion to Zip up XML files
## This script will purge old files, right now it is set for 10 days
$Now = Get-Date
$Days = "10"
$TargetFolder = "E:\masterbackup\Lync-Backups\BackupFiles\"
$Extension = "*.zip"
$LastWrite = $Now.AddDays(-$Days)
$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files)
{
if ($File -ne $NULL)
{
Remove-Item $File.FullName | out-null
}
else
{
}
}
## Create two Zip Files for backups
$filename = "E:\masterbackup\Lync-Backups\BackupFiles\{0:yyyy.MM.dd-HH.mm}-CSconfig.zip" -f (Get-Date)
$filename1 = "E:\masterbackup\Lync-Backups\BackupFiles\{0:yyyy.MM.dd-HH.mm}-LISconfig.zip" -f (Get-Date)
$filename2 = "E:\masterbackup\Lync-Backups\BackupFiles\{0:yyyy.MM.dd-HH.mm}-Rgsconfig.zip" -f (Get-Date)
$filename3 = "E:\masterbackup\Lync-Backups\BackupFiles\{0:yyyy.MM.dd-HH.mm}-CS.zip" -f (Get-Date)
## Commands Run the Export Features
export-csconfiguration -Filename $filename -Force:$True
export-cslisconfiguration -Filename $filename1
#Export-CsRgsConfiguration -Filename $filename2
Get-CSVoicePolicy | export-clixml –path E:\masterbackup\Lync-Backups\BackupFiles\VoicePolicy.xml
Get-CSDialPlan | export-clixml –path E:\masterbackup\Lync-Backups\BackupFiles\Dialplan.xml
## Change Directories Cd \ Cd \ cd E: cd E:\masterbackup\Lync-Backups\BackupFiles ## Create Zip file to move XML's new-zip $filename3 PING 127.0.0.1 -n 10 dir .\DBImpExp.xml | copy-toZip -zipfile $filename3 PING 127.0.0.1 -n 10 dir .\VoicePolicy.xml | copy-toZip -zipfile $filename3 PING 127.0.0.1 -n 5 dir .\Dialplan.xml | copy-toZip -zipfile $filename3 PING 127.0.0.1 -n 5 Del *.xml
When the Runbook has completed you should have several Zip files you Configurations files.





