tools/AduCmdlets/AduAzStorageBlobHelper.psm1 (72 lines of code) (raw):

# # Device Update for IoT Hub # PowerShell module for uploading file to Azure Storage Blob Container. # Copyright (c) Microsoft Corporation. # #Requires -Version 5.0 #Requires -Modules Az.Accounts, Az.Storage function Get-AduAzBlobContainer { <# .SYNOPSIS Get a reference to Azure Storage Blob container object. #> [CmdletBinding()] Param( # Azure subscription id. [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] $SubscriptionId, # Azure resource group name of the Azure Storage account. [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] $ResourceGroupName, # Azure Storage account name. [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] $StorageAccountName, # Blob container name. [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] $ContainerName, # Skip connecting to Azure. [switch] $SkipLogin ) if (!$SkipLogin) { Connect-AzAccount -ErrorAction Stop -UseDeviceAuthentication | Out-Null $subscription = Get-AzSubscription -SubscriptionId $SubscriptionId -ErrorAction Stop Set-AzContext $subscription -ErrorAction Stop | Out-Null } $account = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -ErrorAction Stop New-AzStorageContainer -Name $ContainerName -Context $account.Context -ErrorAction SilentlyContinue | Out-Null $container = Get-AzStorageContainer -Name $ContainerName -Context $account.Context -ErrorAction Stop return $container } function Copy-AduFileToAzBlobContainer { <# .SYNOPSIS Upload file to specified Azure Storage Blob container, and return its Shared-Access-Signature (SAS) URL. #> [CmdletBinding()] Param( # Path to file. [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] $FilePath, # Blob name to use. [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] $BlobName, # Azure Storage Blob container object. [Parameter(Mandatory=$true)] [ValidateNotNull()] [Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer] $BlobContainer ) $blob = Set-AzStorageBlobContent -File $FilePath -Blob $BlobName -Container $BlobContainer.Name -Context $BlobContainer.Context -Force -ErrorAction Stop $uri = New-AzStorageBlobSASToken -Container $BlobContainer.Name -Blob $blob.Name -Permission r ` -StartTime (Get-Date).AddMinutes(-30) -ExpiryTime (Get-Date).AddHours(6) -Context $blob.Context -FullUri -ErrorAction Stop return $uri } Export-ModuleMember -Function Copy-AduFileToAzBlobContainer, Get-AduAzBlobContainer