Partager via


Utiliser PowerShell pour gérer les répertoires et les fichiers dans Azure Data Lake Storage Gen2

Cet article explique comment utiliser PowerShell pour créer et gérer des répertoires et des fichiers dans les comptes de stockage dotés d’un espace de noms hiérarchique.

Pour en savoir plus sur la façon d’obtenir, de définir et de mettre à jour les listes de contrôle d’accès (ACL, Access Control List) des répertoires et des fichiers, consultez Utiliser PowerShell pour gérer les listes de contrôle d’accès dans Azure Data Lake Storage Gen2.

Référence | Mappage Gen1 à Gen2 | Envoyer des commentaires

Prérequis

  • Un abonnement Azure. Pour plus d’informations, consultez Obtenir l’essai gratuit Azure.

  • Un compte de stockage doté d’un espace de noms hiérarchique activé. Pour créer un test, suivez ces instructions.

  • .NET Framework version 4.7.2 ou ultérieure installé. Pour plus d’informations, consultez Télécharger .NET Framework.

  • PowerShell version 5.1 ou ultérieure.

Installer le module PowerShell

  1. Vérifiez que la version de PowerShell installée est 5.1 ou une version ultérieure grâce à la commande suivante.

    echo $PSVersionTable.PSVersion.ToString()
    

    Pour mettre à niveau votre version de PowerShell, consultez Mise à niveau des instances Windows PowerShell existantes.

  2. Installez le module Az.Storage.

    Install-Module Az.Storage -Repository PSGallery -Force  
    

    Pour plus d’informations sur l’installation des modules PowerShell, consultez Installer le module Azure PowerShell.

Se connecter au compte

Choisissez la façon dont vous souhaitez que vos commandes obtiennent l’autorisation pour le compte de stockage.

Option 1 : obtenir une autorisation à l'aide de Microsoft Entra ID

Avec cette approche, le système garantit que votre compte d’utilisateur dispose des autorisations de contrôle d’accès en fonction du rôle Azure (Azure RBAC) appropriées et des autorisations de liste de contrôle d’accès (ACL).

  1. Ouvrez une fenêtre de commande Windows PowerShell, puis connectez-vous à votre abonnement Azure avec la commande Connect-AzAccount et suivez les instructions à l’écran.

    Connect-AzAccount
    
  2. Si votre identité est associée à plusieurs abonnements, définissez comme abonnement actif l’abonnement du compte de stockage dans lequel vous souhaitez créer et gérer des répertoires. Dans cet exemple, remplacez la valeur d’espace réservé <subscription-id> par l’ID de votre abonnement.

    Select-AzSubscription -SubscriptionId <subscription-id>
    
  3. Obtenez le contexte du compte de stockage.

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

Option n°2 : Obtenir l’autorisation à l’aide de la clé de compte de stockage

Avec cette approche, le système ne vérifie pas les autorisations Azure RBAC ou ACL. Récupérez le contexte du compte de stockage à l’aide d’une clé de compte.

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

Créez un conteneur.

Un conteneur agit comme un système de fichiers pour vos fichiers. Vous pouvez en créer un à l’aide de l’applet de commande New-AzStorageContainer.

Cet exemple permet de créer un conteneur nommé my-file-system.

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

Créer un répertoire

Créez une référence de répertoire à l’aide de l’applet de commande New-AzDataLakeGen2Item.

Cet exemple ajoute un répertoire nommé my-directory à un conteneur.

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

Cet exemple ajoute le même répertoire, mais définit également les autorisations, le masque umask, les valeurs de propriété et les valeurs de métadonnées.

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

Afficher les propriétés du répertoire

Cet exemple obtient un répertoire à l’aide de l’applet de commande Get-AzDataLakeGen2Item, puis affiche les valeurs des propriétés dans la console.

$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

Notes

Pour obtenir le répertoire racine du conteneur, omettez le paramètre -Path.

Renommer ou déplacer un répertoire

Renommez ou déplacez un répertoire à l’aide de l’applet de commande Move-AzDataLakeGen2Item.

Cet exemple renomme un répertoire my-directory en 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

Notes

Utilisez le paramètre -Force si vous souhaitez remplacer sans invite.

Cet exemple déplace un répertoire nommé my-directory vers un sous-répertoire de my-directory-2, nommé 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

Supprimer un répertoire

Supprimez un répertoire à l’aide de l’applet de commande Remove-AzDataLakeGen2Item.

Cet exemple supprime un répertoire nommé my-directory.

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

Vous pouvez utiliser le paramètre -Force pour supprimer le fichier sans invite.

