אחסון גוש Azure: מדריך PowerShell להעתקת קבצים

למד איך להעתיק קבצים לאחסון הBlob של 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, אך נתקלתי באי הצלחה. במקום זאת, נאלץ הייתי להשתמש בשלוש פקודות נפרדות כדי להעלות קובץ בודד לקונטיינר אחסון משותף.

כשפענחתי איך לעשות זאת, לא הרגשתי באמת כמו לזכור איך להעלות קובץ לאחסון Azure בכל פעם. אז, כמו כל מפתח PowerShell שיש לו מוח, יצרתי פונקציה קלה לשימוש בשם Copy-AzureItem להעתקת קבצים לאחסון Blob של Azure. הפונקציה הזו חסכה לי המון זמן ובמקווה שתוכלו להפיק ממנה את אותו התועלת.

כך זה עובד:

ראשית, כדי להעביר קובץ לאחסון ARM של Azure דורשים שלוש "אובייקטים" שונים; חשבון אחסון, קונטיינר חשבון אחסון וBlob או הקובץ עצמו. עליך לציין כל אחד מתוך אלה "אובייקטים" בעת העלאת הקובץ. לעשות זאת, אפשר להשתמש בשלוש פקודות שונות בשורה אחת.

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

כפי שאתם רואים, אני משתמש ב-splatting כדי לספק את הפרמטרים השונים לכל פקודה.

כל זה רק כדי להעתיק קובץ ל-Azure? לא תודה! במקום זאת, מה דעתך לעשות משהו כזה?

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

הרבה יותר קל! כמובן, אני בחרת במקום הרגיל ובחשבון אחסון בפונקציה, אבל זה קל לעדכן.

אז, בלי עוד דיבורים, תרגיש חופשי ל-הוריד את הפונקציה הזו ממאגר הקוד שלי ב-Github. אם אתה רקני מדי לעשות זאת, העתק והדבק אותה מכאן.

function Copy-AzureItem
{
	<#
	.SYNOPSIS
		פונקציה זו פשוטה את התהליך של העלאת קבצים לחשבון אחסון Azure. על מנת שהפונקציה תעבוד, עליך להתחבר תחילה למינוי Azure שלך עם Login-AzureAccount. הקובץ שנטען יקרא כשם הקובץ בלבד כמו ה-Blob באחסון.

	.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/