Param (
[Parameter (Mandatory=$true, HelpMessage="The resource group name of the storage account")]
[string] $resourceGroupName,
[Parameter (Mandatory=$true, HelpMessage="The subscription id of the storage account and DTL")]
[string] $subscriptionId,
[Parameter (Mandatory=$true, HelpMessage="The storage account name")]
[string] $storageAccountName,
[Parameter (Mandatory=$true, HelpMessage="Expire time of the SAS Token")]
[string] $expiryTime,
[Parameter (Mandatory=$true, HelpMessage="Date to pull data from")][string] $startTime,
[Parameter (Mandatory=$true, HelpMessage="Name of the lab to export")]
[string] $labName,
[Parameter (Mandatory=$true, HelpMessage="The desired SKU")]
[string] $desiredSKU,
[Parameter (Mandatory=$true, HelpMessage="Protocol for SAS token generation")]
[string] $protocol,
[Parameter (Mandatory=$true, HelpMessage="Permissions given for SAS token")]
[string] $permissions
# Log in
Connect-AzAccount -UseDeviceAuthentication
# Set your subscription
Set-AzContext -SubscriptionId $subscriptionId
# Create a resource group and storage account
New-AzStorageAccount -ResourceGroupName $resourceGroupName `
-Name $storageAccountName `
-Location $location `
-SkuName $desiredSKU
# Get storage account context
$storageAccountContext = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -AccountName $storageAccountName
$storageAccountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName
$Ctx = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKeys[0].Value
# Create blob container
$containerName = "exportlabresources"
New-AzStorageContainer -Name $containerName `
-Context $Ctx `
-Permission Off
# Get SAS token
$sasToken = New-AzStorageContainerSASToken `
-Context $Ctx `
-Name $containerName `
-StartTime (Get-Date) `
-ExpiryTime $expiryTime `
-Permission $permissions `
-Protocol $protocol
# Make blob endpoint
$blobEndpointWithSas = $storageAccountContext.Context.BlobEndPoint + $containerName+ "?" + $sasToken
# Invoke Export Job
$actionParameters = @{
'blobStorageAbsoluteSasUri' = $blobEndpointWithSas
}
$actionParameters.Add('usageStartDate', $startdate.Date.ToString())
$resourceId = "/subscriptions/" + $subscriptionId + "/resourceGroups/" + $resourceGroupName + "/providers/Microsoft.DevTestLab/labs/" + $labName + "/"
$result = Invoke-AzureRmResourceAction -Action 'ExportResourceUsage' -ResourceId $resourceId -Parameters $actionParameters -Force