استعلام PowerShell لإدارة الدلائل والملفات في Azure Data Lake Storage Gen2

توضح لك هذه المقالة طريقة استخدام PowerShell لإنشاء الدلائل والملفات وإدارتها في حسابات التخزين التي تحتوي على مساحة أسماء هرمية.

لمعرفة طريقة الحصول على قوائم التحكم في الوصول (ACL) الخاصة بالدلائل والملفات وتعيينها وتحديثها، راجع استخدام PowerShell لإدارة قوائم التحكم في الوصول إلى Azure Data Lake Storage Gen2.

راجع | تعيين Gen1 إلى Gen2 | تقديم الملاحظات

المتطلبات الأساسية

  • اشتراك Azure. للحصول على مزيد من المعلومات، راجع الحصول على إصدار تجريبي من Azure.

  • حساب تخزين يحتوي على مساحة أسماء هرمية ممكنة. اتبع هذه الإرشادات للتمكن من إنشاء واحدة.

  • .NET Framework يمثل 4.7.2 أو أعلى مثبتة. لمزيد من المعلومات، يرجى الاطلاع علىتنزيل .NET Framework.

  • إصدار PowerShell 5.1 أو أحدث.

ثثبيت PowerShell Core

  1. تحقق أن إصدار PowerShell المثبت5.1 أو أحدث منه باستخدام الأمر التالي.

    echo $PSVersionTable.PSVersion.ToString()
    

    لترقية إصدار PowerShell خاصتك، راجع ترقية Windows PowerShell الحالية

  2. ثبّت وحدة Az.Storage.

    Install-Module Az.Storage -Repository PSGallery -Force  
    

    لمزيد من المعلومات بشأن طريقة تثبيت وحدات PowerShell النمطية، يرجى الاطلاع علىتثبيت الوحدة النمطية Azure PowerShell

الاتصال بالحساب

حدّد الطريقة التي تريد أن تحصل بها الأوامر على تخويل لحساب التخزين.

الخيار 1: الحصول على تخويل باستخدام Azure Active Directory (Azure AD)

باستخدام هذا النهج، يضمن النظام أن حساب المستخدم الخاص بك لديه تعيينات التحكم في الوصول المستندة إلى دور Azure (Azure RBAC) المناسبة وأذونات الوصول إلى ACL.

  1. افتح نافذة أوامر Windows PowerShell، ثم سجّل الدخول إلى اشتراك Azure باستخدام Connect-AzAccount الأمر واتبع الإرشادات التي تظهر على الشاشة.

    Connect-AzAccount
    
  2. إن كانت هويتك مقترنة بأكثر من اشتراك واحد، فحدد اشتراكك النشط لاشتراك حساب التخزين الذي تريد إنشاء الدلائل فيه وإدارتها. في هذا المثال، استبدل قيمة العنصر النائب <subscription-id> بمعرف اشتراكك.

    Select-AzSubscription -SubscriptionId <subscription-id>
    
  3. ادخل على سياق حساب التخزين.

    $ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
    

خيار 2: احصل على تخويل باستخدام مفتاح حساب التخزين

باستخدام هذا النهج، لا يتحقق النظام من أذونات الوصول إلى Azure RBAC أو ACL. احصل على سياق حساب التخزين باللجوء إلى مفتاح حساب.

$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -StorageAccountKey '<storage-account-key>'

إنشاء حاوية

تعمل الحاوية على أنها نظام ملفات لملفاتك. بمقدورك إنشاء واحد باستخدام New-AzStorageContainer cmdlet.

ينشئ هذا المثال حاوية تحمل اسم my-file-system.

$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName

إنشاء دليل

إنشاء مرجع دليل باستخدام cmdletNew-AzDataLakeGen2Item.

يضيف هذا المثال دليلًا يحمل اسمmy-directoryإلى حاوية.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory

يضيف هذا المثال الدليل نفسه، ولكنه يضيف أذونات الوصول وumask وقيم الخصائص وقيم بيانات التعريف.

$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx---  -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata  @{"tag1" = "value1"; "tag2" = "value2" }

إظهار الخصائص المتعلقة بالدليل

يحصل هذا المثال على دليل باستخدام cmdlet Get-AzDataLakeGen2Item، ثم يقوم بطباعة قيم الخصائص إلى وحدة التحكم.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
$dir =  Get-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
$dir.ACL
$dir.Permissions
$dir.Group
$dir.Owner
$dir.Properties
$dir.Properties.Metadata

ملاحظة

للحصول على الدليل الجذر الخاص بالمحتوى، احذف المعلمة-Path .

إعادة تسمية الأدلة ونقلها

إعادة تسمية أو نقل دليل باستخدام cmdlet Move-AzDataLakeGen2Item.

يعيد هذا المثال تسمية دليل من الاسمmy-directoryإلى الاسمmy-new-directory.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
$dirname2 = "my-new-directory/"
Move-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -DestFileSystem $filesystemName -DestPath $dirname2

ملاحظة

استعمل المعلمة -Force إذا كنت تريد الكتابة فوق بدون مطالبات.

ينقل هذا المثال دليلًا مسمى my-directory إلى دليل فرعيmy-directory-2باسمmy-subdirectory.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
$dirname2 = "my-directory-2/my-subdirectory/"
Move-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -DestFileSystem $filesystemName -DestPath $dirname2

حذف دليل

حذف دليل باستخدام cmdletRemove-AzDataLakeGen2Item.

يحذف هذا المثال دليلًا باسمmy-directory.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item  -Context $ctx -FileSystem $filesystemName -Path $dirname

