Bagikan melalui


Menggunakan PowerShell untuk mengelola direktori dan file di Azure Data Lake Storage

Artikel ini menunjukkan cara menggunakan PowerShell untuk membuat dan mengelola direktori serta file di akun penyimpanan yang memiliki namespace hierarkis.

Untuk mempelajari tentang cara mendapatkan, mengatur, dan memperbarui daftar kontrol akses (ACL) direktori dan file, lihat Menggunakan PowerShell untuk mengelola ACL di Azure Data Lake Storage.

Referensi | Pemetaan Gen1 ke Gen2 | Memberikan umpan balik

Prasyarat

  • Langganan Azure. Untuk informasi selengkapnya, lihat Dapatkan uji coba gratis Azure.

  • Akun penyimpanan dengan namespace hierarkis aktif. Ikuti petunjuk berikut untuk membuatnya.

  • Terpasang .NET Framework versi 4.7.2 atau lebih tinggi. Untuk informasi selengkapnya, lihat Mengunduh .NET Framework.

  • Versi PowerShell 5.1 atau lebih tinggi.

Menginstal modul PowerShell

  1. Verifikasi bahwa versi PowerShell yang diinstal adalah 5.1 atau lebih tinggi dengan menggunakan perintah berikut.

    echo $PSVersionTable.PSVersion.ToString()
    

    Untuk memutakhirkan versi PowerShell Anda, lihat Memutakhirkan Windows PowerShell yang sudah ada

  2. Pasang modul Az.Storage.

    Install-Module Az.Storage -Repository PSGallery -Force  
    

    Untuk informasi selengkapnya tentang cara menginstal modul PowerShell, lihat Menginstal modul Azure PowerShell

Sambungkan ke akun

  1. Buka jendela perintah Windows PowerShell, lalu masuk ke langganan Azure Anda dengan perintah Connect-AzAccount dan ikuti petunjuk di layar.

    Connect-AzAccount
    
  2. Jika identitas Anda dikaitkan dengan lebih dari satu langganan, dan Anda tidak diminta untuk memilih langganan, maka atur langganan aktif Anda ke langganan akun penyimpanan yang ingin Anda operasikan. Dalam contoh ini, menggantikan nilai <subscription-id> dengan ID langganan Anda.

    Select-AzSubscription -SubscriptionId <subscription-id>
    
    
    
  3. Dapatkan konteks akun penyimpanan.

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

Membuat kontainer

Kontainer bertindak sebagai sistem file untuk file Anda. Anda dapat membuatnya dengan menggunakan cmdlet New-AzStorageContainer .

Contoh ini membuat kontainer bernama my-file-system.

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

Membuat direktori

Buat referensi direktori dengan menggunakan cmdlet New-AzDataLakeGen2Item .

Contoh ini menambahkan direktori bernama my-directory ke kontainer.

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

Contoh ini menambahkan direktori yang sama, sekaligus mengatur izin, umask, nilai properti, dan nilai metadata.

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

Perlihatkan properti direktori

Contoh ini mendapatkan direktori dengan menggunakan cmdlet Get-AzDataLakeGen2Item , lalu mencetak nilai properti ke konsol.

$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

Catatan

Untuk mendapatkan direktori akar kontainer, hilangkan -Path parameter.

Ganti nama atau pindahkan direktori

Ganti nama atau pindahkan direktori dengan menggunakan cmdlet Move-AzDataLakeGen2Item .

Contoh ini mengganti nama direktori dari nama my-directory menjadi 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

Catatan

Gunakan parameter -Force jika Anda ingin menimpa tanpa perintah.

Contoh ini memindahkan direktori bernama my-directory ke subdirektori my-directory-2 bernama 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

Hapus direktori

Hapus direktori dengan menggunakan cmdlet Remove-AzDataLakeGen2Item .

Contoh ini menghapus direktori bernama my-directory.

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

Anda dapat menggunakan parameter -Force untuk menghapus file tanpa perintah.

Unduh dari direktori

Unduh file dari direktori dengan menggunakan cmdlet Get-AzDataLakeGen2ItemContent .

