Azure Blob Storage: Um Guia PowerShell para Copiar Arquivos

Aprenda como copiar arquivos para o armazenamento de blobs Azure com o cmdlet Set-AzureStorageBlobContent do PowerShell neste útil 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!

Como parte deste projeto, tive que fazer upload de vários arquivos para um contêiner de conta de armazenamento Azure. Acostumado ao cmdlet Copy-Item do PowerShell para copiar arquivos, imaginei que deveria haver algo semelhante para o Azure no módulo PowerShell do Azure, mas fiquei desapontado. Em vez disso, me deparei com a necessidade de usar três cmdlets separados apenas para colocar um único arquivo em um contêiner de armazenamento comum.

Depois de descobrir como fazer isso, não queria ter que lembrar como colocar um arquivo em um contêiner de armazenamento Azure toda vez. Então, como qualquer desenvolvedor de PowerShell faria, criei uma função fácil de usar chamada Copy-AzureItem para copiar arquivos para o Armazenamento de Blobs Azure. Esta função me economizou muito tempo e espero que também possa fazer o mesmo por você.

Aqui está como funciona:

Primeiro, para colocar um arquivo em um contêiner de armazenamento ARM do Azure, são necessários três “objetos” diferentes; uma conta de armazenamento, um contêiner de conta de armazenamento e o blob ou arquivo em si. Você deve especificar cada um desses “objetos” ao fazer upload do arquivo. Para fazer isso, você pode usar três cmdlets diferentes em uma linha.

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

Como você pode ver, estou usando splatting para fornecer os vários parâmetros para cada cmdlet.

Tudo isso só para copiar um arquivo para o Azure? Não, obrigado! Em vez disso, que tal fazer algo assim?

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

Muito mais fácil! É verdade que estou definindo o grupo de recursos e a conta de armazenamento padrão na função, mas isso é fácil de atualizar.

Então, sem mais delongas, sinta-se à vontade para baixar esta função do meu repositório no Github. Se estiver com preguiça de fazer isso, copie e cole daqui.

function Copy-AzureItem
{
	<#
	.SINOPSE
		Essa função simplifica o processo de upload de arquivos para uma conta de armazenamento do Azure. Para que esta função funcione, você
		já deve ter feito login em sua assinatura do Azure com Login-AzureAccount. O arquivo enviado será chamado pelo nome do arquivo
		como o blob de armazenamento.
		
	.PARAMETER FilePath
		O caminho local do(s) arquivo(s) que você deseja fazer upload para um contêiner de uma conta de armazenamento do Azure.
	
	.PARAMETER ContainerName
		O nome do contêiner da conta de armazenamento do Azure onde o arquivo será colocado.
	
	.PARAMETER ResourceGroupName
		O nome do grupo de recursos em que a conta de armazenamento está.
	
	.PARAMETER StorageAccountName
		O nome da conta de armazenamento onde o contêiner que irá armazenar o arquivo está.
	#>
	[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/