تخزين سحابي أزور: دليل بواش لنسخ الملفات

تعلم كيفية نسخ الملفات إلى تخزين سحابي Azure باستخدام أمر PowerShell Set-AzureStorageBlobContent في هذا البرنامج التعليمي المفيد.

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. وبما أنني مستخدم لأمر Copy-Item في PowerShell لنسخ الملفات ، اعتقدت أنه يجب أن يكون هناك شيء مشابه لذلك في Azure باستخدام وحدة PowerShell ولكني خاب آمالي. بدلاً من ذلك ، واجهت استخدام ثلاثة أوامر منفصلة فقط للحصول على ملف واحد في حاوية تخزين مشتركة.

بمجرد أن فهمت كيفية القيام بذلك ، لم أشعر حقًا بالرغبة في تذكر كيفية رفع ملف إلى حاوية تخزين Azure في كل مرة. لذلك ، كما يفعل أي مطور PowerShell ، قمت بإنشاء وظيفة سهلة الاستخدام تسمى Copy-AzureItem لنسخ الملفات إلى تخزين Blob في Azure. لقد أنقذتني هذه الوظيفة الكثير من الوقت ، ونأمل أن تفعل الشيء نفسه بالنسبة لك أيضًا.

إليك كيفية عملها:

أولاً ، من أجل الحصول على ملف في حاوية تخزين ARM Azure يتطلب وجود ثلاث “كائنات” مختلفة ؛ حساب تخزين وحاوية حساب تخزين والتدفق أو الملف نفسه. يجب عليك تحديد كل “كائن” من هذه عناصر عند رفع الملف. للقيام بذلك ، يمكنك استخدام ثلاثة أوامر مختلفة على سطر واحد.

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

كما يمكنك أن تلاحظ ، أستخدم التشابك لتوفير معلمات مختلفة لكل أمر.

كل هذا فقط لنسخ ملف إلى Azure؟ لا، شكرًا! بدلاً من ذلك، ماذا عن فعل شيء مثل هذا؟

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

أسهل بكثير! بالطبع، أنا أعيد تعيين مجموعة الموارد وحساب التخزين افتراضيًا في الوظيفة ولكن من السهل تحديثها.

لذا، بدون مزيد من الكلام، لا تتردد في تنزيل هذه الوظيفة من مستودع Github الخاص بي. إذا كنت كسولًا جدًا لفعل ذلك، فقم بنسخها ولصقها من هنا.

function Copy-AzureItem
{
	 <#
    .موجز
        تبسيط عملية تحميل الملفات إلى حساب تخزين Azure. من الضروري بالفعل تسجيل الدخول إلى اشتراك Azure الخاص بك مع Login-AzureAccount ليعمل هذه الوظيفة. سيتم تسمية الملف المحمل بنفس اسم الملف كـ blob التخزين.

    .المعلمات
        FilePath: المسار المحلي للملفات التي ترغب في تحميلها إلى حاوية حساب تخزين Azure.
        
        ContainerName: اسم حاوية حساب تخزين Azure التي سيتم وضع الملف فيها.
        
        ResourceGroupName: اسم مجموعة الموارد التي يتواجد فيها حساب التخزين.
        
        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/