Verwenden von PowerShell zum Verwalten von Verzeichnissen und Dateien in Azure Data Lake Storage Gen2
In diesem Artikel erfahren Sie, wie Sie mithilfe von PowerShell Verzeichnisse und Dateien in Speicherkonten erstellen und verwalten, die über einen hierarchischen Namespace verfügen.
Informationen zum Abrufen, Festlegen und Aktualisieren der Zugriffssteuerungslisten (Access Control Lists, ACLs) von Verzeichnissen und Dateien finden Sie unter Verwenden von PowerShell zum Verwalten von Zugriffssteuerungslisten in Azure Data Lake Storage Gen2.
Beispiel | Zuordnung von Gen1 zu Gen2 | Feedback senden
Voraussetzungen
Ein Azure-Abonnement. Weitere Informationen finden Sie unter Kostenlose Azure-Testversion.
Ein Speicherkonto, für das der hierarchische Namespace aktiviert ist. Befolgen Sie diese Anleitung für die Erstellung.
.NET Framework 4.7.2 oder höher ist installiert. Weitere Informationen finden Sie unter Herunterladen von .NET Framework.
PowerShell Version
5.1
oder höher
Installieren des PowerShell-Moduls
Überprüfen Sie mit dem folgenden Befehl, ob PowerShell Version
5.1
oder höher installiert ist.echo $PSVersionTable.PSVersion.ToString()
Informationen zum Aktualisieren der PowerShell-Version finden Sie unter Aktualisieren einer vorhandenen Windows PowerShell-Version.
Installieren Sie das Modul Az.Storage.
Install-Module Az.Storage -Repository PSGallery -Force
Weitere Informationen zum Installieren von PowerShell-Modulen finden Sie unter Installieren des Azure PowerShell-Moduls.
Herstellen einer Verbindung mit dem Konto
Wählen Sie aus, wie Ihre Befehle die Autorisierung für das Speicherkonto abrufen sollen.
Option 1: Abrufen der Autorisierung mithilfe Microsoft Entra ID
Bei diesem Ansatz stellt das System sicher, dass Ihr Benutzerkonto über die entsprechenden Azure RBAC-Zuweisungen (Azure Role-Based Access Control, rollenbasierte Zugriffssteuerung von Azure) und ACL-Berechtigungen verfügt.
Öffnen Sie ein Windows PowerShell-Befehlsfenster, melden Sie sich dann mit dem Befehl
Connect-AzAccount
bei Ihrem Azure-Abonnement an, und befolgen Sie die Anweisungen auf dem Bildschirm.Connect-AzAccount
Wenn Ihre Identität mehreren Abonnements zugeordnet ist, legen Sie das aktive Abonnement auf das Abonnement des Speicherkontos fest, das Sie erstellen und in dem Sie Verzeichnisse verwalten möchten. In diesem Beispiel ersetzen Sie den Platzhalterwert
<subscription-id>
durch die ID Ihres Abonnements.Select-AzSubscription -SubscriptionId <subscription-id>
Rufen Sie den Speicherkontokontext ab.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
Option 2: Abrufen der Autorisierung mithilfe des Speicherkontoschlüssels
Bei diesem Ansatz überprüft das System nicht die Azure RBAC- oder ACL-Berechtigungen. Rufen Sie den Speicherkontokontext mithilfe eines Kontoschlüssels ab.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -StorageAccountKey '<storage-account-key>'
Erstellen eines Containers
Ein Container fungiert als Dateisystem für Ihre Dateien. Mit dem Cmdlet New-AzStorageContainer
können Sie einen erstellen.
In diesem Beispiel wird ein Container mit dem Namen my-file-system
erstellt.
$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName
Erstellen eines Verzeichnisses
Erstellen Sie mit dem Cmdlet New-AzDataLakeGen2Item
eine Verzeichnisreferenz.
In diesem Beispiel wird einem Container das Verzeichnis my-directory
hinzugefügt.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory
In diesem Beispiel wird das gleiche Verzeichnis hinzugefügt, es werden jedoch auch die Berechtigungen, die umask, Eigenschaftswerte und Metadatenwerte festgelegt.
$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx--- -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata @{"tag1" = "value1"; "tag2" = "value2" }
Anzeigen von Verzeichniseigenschaften
In diesem Beispiel werden mit dem Cmdlet Get-AzDataLakeGen2Item
ein Verzeichnis abgerufen und dann die Eigenschaftswerte in der Konsole ausgegeben.
$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
Hinweis
Lassen Sie zum Abrufen des Stammverzeichnisses des Containers den Parameter -Path
weg.
Umbenennen oder Verschieben eines Verzeichnisses
Mit dem Cmdlet Move-AzDataLakeGen2Item
können Sie ein Verzeichnis umbenennen oder verschieben.
In diesem Beispiel wird ein Verzeichnis mit dem Namen my-directory
in my-new-directory
umbenannt.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
$dirname2 = "my-new-directory/"
Move-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -DestFileSystem $filesystemName -DestPath $dirname2
Hinweis
Verwenden Sie den Parameter -Force
, wenn Sie ohne Eingabeaufforderungen überschreiben möchten.
Im folgenden Beispiel wird ein Verzeichnis mit dem Namen my-directory
in ein Unterverzeichnis von my-directory-2
mit dem Namen my-subdirectory
verschoben.
$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
Löschen eines Verzeichnisses
Ein Verzeichnis kann mit dem Cmdlet Remove-AzDataLakeGen2Item
gelöscht werden.
In diesem Beispiel wird das Verzeichnis my-directory
gelöscht.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
Mithilfe des Parameters -Force
können Sie die Datei ohne Aufforderung entfernen.
Herunterladen aus einem Verzeichnis
Laden Sie eine Datei mithilfe des Cmdlets Get-AzDataLakeGen2ItemContent
aus einem Verzeichnis herunter.
In diesem Beispiel wird eine Datei mit dem Namen upload.txt
aus einem Verzeichnis mit dem Namen my-directory
heruntergeladen.
$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath
Auflisten des Verzeichnisinhalts
Listen Sie den Inhalt eines Verzeichnisses mithilfe des Cmdlets Get-AzDataLakeGen2ChildItem
auf. Sie können den optionalen Parameter -OutputUserPrincipalName
verwenden, um den Namen (anstelle der Objekt-ID) von Benutzern abzurufen.
In diesem Beispiel wird der Inhalt des Verzeichnisses my-directory
aufgelistet.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName
Im folgenden Beispiel werden die Eigenschaften ACL
, Permissions
, Group
und Owner
der einzelnen Elemente im Verzeichnis aufgelistet. Der Parameter -FetchProperty
ist erforderlich, um Werte für die Eigenschaft ACL
abzurufen.
$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
Hinweis
Um den Inhalt des Stammverzeichnisses des Containers aufzulisten, lassen Sie den Parameter -Path
weg.
Hochladen einer Datei in ein Verzeichnis
Laden Sie eine Datei mithilfe des Cmdlets New-AzDataLakeGen2Item
in ein Verzeichnis hoch.
In diesem Beispiel wird die Datei upload.txt
in das Verzeichnis my-directory
hochgeladen.
$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
In diesem Beispiel wird die gleiche Datei hochgeladen. Anschließend werden jedoch die Berechtigungen, die umask, die Eigenschaftswerte und die Metadatenwerte der Zieldatei festgelegt. In diesem Beispiel werden diese Werte außerdem in der Konsole ausgegeben.
$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
Hinweis
Lassen Sie zum Hochladen einer Datei in das Stammverzeichnis des Containers den Parameter -Path
weg.
Anzeigen von Dateieigenschaften
In diesem Beispiel werden mit dem Cmdlet Get-AzDataLakeGen2Item
eine Datei abgerufen und dann die Eigenschaftswerte in der Konsole ausgegeben.
$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
Löschen von Dateien
Mit dem Cmdlet Remove-AzDataLakeGen2Item
können Sie eine Datei löschen.
In diesem Beispiel wird die Datei upload.txt
gelöscht.
$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $filepath
Mithilfe des Parameters -Force
können Sie die Datei ohne Aufforderung entfernen.
Zuordnung von Gen1 zu Gen2
In der folgenden Tabelle ist dargestellt, wie die für Data Lake Storage Gen1 verwendeten Cmdlets den Cmdlets für Data Lake Storage Gen2 zugeordnet werden.
Hinweis
Azure Data Lake Storage Gen1 wurde außer Betrieb genommen. Weitere Informationen finden Sie in der Ankündigung zur Außerbetriebnahme hier. Auf Data Lake Storage Gen1-Ressourcen kann nicht mehr zugegriffen werden. Wenn Sie besondere Unterstützung benötigen, kontaktieren Sie uns bitte.
Data Lake Storage Gen1-Cmdlet | Data Lake Storage Gen2-Cmdlet | Notizen |
---|---|---|
Get-AzDataLakeStoreChildItem | Get-AzDataLakeGen2ChildItem | Standardmäßig listet das Cmdlet „Get-AzDataLakeGen2ChildItem“ nur die untergeordneten Elemente der ersten Ebene auf. Mit dem Parameter „-Recurse“ werden untergeordnete Elemente rekursiv aufgelistet. |
Get-AzDataLakeStoreItem Get-AzDataLakeStoreItemAclEntry Get-AzDataLakeStoreItemOwner Get-AzDataLakeStoreItemPermission |
Get-AzDataLakeGen2Item | Die Ausgabeelemente des Cmdlets „Get-AzDataLakeGen2Item“ verfügen über die folgenden Eigenschaften: Acl, Eigentümer, Gruppe, Berechtigung. |
Get-AzDataLakeStoreItemContent | Get-AzDataLakeGen2FileContent | Mit dem Cmdlet „Get-AzDataLakeGen2FileContent“ wird der Dateiinhalt in eine lokale Datei heruntergeladen. |
Move-AzDataLakeStoreItem | Move-AzDataLakeGen2Item | |
New-AzDataLakeStoreItem | New-AzDataLakeGen2Item | Dieses Cmdlet lädt den neuen Dateiinhalt aus einer lokalen Datei hoch. |
Remove-AzDataLakeStoreItem | Remove-AzDataLakeGen2Item | |
Set-AzDataLakeStoreItemOwner Set-AzDataLakeStoreItemPermission Set-AzDataLakeStoreItemAcl |
Update-AzDataLakeGen2Item | Mit dem Cmdlet „Update-AzDataLakeGen2Item“ wird nur ein einzelnes Element und nicht rekursiv aktualisiert. Wenn Sie rekursiv aktualisieren möchten, listen Sie Elemente mithilfe des Cmdlets „Get-AzDataLakeStoreChildItem“ auf, und führen Sie dann eine Pipeline zum Cmdlet „Update-AzDataLakeGen2Item“ aus. |
Test-AzDataLakeStoreItem | Get-AzDataLakeGen2Item | Das Cmdlet „Get-AzDataLakeGen2Item“ meldet einen Fehler, wenn das Element nicht vorhanden ist. |