Použití PowerShellu ke správě adresářů a souborů v Azure Data Lake Storage Gen2

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 v Azure Data Lake Storage Gen2.

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

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

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

  1. 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
    
  2. 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>
    
  3. 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-2my-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, , PermissionsGroupa 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 Gen2.

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

Viz také