Télécharger à partir d’un répertoire

Téléchargez un fichier à partir d’un répertoire à l’aide de l’applet de commande Get-AzDataLakeGen2ItemContent.

Cet exemple télécharge un fichier nommé upload.txt à partir d’un répertoire nommé my-directory.

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

Afficher le contenu du répertoire

Listez le contenu d’un répertoire à l’aide de l’applet de commande Get-AzDataLakeGen2ChildItem. Vous pouvez utiliser le paramètre facultatif -OutputUserPrincipalName pour récupérer le nom (au lieu de l’ID d’objet) des utilisateurs.

Cet exemple liste le contenu d’un répertoire nommé my-directory.

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

L’exemple suivant répertorie les propriétés ACL, Permissions, Groupet Owner de chaque élément figurant dans le répertoire. Le paramètre -FetchProperty est requis pour obtenir les valeurs de la propriété 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

Notes

Pour répertorier les contenus du répertoire racine du conteneur, omettez le paramètre -Path.

Charger un fichier dans un répertoire

Chargez un fichier dans un répertoire à l’aide de l’applet de commande New-AzDataLakeGen2Item.

Cet exemple charge un fichier nommé upload.txt dans un répertoire nommé 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

Cet exemple charge le même fichier, mais définit ensuite les autorisations, le masque umask, les valeurs de propriété et les valeurs de métadonnées du fichier de destination. Cet exemple affiche également ces valeurs dans la console.

$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

Notes

Pour charger un fichier dans le répertoire racine du conteneur, omettez le paramètre -Path.

Afficher les propriétés d’un fichier

Cet exemple obtient un fichier à l’aide de l’applet de commande Get-AzDataLakeGen2Item, puis affiche les valeurs des propriétés dans la console.

$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

Supprimer un fichier

Supprimez un fichier à l’aide de l’applet de commande Remove-AzDataLakeGen2Item.

Cet exemple supprime un fichier nommé upload.txt.

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

Vous pouvez utiliser le paramètre -Force pour supprimer le fichier sans invite.

Mappage de Gen1 à Gen2

Le tableau suivant montre comment les applets de commande utilisées pour Data Lake Storage Gen1 sont mappées aux applets de commande pour Data Lake Storage Gen2.

Remarque

Azure Data Lake Storage Gen1 est désormais hors service. Consultez l’annonce de mise hors service ici. Les ressources Data Lake Storage Gen1 ne sont plus accessibles. Si vous avez besoin d’une aide particulière, contactez-nous.

Applet de commande Data Lake Storage Gen1 Applet de commande Data Lake Storage Gen2 Notes
Get-AzDataLakeStoreChildItem Get-AzDataLakeGen2ChildItem Par défaut, la cmdlet Get-AzDataLakeGen2ChildItem répertorie uniquement les éléments enfants de premier niveau. Le paramètre -Recurse répertorie les éléments enfants de manière récursive.
Get-AzDataLakeStoreItem
Get-AzDataLakeStoreItemAclEntry
Get-AzDataLakeStoreItemOwner
Get-AzDataLakeStoreItemPermission
Get-AzDataLakeGen2Item Les éléments de sortie de l’applet de commande Get-AzDataLakeGen2Item ont ces propriétés : Acl, Propriétaire, Groupe, Privilège.
Get-AzDataLakeStoreItemContent Get-AzDataLakeGen2FileContent La cmdlet Get-AzDataLakeGen2FileContent télécharge le contenu du fichier dans un fichier local.
Move-AzDataLakeStoreItem Move-AzDataLakeGen2Item
New-AzDataLakeStoreItem New-AzDataLakeGen2Item Cette cmdlet télécharge le contenu du nouveau fichier à partir d’un fichier local.
Remove-AzDataLakeStoreItem Remove-AzDataLakeGen2Item
Set-AzDataLakeStoreItemOwner
Set-AzDataLakeStoreItemPermission
Set-AzDataLakeStoreItemAcl
Update-AzDataLakeGen2Item La cmdlet Update-AzDataLakeGen2Item met à jour un seul élément, et non de manière récursive. Si vous souhaitez mettre à jour de manière récursive, répertoriez les éléments à l’aide de l’applet de commande Get-AzDataLakeStoreChildItem, puis acheminez-les vers l’applet de commande Update-AzDataLakeGen2Item.
Test-AzDataLakeStoreItem Get-AzDataLakeGen2Item L’applet de commande Get-AzDataLakeGen2Item signale une erreur si l’élément n’existe pas.

Voir aussi