PowerShell Script to backup Windows Azure Mobile Services scripts
Listing for a PowerShell Script to backup Windows Azure Mobile Services scripts and configuration information. I will get something more complete up on the Script Repository this next month! This also assumes you have set your subscription active using Windows Azure PowerShell. See How to install and configure Windows Azure PowerShell for more information.
function main()
{
$startDir = Get-Location;
$MobileServices = ListMobileServices ;
$MobileServices | foreach{
# for every service create a directory
$MobileServiceName = $_.name;
$MobileServiceName;
$MobileServiceDir = CreateMobileServiceDirectory($MobileServiceName);
# and move to that directory
Set-Location $MobileServiceDir;
$ScriptList = ListScripts $MobileServiceName;
$ScriptList;
if ($ScriptList.table)
{
$tblScriptLoc = CreateMobileServiceDirectory("scripts");
Set-Location $tblScriptLoc;
$ScriptList.table | foreach{
$ScriptName = "table/{0}.{1}" -f $_.table, $_.operation;
azure mobile script download $MobileServiceName $ScriptName;
}
#end foreach table
Set-Location $MobileServiceDir;
}
if($ScriptList.scheduler)
{
$tblScriptLoc = CreateMobileServiceDirectory("scripts");
Set-Location $tblScriptLoc;
$ScriptList.scheduler | foreach{
$ScriptName = "scheduler/{0}" -f $_.name;
azure mobile script download $MobileServiceName $ScriptName;
}#end foreach scheduler
Set-Location $MobileServiceDir;
}
if($ScriptList.api)
{
$tblScriptLoc = CreateMobileServiceDirectory("scripts");
Set-Location $tblScriptLoc;
$ScriptList.api | foreach{
$ScriptName = "api/{0}" -f $_.name;
azure mobile script download $MobileServiceName $ScriptName;
}
#end foreach api
Set-Location $MobileServiceDir;
}
if($ScriptList.shared)
{
$tblScriptLoc = CreateMobileServiceDirectory("scripts");
Set-Location $tblScriptLoc;
$ScriptList.shared | foreach{
$ScriptName = "shared/{0}" -f $_.name;
azure mobile script download $MobileServiceName $ScriptName;
}
#end foreach shared
Set-Location $MobileServiceDir;
}
#dump config to a json file:
$tmp=""; azure mobile config list --json $MobileServiceName | foreach{ $tmp += $_ }; New-Item "config.json" -ItemType file -Value $tmp;
$tmp=""; azure mobile show --json $MobileServiceName | foreach{ $tmp += $_ }; New-Item "details.json" -ItemType file -Value $tmp;
$tmp=""; azure mobile job list --json $MobileServiceName | foreach{ $tmp += $_ }; New-Item "job.json" -ItemType file -Value $tmp;
Set-Location $startDir.Path;
};
#end foreach Service
}
function CreateMobileServiceDirectory()
{
param(
[Parameter(Mandatory=$true)]
$ServiceName
)
$loc = Get-Location;
[string]$fullPath = "{0}\{1}" -f $loc.Path, $ServiceName;
if(Test-Path $fullPath)
{
if ( Test-Path $fullPath -pathType Container)
{
}
else
{
#error
}
}
else
{
$newObj= New-Item $fullPath -ItemType directory;
}
return $fullPath;
}
function ListTables()
{
param(
[Parameter(Mandatory=$true)]
$ServiceName
)
$TableTemp = "";
$TMPP=azure mobile table list --json $ServiceName | foreach{
$TableTemp += $_;
};
return ConvertFrom-Json($TableTemp);
}
function ListScripts()
{
param(
[Parameter(Mandatory=$true)]
$ServiceName
)
$TableTemp = "";
$TMPP=azure mobile script list --json $ServiceName | foreach{
$TableTemp += $_;
};
return ConvertFrom-Json($TableTemp);
}
function ListMobileServices()
{
$TempJsonString= "";
# Get a list of Services as Json objects
# since it is a bunch of Line feeds have to concatonate the string
azure mobile list --json | foreach{ $TempJsonString += $_ };
return ConvertFrom-Json($TempJsonString);
}
#call Main!
main;