Verwalten von Verzeichnissen und Dateien in Azure Data Lake Storage mit PowerShell
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.
Weitere Informationen zum Abrufen, Festlegen und Aktualisieren der Zugriffssteuerungslisten (Access Control Lists, ACLs) von Verzeichnissen und Dateien finden Sie unter Verwalten von Zugriffssteuerungslisten in Azure Data Lake Storage mit PowerShell.
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
Ö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 und Sie nicht aufgefordert werden, das Abonnement auszuwählen, legen Sie Ihr aktives Abonnement auf das Abonnement des Speicherkontos fest, mit dem Sie arbeiten 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
Container erstellen
Ein Container fungiert als Dateisystem für Ihre Dateien. Sie können mit dem Cmdlet New-AzStorageContainer eines erstellen.
In diesem Beispiel wird ein Container namens 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
Benennen Sie ein Verzeichnis um, oder verschieben Sie es mit dem Cmdlet Move-AzDataLakeGen2Item.
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
Entfernen Sie ein Verzeichnis mit dem Cmdlet Remove-AzDataLakeGen2Item.
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 aus einem Verzeichnis mit dem Cmdlet Get-AzDataLakeGen2ItemContent 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 mit dem Cmdlet 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 mit dem Cmdlet 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 einer Datei
Entfernen Sie eine Datei mit dem Cmdlet Remove-AzDataLakeGen2Item.
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 zugeordnet sind.
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-Cmdlet | Hinweise |
---|---|---|
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. |