Azure Blob Storage: Una guida PowerShell alla copia di file

Impara come copiare file nel blob storage di Azure con il cmdlet PowerShell Set-AzureStorageBlobContent in questo utile tutorial.

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!

Nell’ambito di questo progetto, ho dovuto caricare un mucchio di file su un contenitore dell’account di storage Azure. Essendo abituato al cmdlet PowerShell Copy-Item per copiare file, pensavo ci dovesse essere qualcosa di simile per Azure nel modulo PowerShell di Azure ma sono rimasto deluso. Invece, mi sono trovato ad usare tre cmdlet separati solo per caricare un singolo file su un contenitore di storage comune.

Una volta capito come farlo, non mi andava davvero di ricordare come caricare un file su un contenitore di storage Azure ogni volta. Quindi, come farebbe qualsiasi sviluppatore PowerShell, ho creato una funzione facile da usare chiamata Copy-AzureItem per copiare file nel Blob Storage di Azure. Questa funzione mi ha risparmiato un sacco di tempo e spero possa fare lo stesso anche per te.

Ecco come funziona:

Prima di tutto, per inserire un file in un contenitore di storage ARM di Azure sono necessari tre diversi “oggetti”; un account di storage, un contenitore dell’account di storage e il blob o file stesso. Devi specificare ciascuno di questi “oggetti” quando carichi il file. Per fare ciò, puoi usare tre cmdlet diversi su una sola riga.

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

Come puoi vedere, sto usando splatting per fornire i vari parametri a ciascun cmdlet.

Tutto questo solo per copiare un file su Azure? No, grazie! Invece, perché non fare qualcosa del genere?

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

Molto più facile! Ammetto di impostare di default il gruppo di risorse e il conto di archiviazione nella funzione, ma è facile da aggiornare.

Quindi, senza ulteriori indugi, sentiti libero di scaricare questa funzione dal mio repository Github. Se sei troppo pigro per farlo, copiala e incollala da qui.

function Copy-AzureItem
{
	<#
	.SINOPSInonimato
		Questa funzione semplifica il processo di caricamento di file in un account di archiviazione di Azure. Affinché questa funzione funzioni, è necessario aver effettuato l'accesso al tuo abbonamento Azure con Login-AzureAccount. Il file caricato avrà lo stesso nome del blob di archiviazione.
		
	.PARAMETRO PercorsoFile
		Il percorso locale del file (o dei file) che desideri caricare in un contenitore di un account di archiviazione di Azure.
	
	.PARAMETRO NomeContenitore
		Il nome del contenitore dell'account di archiviazione di Azure in cui verrà inserito il file.
	
	.PARAMETRO NomeGruppoRisorse
		Il nome del gruppo di risorse in cui si trova l'account di archiviazione.
	
	.PARAMETRO NomeAccountArchiviazione
		Il nome dell'account di archiviazione nel quale si trova il contenitore che conterrà il file.
	#>
	[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/