يمكنك استخدام المعلمة-Force لإزالة الملف دون مطالبة.

التنزيل من دليل

قم بتنزيل ملف من دليل باستخدام cmdletGet-AzDataLakeGen2ItemContent.

يقوم هذا المثال بتنزيل ملف مسمى upload.txtمن دليل يحمل اسمmy-directory.

$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath

إعداد قائمة محتويات الدليل

أعدّ قائمة بمحتويات دليل باستخدام cmdlet Get-AzDataLakeGen2ChildItem. يمكنك استخدام المعلمة -OutputUserPrincipalName الاختيارية؛ للتمكن من الحصول على اسم المستخدمين (بدلًا من معرّف الكائن).

يسرد هذا المثال محتويات دليل يسمىmy-directory.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName

يسرد المثال التالي خصائص كل من ACLو PermissionsوGroupوOwnerلكل عنصر في الدليل. تعتبر المعلمة-FetchProperty أمرًا ضروريًا للحصول على قيم للخاصيةACL .

$filesystemName = "my-file-system"
$dirname = "my-directory/"
$properties = Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -Recurse -FetchProperty
$properties.ACL
$properties.Permissions
$properties.Group
$properties.Owner

ملاحظة

لسرد محتويات الدليل الجذر للحاوية، احذف المعلمة-Path .

تحميل ملف إلى دليل

تحميل ملف إلى دليل باستخدام cmdlet New-AzDataLakeGen2Item.

يحمل هذا المثال ملف مسمى upload.txtإلى دليل باسمmy-directory.

$localSrcFile =  "upload.txt"
$filesystemName = "my-file-system"
$dirname = "my-directory/"
$destPath = $dirname + (Get-Item $localSrcFile).Name
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $destPath -Source $localSrcFile -Force

يقوم هذا المثال بتحميل الملف نفسه، ومن ثم يعين الأذونات وumask وقيم الخصائص وقيم بيانات التعريف للملف الوجهة. يطبع هذا المثال أيضًا هذه القيم إلى وحدة التحكم.

$file = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $destPath -Source $localSrcFile -Permission rwxrwxrwx -Umask ---rwx--- -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata  @{"tag1" = "value1"; "tag2" = "value2" }
$file1
$file1.Properties
$file1.Properties.Metadata

ملاحظة

لتحميل ملف إلى الدليل الجذر للحاوية، احذف المعلمة-Path .

إظهار خصائص خاصة بالملف

يحصل هذا المثال على ملف باستخدام cmdletGet-AzDataLakeGen2Item، ثم يقوم بطباعة قيم الخصائص إلى وحدة التحكم.

$filepath =  "my-directory/upload.txt"
$filesystemName = "my-file-system"
$file = Get-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $filepath
$file
$file.ACL
$file.Permissions
$file.Group
$file.Owner
$file.Properties
$file.Properties.Metadata

حذف ملف

احذف ملف باستخدام cmdlet Remove-AzDataLakeGen2Item.

احذف هذا المثال ملفًا باسمupload.txt.

$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item  -Context $ctx -FileSystem $filesystemName -Path $filepath

يمكنك استخدام المعلمة-Force لإزالة الملف دون مطالبة.

تعيين Gen1 على Gen2

يوضح الجدول التالي طريقة تعيين cmdlets المستخدمة Data Lake Storage Gen1 إلى cmdlets Data Lake Storage Gen2.

Data Lake Storage Gen1 cmdlet Data Lake Storage Gen2 cmdlet ملاحظات
Get-AzDataLakeStoreChildItem Get-AzDataLakeGen2ChildItem بشكل افتراضي، لا يسرد cmdlet Get-AzDataLakeGen2ChildItem سوى العناصر الفرعية من المستوى الأول. تسرد المعلمة -Recurse العناصر الفرعية بصفةٍ متكررةٍ.
Get-AzDataLakeStoreItem
Get-AzDataLakeStoreItemAclEntry
Get-AzDataLakeStoreItemOwner
Get-AzDataLakeStoreItemPermission
Get-AzDataLakeGen2Item تشمل عناصر الإخراج الخاصة بـ cmdlet Get-AzDataLakeGen2Item على الخصائص التالية: Cll و Owner و Group و Permission.
Get-AzDataLakeStoreItemContent Get-AzDataLakeGen2FileContent Get-AzDataLakeGen2FileContent cmdlet تقوم بتنزيل محتوى الملف إلى ملف محلي.
Move-AzDataLakeStoreItem Move-AzDataLakeGen2Item
New-AzDataLakeStoreItem New-AzDataLakeGen2Item يقوم cmdlet بتحميل محتوى الملف الجديد من ملف محلي.
Remove-AzDataLakeStoreItem Remove-AzDataLakeGen2Item
Set-AzDataLakeStoreItemOwner
Set-AzDataLakeStoreItemPermission
Set-AzDataLakeStoreItemAcl
Update-AzDataLakeGen2Item لا يقوم Update-AzDataLakeGen2Item cmdlet سوى بتحديث عنصر واحد وتجنب التكرار. إذا كنت ترغب في التحديث بصفةٍ متكررةٍ، فقم بإدراج العناصر باستخدام cmdlet Get-AzDataLakeStoreChildItem، ثم قم بتوصيلها إلى cmdlet Update-AzDataLakeGen2Item.
Test-AzDataLakeStoreItem Get-AzDataLakeGen2Item سيقوم Get-AzDataLakeGen2Item cmdlet بالإبلاغ عن خطأ في حالة عدم وجود العنصر.

راجع أيضًا