Contoh ini mengunduh file bernama upload.txt dari direktori bernama my-directory.

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

Daftar isi direktori

Cantumkan konten direktori dengan menggunakan cmdlet Get-AzDataLakeGen2ChildItem . Anda dapat menggunakan parameter opsional -OutputUserPrincipalName untuk mendapatkan nama (bukan ID objek) pengguna.

Contoh ini mencantumkan konten direktori bernama my-directory.

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

Contoh berikut mencantumkan properti ACL, Permissions, Group, dan Owner setiap item dalam direktori. -FetchPropertyParameter diperlukan untuk mendapatkan nilai bagi ACL properti.

$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

Catatan

Untuk mencantumkan konten direktori akar kontainer, hilangkan parameter -Path.

Unggah file ke direktori

Unggah file ke direktori dengan menggunakan cmdlet New-AzDataLakeGen2Item .

Contoh ini mengunggah file yang bernama upload.txt ke direktori bernama 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

Contoh ini mengunggah file yang sama, tetapi kemudian mengatur izin, umask, nilai properti, dan nilai metadata file tujuan. Contoh ini juga mencetak nilai-nilai ini ke konsol.

$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

Catatan

Untuk mengunggah file ke direktori akar kontainer, hilangkan parameter -Path.

Tampilkan properti file

Contoh ini mendapatkan file dengan menggunakan cmdlet Get-AzDataLakeGen2Item , lalu mencetak nilai properti ke konsol.

$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

Hapus sebuah file

Hapus file dengan menggunakan cmdlet Remove-AzDataLakeGen2Item .

Contoh ini menghapus file bernama upload.txt.

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

Anda dapat menggunakan parameter -Force untuk menghapus file tanpa perintah.

Pemetaan Gen1 ke Gen2

Tabel berikut ini memperlihatkan bagaimana cmdlet yang digunakan untuk Data Lake Storage Gen1 memetakan ke cmdlet untuk Data Lake Storage.

Catatan

Azure Data Lake Storage Gen1 sekarang dihentikan. Lihat pengumuman penghentian di sini. Sumber daya Data Lake Storage Gen1 tidak lagi dapat diakses. Jika Anda memerlukan bantuan khusus, silakan hubungi kami.

Cmdlet Azure Data Lake Storage Gen1 Cmdlet Data Lake Storage Catatan
Get-AzDataLakeStoreChildItem Get-AzDataLakeGen2ChildItem Secara default, cmdlet Get-AzDataLakeGen2ChildItem hanya mencantumkan item anak tingkat pertama. Parameter -Recurse mencantumkan item anak secara rekursif.
Get-AzDataLakeStoreItem
Get-AzDataLakeStoreItemAclEntry
Get-AzDataLakeStoreItemOwner
Get-AzDataLakeStoreItemPermission
Get-AzDataLakeGen2Item Item keluaran dari cmdlet Get-AzDataLakeGen2Item memiliki properti berikut: ACL, Pemilik, Grup, Izin.
Get-AzDataLakeStoreItemContent Get-AzDataLakeGen2FileContent Cmdlet Get-AzDataLakeGen2FileContent mengunduh konten file ke file lokal.
Move-AzDataLakeStoreItem Move-AzDataLakeGen2Item
New-AzDataLakeStoreItem New-AzDataLakeGen2Item Cmdlet ini mengunggah konten file baru dari file lokal.
Remove-AzDataLakeStoreItem Remove-AzDataLakeGen2Item
Set-AzDataLakeStoreItemOwner
Set-AzDataLakeStoreItemPermission
Set-AzDataLakeStoreItemAcl
Update-AzDataLakeGen2Item Cmdlet Update-AzDataLakeGen2Item memperbarui satu item saja, dan tidak secara rekursif. Jika Anda ingin memperbarui secara rekursif, cantumkan item dengan menggunakan cmdlet Get-AzDataLakeStoreChildItem, lalu alur ke cmdlet Update-AzDataLakeGen2Item.
Test-AzDataLakeStoreItem Get-AzDataLakeGen2Item Cmdlet Get-AzDataLakeGen2Item melaporkan kesalahan jika item tidak ada.

Lihat juga