Azure Blobopslag: Een PowerShell-handleiding voor bestandsoverdracht

Leer hoe je bestanden kunt kopiëren naar Azure-blobopslag met de PowerShell `Set-AzureStorageBlobContent` cmdlet in deze handige zelfstudie.

I’ve been doing a lot of Azure IaaS work via ARM lately in PowerShell. As a result, I’ve unfortunately found out how bad the documentation and behavior is for the Azure PowerShell module but I’ve persisted and have overcome!

Als onderdeel van dit project moest ik een hoop bestanden uploaden naar een container van een Azure-opslagaccount. Gewend aan de `Copy-Item` cmdlet van PowerShell om bestanden te kopiëren, dacht ik dat er zoiets moest zijn voor Azure in de Azure PowerShell-module, maar ik werd teleurgesteld. In plaats daarvan moest ik drie afzonderlijke cmdlets gebruiken om slechts één bestand naar een gemeenschappelijke opslagcontainer te krijgen.

Toen ik eenmaal had uitgevogeld hoe het moest, had ik eigenlijk geen zin om elke keer te onthouden hoe ik een bestand naar een Azure-opslagcontainer kon krijgen. Dus, net zoals elke PowerShell-ontwikkelaar zou doen, heb ik een eenvoudig te gebruiken functie gemaakt genaamd `Copy-AzureItem` om bestanden naar Azure Blob Storage te kopiëren. Deze functie heeft me veel tijd bespaard en hopelijk kan het hetzelfde voor jou doen.

Zo werkt het:

Ten eerste, om een bestand in een Azure ARM-opslagcontainer te krijgen, zijn er drie verschillende “objecten” nodig; een opslagaccount, een opslagcontainer van een opslagaccount en de blob of het bestand zelf. U moet elk van deze “objecten” specificeren bij het uploaden van het bestand. Om dit te doen, kunt u drie verschillende cmdlets op één regel gebruiken.

Get-AzStorageAccount @saParams | Get-AzStorageContainer @scParams | Set-AzureStorageBlobContent@bcParams

Zoals je kunt zien, gebruik ik splatting om de verschillende parameters aan elke cmdlet te geven.

Alles alleen maar om een bestand naar Azure te kopiëren? Nee bedankt! Wat dacht je in plaats daarvan van zoiets als dit?

Copy-AzureItem -FilePath C:\MyFile.exe -ContainerName azcontainer

Veel makkelijker! Toegegeven, ik stel standaard de resourcegroep en opslagaccount in de functie in, maar dat is eenvoudig bij te werken.

Dus, zonder verder oponthoud, voel je vrij om deze functie van mijn Github-repo te downloaden. Als je te lui bent om dat te doen, kopieer en plak het dan van hier.

function Copy-AzureItem
{
	<#
	.SYNOPSIS
		Deze functie vereenvoudigt het proces van het uploaden van bestanden naar een Azure-opslagaccount. Om deze functie te laten werken, moet u al zijn ingelogd op uw Azure-abonnement met Login-AzureAccount. Het geüploade bestand krijgt dezelfde naam als de opslagblob.
		
	.PARAMETER FilePath
		Het lokale pad van het bestand(de bestanden) die u wilt uploaden naar een container van een Azure-opslagaccount.
	
	.PARAMETER ContainerName
		De naam van de container van het Azure-opslagaccount waarin het bestand zal worden geplaatst.
	
	.PARAMETER ResourceGroupName
		De naam van de resourcegroep waarin het opslagaccount zich bevindt.
	
	.PARAMETER StorageAccountName
		De naam van het opslagaccount waarin de container die het bestand zal bevatten, zich bevindt.
	#>
	[CmdletBinding()]
	param
	(
		[Parameter(Mandatory,ValueFromPipelineByPropertyName)]
		[ValidateNotNullOrEmpty()]
		[ValidateScript({ Test-Path -Path $_ -PathType Leaf })]
		[Alias('FullName')]
		[string]$FilePath,
	
		[Parameter(Mandatory)]
		[ValidateNotNullOrEmpty()]
		[string]$ContainerName,
	
		[Parameter()]
		[ValidateNotNullOrEmpty()]
		[string]$ResourceGroupName = 'ResourceGroup',
	
		[Parameter()]
		[ValidateNotNullOrEmpty()]
		[string]$StorageAccountName = 'StorageAccount'
	)
	process
	{
		try
		{
			$saParams = @{
				'ResourceGroupName' = $ResourceGroupName
				'Name' = $StorageAccountName
			}
			
			$scParams = @{
				'Container' = $ContainerName
			}
			
			$bcParams = @{
				'File' = $FilePath
				'Blob' = ($FilePath | Split-Path -Leaf)
			}
			Get-AzureRmStorageAccount @saParams | Get-AzureStorageContainer @scParams | Set-AzureStorageBlobContent @bcParams
		}
		catch
		{
			Write-Error $_.Exception.Message
		}
	}
}

Source:
https://adamtheautomator.com/copy-files-to-azure-blob-storage/