Menggunakan PowerShell untuk mengelola direktori dan file di Azure Data Lake Storage Gen2
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 Gen2.
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
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
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
Pilih bagaimana Anda ingin perintah Anda mendapatkan otorisasi ke akun penyimpanan.
Opsi 1: Dapatkan otorisasi dengan menggunakan ID Microsoft Entra
Dengan pendekatan ini, sistem memastikan bahwa akun pengguna Anda memiliki penetapan kontrol akses berbasis peran Azure (Azure RBAC) dan izin ACL yang sesuai.
Buka jendela perintah Windows PowerShell, lalu masuk ke langganan Azure Anda dengan
Connect-AzAccount
perintah dan ikuti petunjuk di layar.Connect-AzAccount
Jika identitas Anda dikaitkan dengan lebih dari satu langganan, aturlah langganan aktif Anda ke langganan akun penyimpanan tempat Anda ingin membuat dan mengelola direktori. Dalam contoh ini, gantilah
<subscription-id>
nilai tempat penampung dengan ID langganan Anda.Select-AzSubscription -SubscriptionId <subscription-id>
Dapatkan konteks akun penyimpanan.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
Opsi 2: Dapatkan otorisasi dengan menggunakan kunci akun penyimpanan
Dengan pendekatan ini, sistem tidak memeriksa izin Azure RBAC atau ACL. Dapatkan konteks akun penyimpanan dengan menggunakan kunci akun.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -StorageAccountKey '<storage-account-key>'
Membuat kontainer
Kontainer bertindak sebagai sistem file untuk file Anda. Anda dapat membuatnya dengan menggunakan New-AzStorageContainer
cmdlet.
Contoh ini membuat kontainer bernama my-file-system
.
$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName
Membuat direktori
Buat referensi direktori menggunakan New-AzDataLakeGen2Item
cmdlet.
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 Get-AzDataLakeGen2Item
cmdlet, 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 Move-AzDataLakeGen2Item
cmdlet.
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
Menghapus direktori dengan menggunakan Remove-AzDataLakeGen2Item
cmdlet.
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
Mengunduh file dari direktori dengan menggunakan Get-AzDataLakeGen2ItemContent
cmdlet.
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
Mencantumkan konten direktori dengan menggunakan Get-AzDataLakeGen2ChildItem
cmdlet. 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. -FetchProperty
Parameter 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
Mengunggah file ke direktori dengan menggunakan New-AzDataLakeGen2Item
cmdlet.
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
.
Perlihatkan properti file
Contoh ini mendapatkan file dengan menggunakan Get-AzDataLakeGen2Item
cmdlet, 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 file
Hapus file dengan menggunakan Remove-AzDataLakeGen2Item
cmdlet.
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 menunjukkan cara cmdlet yang digunakan untuk memetakan Azure Data Lake Storage Gen1 ke cmdlet untuk Azure Data Lake Storage Gen2.
Cmdlet Azure Data Lake Storage Gen1 | Cmdlet Azure Data Lake Storage Gen2 | 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 output cmdlet Get-AzDataLakeGen2Item memiliki properti ini: 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. |