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
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.
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).
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
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>
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
, Group
et 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. |