Použití PowerShellu ke správě adresářů a souborů ve službě Azure Data Lake Storage
V tomto článku se dozvíte, jak pomocí PowerShellu vytvářet a spravovat adresáře a soubory v účtech úložiště, které mají hierarchický obor názvů.
Informace o tom, jak získat, nastavit a aktualizovat seznamy řízení přístupu (ACL) adresářů a souborů, najdete v tématu Použití PowerShellu ke správě seznamů ACL ve službě Azure Data Lake Storage.
Odkazování | na mapování | Gen1 na Gen2 – Váš názor
Požadavky
Předplatné Azure. Další informace najdete v tématu Získání bezplatné zkušební verze Azure.
Účet úložiště s povoleným hierarchickým oborem názvů. Postupujte podle těchto pokynů a vytvořte ho.
Rozhraní .NET Framework je nainstalované verze 4.7.2 nebo novější. Další informace naleznete v tématu Stažení rozhraní .NET Framework.
Verze PowerShellu
5.1
nebo vyšší
Instalace modulu PowerShellu
Pomocí následujícího příkazu ověřte, jestli je
5.1
nainstalovaná verze PowerShellu nebo vyšší.echo $PSVersionTable.PSVersion.ToString()
Pokud chcete upgradovat verzi PowerShellu, přečtěte si téma Upgrade existujícího prostředí Windows PowerShell.
Nainstalujte modul Az.Storage .
Install-Module Az.Storage -Repository PSGallery -Force
Další informace o instalaci modulů PowerShellu najdete v tématu Instalace modulu Azure PowerShellu.
Připojení k účtu
Zvolte, jak mají příkazy získat autorizaci k účtu úložiště.
Možnost 1: Získání autorizace pomocí ID Microsoft Entra
Díky tomuto přístupu systém zajistí, že váš uživatelský účet bude mít příslušná přiřazení řízení přístupu na základě role v Azure (Azure RBAC) a oprávnění ACL.
Otevřete příkazové okno Windows PowerShellu a přihlaste se k předplatnému Azure pomocí
Connect-AzAccount
příkazu a postupujte podle pokynů na obrazovce.Connect-AzAccount
Pokud je vaše identita přidružená k více než jednomu předplatnému, nastavte aktivní předplatné na předplatné účtu úložiště, ve které chcete vytvořit a spravovat adresáře. V tomto příkladu
<subscription-id>
nahraďte zástupnou hodnotu ID vašeho předplatného.Select-AzSubscription -SubscriptionId <subscription-id>
Získejte kontext účtu úložiště.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
Možnost 2: Získání autorizace pomocí klíče účtu úložiště
Díky tomuto přístupu systém nekontroluje oprávnění Azure RBAC ani ACL. Získejte kontext účtu úložiště pomocí klíče účtu.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -StorageAccountKey '<storage-account-key>'
Vytvoření kontejneru
Kontejner funguje jako systém souborů. Můžete ho vytvořit pomocí rutiny New-AzStorageContainer
.
Tento příklad vytvoří kontejner s názvem my-file-system
.
$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName
Vytvoření adresáře
Pomocí rutiny vytvořte odkaz na New-AzDataLakeGen2Item
adresář.
Tento příklad přidá adresář pojmenovaný my-directory
do kontejneru.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory
Tento příklad přidá stejný adresář, ale také nastaví oprávnění, umask, hodnoty vlastností a hodnoty metadat.
$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx--- -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata @{"tag1" = "value1"; "tag2" = "value2" }
Zobrazit vlastnosti adresáře
Tento příklad získá adresář pomocí Get-AzDataLakeGen2Item
rutiny a pak vytiskne hodnoty vlastností do konzoly.
$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
Poznámka:
Pokud chcete získat kořenový adresář kontejneru, parametr vynecháte -Path
.
Přejmenování nebo přesunutí adresáře
Pomocí rutiny Move-AzDataLakeGen2Item
přejmenujte nebo přesuňte adresář.
Tento příklad přejmenuje adresář z názvu my-directory
na název 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
Poznámka:
-Force
Pokud chcete přepsat bez výzev, použijte parametr.
Tento příklad přesune adresář pojmenovaný my-directory
do podadresáře pojmenovaného 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
Odstranění adresáře
Pomocí rutiny Remove-AzDataLakeGen2Item
odstraňte adresář.
Tento příklad odstraní adresář s názvem my-directory
.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
Tento parametr můžete použít -Force
k odebrání souboru bez výzvy.
Stažení z adresáře
Pomocí rutiny Get-AzDataLakeGen2ItemContent
stáhněte soubor z adresáře.
Tento příklad stáhne soubor pojmenovaný upload.txt
z adresáře s názvem my-directory
.
$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath
Výpis obsahu adresáře
Vypíše obsah adresáře pomocí rutiny Get-AzDataLakeGen2ChildItem
. Volitelný parametr -OutputUserPrincipalName
můžete použít k získání názvu (místo ID objektu) uživatelů.
Tento příklad uvádí obsah adresáře s názvem my-directory
.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName
Následující příklad obsahuje seznam ACL
, , Permissions
Group
a Owner
vlastnosti každé položky v adresáři. Parametr -FetchProperty
je nutný k získání hodnot pro ACL
vlastnost.
$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
Poznámka:
Chcete-li vypsat obsah kořenového adresáře kontejneru, vy vynecháte -Path
parametr.
Nahrání souboru do adresáře
Nahrajte soubor do adresáře pomocí rutiny New-AzDataLakeGen2Item
.
Tento příklad nahraje soubor pojmenovaný upload.txt
do adresáře s názvem 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
Tento příklad nahraje stejný soubor, ale pak nastaví oprávnění, umask, hodnoty vlastností a hodnoty metadat cílového souboru. Tento příklad také vytiskne tyto hodnoty do konzoly.
$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
Poznámka:
Pokud chcete nahrát soubor do kořenového adresáře kontejneru, vynecháte -Path
parametr.
Zobrazit vlastnosti souboru
Tento příklad získá soubor pomocí Get-AzDataLakeGen2Item
rutiny a pak vytiskne hodnoty vlastností do konzoly.
$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
Odstranění souboru
Odstraňte soubor pomocí rutiny Remove-AzDataLakeGen2Item
.
Tento příklad odstraní soubor s názvem upload.txt
.
$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $filepath
Tento parametr můžete použít -Force
k odebrání souboru bez výzvy.
Mapování Gen1 na Gen2
Následující tabulka ukazuje, jak se rutiny používané pro Data Lake Storage Gen1 mapují na rutiny pro Data Lake Storage.
Poznámka:
Azure Data Lake Storage Gen1 je teď vyřazený. Podívejte se na oznámení o vyřazení z provozu. Prostředky Data Lake Storage Gen1 už nejsou přístupné. Pokud potřebujete zvláštní pomoc, kontaktujte nás.
Rutina Data Lake Storage Gen1 | Rutina Data Lake Storage | Notes |
---|---|---|
Get-AzDataLakeStoreChildItem | Get-AzDataLakeGen2ChildItem | Rutina Get-AzDataLakeGen2ChildItem standardně uvádí pouze podřízené položky první úrovně. Parametr -Recurse uvádí podřízené položky rekurzivně. |
Get-AzDataLakeStoreItem Get-AzDataLakeStoreItemAclEntry Get-AzDataLakeStoreItemOwner Get-AzDataLakeStoreItemPermission |
Get-AzDataLakeGen2Item | Výstupní položky rutiny Get-AzDataLakeGen2Item mají tyto vlastnosti: Acl, Owner, Group, Permission. |
Get-AzDataLakeStoreItemContent | Get-AzDataLakeGen2FileContent | Rutina Get-AzDataLakeGen2FileContent stáhne obsah souboru do místního souboru. |
Move-AzDataLakeStoreItem | Move-AzDataLakeGen2Item | |
New-AzDataLakeStoreItem | New-AzDataLakeGen2Item | Tato rutina nahraje nový obsah souboru z místního souboru. |
Remove-AzDataLakeStoreItem | Remove-AzDataLakeGen2Item | |
Set-AzDataLakeStoreItemOwner Set-AzDataLakeStoreItemPermission Set-AzDataLakeStoreItemAcl |
Update-AzDataLakeGen2Item | Rutina Update-AzDataLakeGen2Item aktualizuje pouze jednu položku a ne rekurzivně. Pokud chcete rekurzivně aktualizovat položky, vypíšete položky pomocí rutiny Get-AzDataLakeStoreChildItem a pak kanálem do rutiny Update-AzDataLakeGen2Item. |
Test-AzDataLakeStoreItem | Get-AzDataLakeGen2Item | Rutina Get-AzDataLakeGen2Item hlásí chybu, pokud položka neexistuje. |