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

další 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.

Referenční informace | Mapování Gen1 na Gen2 | Sdělte nám svůj 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ů. Pokud ho chcete vytvořit, postupujte podle těchto pokynů.

  • .NET Framework 4.7.2 nebo větší je nainstalovaná. Další informace najdete v tématu stažení .NET Framework.

  • Verze prostředí PowerShell 5.1 nebo vyšší.

Instalace modulu PowerShellu

  1. Pomocí následujícího příkazu ověřte, že verze prostředí PowerShell, která je nainstalovaná, je 5.1 nebo vyšší.

    echo $PSVersionTable.PSVersion.ToString()
    

    Pokud chcete upgradovat verzi PowerShellu, přečtěte si téma upgrade existující Windows PowerShell .

  2. nainstalujte Az. Storage module.

    Install-Module Az.Storage -Repository PSGallery -Force  
    

    další informace o tom, jak nainstalovat moduly powershellu, najdete v tématu instalace modulu Azure PowerShell .

Připojení k účtu

Vyberte způsob, jakým mají příkazy získat autorizaci k účtu úložiště.

Možnost 1: získání autorizace pomocí Azure Active Directory (Azure AD)

V rámci tohoto přístupu systém zajistí, že váš uživatelský účet má odpovídající přiřazení Azure na základě role (Azure RBAC) a oprávnění ACL.

  1. otevřete okno příkazového řádku Windows PowerShell a potom se přihlaste 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 své aktivní předplatné na předplatné účtu úložiště, ve kterém chcete vytvářet a spravovat adresáře. V tomto příkladu nahraďte <subscription-id> hodnotu zástupného symbolu číslem 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ě

V rámci tohoto přístupu systém nekontroluje oprávnění Azure RBAC nebo 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ů pro vaše soubory. Můžete ho vytvořit pomocí New-AzStorageContainer rutiny.

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

Vytvořte odkaz na adresář pomocí New-AzDataLakeGen2Item rutiny.

Tento příklad přidá adresář s názvem 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 načte 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

Chcete-li získat kořenový adresář kontejneru, vynechejte -Path parametr.

Přejmenování nebo přesunutí adresáře

Přejmenujte nebo přesuňte adresář pomocí Move-AzDataLakeGen2Item rutiny.

V tomto příkladu se 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

Použijte -Force parametr, pokud chcete přepsat bez výzvy.

Tento příklad přesune adresář s názvem my-directory do podadresáře my-directory-2 s názvem 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

Odstraňte adresář pomocí Remove-AzDataLakeGen2Item rutiny.

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

Pomocí -Force parametru můžete soubor odebrat bez výzvy.

Stažení z adresáře

Stáhněte si soubor z adresáře pomocí Get-AzDataLakeGen2ItemContent rutiny.

Tento příklad stáhne soubor s názvem 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

Seznamte se s obsahem adresáře pomocí Get-AzDataLakeGen2ChildItem rutiny. -OutputUserPrincipalNameK získání názvu (místo ID objektu) uživatelů můžete použít volitelný parametr.

Tento příklad vypíše 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 zobrazí seznam ACL vlastností, Permissions , a Group Owner jednotlivých položek v adresáři. Pro -FetchProperty získání hodnot vlastnosti je vyžadován parametr 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

Poznámka

Chcete-li zobrazit obsah kořenového adresáře kontejneru, vynechejte -Path parametr.

Upload souboru do adresáře

Upload souboru do adresáře pomocí New-AzDataLakeGen2Item rutiny.

Tento příklad nahraje soubor s názvem 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, vynechejte -Path parametr.

Zobrazit vlastnosti souboru

Tento příklad načte 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í Remove-AzDataLakeGen2Item rutiny.

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

Pomocí -Force parametru můžete soubor odebrat bez výzvy.

Mapování Gen1 na Gen2

následující tabulka ukazuje, jak rutiny používané pro Data Lake Storage Gen1 mapují rutiny pro Data Lake Storage Gen2.

rutina Data Lake Storage Gen1 rutina Data Lake Storage Gen2 Poznámky
Get-AzDataLakeStoreChildItem Get-AzDataLakeGen2ChildItem Ve výchozím nastavení rutina Get-AzDataLakeGen2ChildItem uvádí pouze podřízené položky první úrovně. Parametr-rekurze vypisuje rekurzivně podřízené položky.
Get-AzDataLakeStoreItem
Get-AzDataLakeStoreItemAclEntry
Get-AzDataLakeStoreItemOwner
Get-AzDataLakeStoreItemPermission
Get-AzDataLakeGen2Item Výstupní položky rutiny Get-AzDataLakeGen2Item mají tyto vlastnosti: seznam ACL, vlastník, skupina, oprávnění.
Get-AzDataLakeStoreItemContent Get-AzDataLakeGen2FileContent Rutina Get-AzDataLakeGen2FileContent stahuje 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, vypište položky pomocí rutiny Get-AzDataLakeStoreChildItem a potom kanál k rutině Update-AzDataLakeGen2Item.
Test-AzDataLakeStoreItem Get-AzDataLakeGen2Item Rutina Get-AzDataLakeGen2Item ohlásí chybu, pokud položka neexistuje.

Viz také