Azure Blob Storage:ファイルコピーのPowerShellガイド

この便利なチュートリアルでは、PowerShellのSet-AzureStorageBlobContentコマンドレットを使用して、Azure Blobストレージにファイルをコピーする方法を学びます。

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!

このプロジェクトの一環として、Azureストレージアカウントコンテナにファイルをアップロードする必要がありました。通常、PowerShellのCopy-Itemコマンドレットを使用してファイルをコピーすることができると思いましたが、AzureのAzure PowerShellモジュールではそのようなものはありませんでした。

その代わりに、単一のファイルを共有ストレージコンテナにアップロードするために、3つの別々のコマンドレットを使用する必要がありました。

それをやり方を見つけた後、毎回Azureストレージコンテナにファイルをアップロードする方法を覚えるのはあまり好きではありませんでした。そこで、どんなPowerShell開発者もするように、Copy-AzureItemという簡単に使える関数を作成しました。この関数は私にたくさんの時間を節約してくれましたし、あなたにも同じように役立つことを願っています。

以下はその動作方法です:

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

最初に、Azure ARMストレージコンテナにファイルを配置するには、3つの異なる「オブジェクト」、ストレージアカウント、ストレージアカウントコンテナ、およびブロブまたはファイル自体を指定する必要があります。ファイルをアップロードする際には、これらの「オブジェクト」を指定する必要があります。これを行うには、1行で3つの異なるコマンドレットを使用することができます。を使用して、各コマンドレットにさまざまなパラメータを提供していることがわかります。

すべてこれだけのためにAzureにファイルをコピーするのですか?結構です!代わりに、以下のような方法はいかがでしょうか?

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

はるかに簡単です!ただし、デフォルトではリソースグループとストレージアカウントが関数内で設定されていますが、簡単に更新できます。

では、GitHubリポジトリからこの関数をダウンロードできます。それを面倒くさがらずにコピーして貼り付けることもできます。

function Copy-AzureItem
{
	<#
	.SYNOPSIS
		この関数は、Azureストレージアカウントにファイルをアップロードするプロセスを簡素化します。この関数を使用するには、
		すでにLogin-AzureAccountでAzureサブスクリプションにログインしている必要があります。アップロードされるファイルの名前は
		ストレージブロブと同じになります。

	.PARAMETER FilePath
		Azureストレージアカウントコンテナにアップロードするローカルファイルのパスです。

	.PARAMETER ContainerName
		ファイルが配置されるAzureストレージアカウントコンテナの名前です。

	.PARAMETER ResourceGroupName
		ストレージアカウントが所属するリソースグループの名前です。

	.PARAMETER StorageAccountName
		ファイルを保持するコンテナがあるストレージアカウントの名前です。
	#>
	[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/