Använda PowerShell för att hantera kataloger och filer i Azure Data Lake Storage
Den här artikeln visar hur du använder PowerShell för att skapa och hantera kataloger och filer i lagringskonton som har ett hierarkiskt namnområde.
Mer information om hur du hämtar, ställer in och uppdaterar åtkomstkontrollistor (ACL) med kataloger och filer finns i Använda PowerShell för att hantera ACL:er i Azure Data Lake Storage.
Referens | till Gen1 till Gen2-mappning | Ge feedback
Förutsättningar
En Azure-prenumeration. Mer information finns i Hämta kostnadsfri utvärderingsversion av Azure.
Ett lagringskonto som har hierarkiskt namnområde aktiverat. Följ dessa instruktioner för att skapa en.
.NET Framework är 4.7.2 eller senare installerat. Mer information finns i Ladda ned .NET Framework.
PowerShell-version
5.1
eller senare.
Installera PowerShell-modulen
Kontrollera att den version av PowerShell som är installerad är
5.1
eller högre med hjälp av följande kommando.echo $PSVersionTable.PSVersion.ToString()
Information om hur du uppgraderar din version av PowerShell finns i Uppgradera befintlig Windows PowerShell
Installera Az.Storage-modulen .
Install-Module Az.Storage -Repository PSGallery -Force
Mer information om hur du installerar PowerShell-moduler finns i Installera Azure PowerShell-modulen
Ansluta till kontot
Välj hur du vill att dina kommandon ska få auktorisering till lagringskontot.
Alternativ 1: Skaffa auktorisering med hjälp av Microsoft Entra-ID
Med den här metoden ser systemet till att ditt användarkonto har lämpliga Azure-rollbaserade åtkomstkontrolltilldelningar (Azure RBAC) och ACL-behörigheter.
Öppna ett Windows PowerShell-kommandofönster och logga sedan in på din Azure-prenumeration med
Connect-AzAccount
kommandot och följ anvisningarna på skärmen.Connect-AzAccount
Om din identitet är associerad med mer än en prenumeration ställer du in din aktiva prenumeration på prenumerationen på det lagringskonto som du vill skapa och hantera kataloger i. I det här exemplet ersätter du
<subscription-id>
platshållarvärdet med ID:t för din prenumeration.Select-AzSubscription -SubscriptionId <subscription-id>
Hämta kontexten för lagringskontot.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
Alternativ 2: Skaffa auktorisering med hjälp av lagringskontonyckeln
Med den här metoden kontrollerar systemet inte Azure RBAC- eller ACL-behörigheter. Hämta kontexten för lagringskontot med hjälp av en kontonyckel.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -StorageAccountKey '<storage-account-key>'
Skapa en container
En container fungerar som ett filsystem för dina filer. Du kan skapa en med hjälp av cmdleten New-AzStorageContainer
.
I det här exemplet skapas en container med namnet my-file-system
.
$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName
Skapa en katalog
Skapa en katalogreferens med hjälp av cmdleten New-AzDataLakeGen2Item
.
I det här exemplet läggs en katalog med namnet my-directory
till en container.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory
Det här exemplet lägger till samma katalog, men anger även behörigheter, umask, egenskapsvärden och metadatavärden.
$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx--- -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata @{"tag1" = "value1"; "tag2" = "value2" }
Visa katalogegenskaper
Det här exemplet hämtar en katalog med hjälp av cmdleten Get-AzDataLakeGen2Item
och skriver sedan ut egenskapsvärden till konsolen.
$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
Kommentar
Om du vill hämta containerns rotkatalog utelämnar du parametern -Path
.
Byta namn på eller flytta en katalog
Byt namn på eller flytta en katalog med hjälp av cmdleten Move-AzDataLakeGen2Item
.
Det här exemplet byter namn på en katalog från namnet my-directory
till namnet 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
Kommentar
Använd parametern -Force
om du vill skriva över utan att fråga.
I det här exemplet flyttas en katalog med namnet my-directory
till en underkatalog my-directory-2
med namnet 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
Ta bort en katalog
Ta bort en katalog med hjälp av cmdleten Remove-AzDataLakeGen2Item
.
Det här exemplet tar bort en katalog med namnet my-directory
.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
Du kan använda parametern -Force
för att ta bort filen utan att fråga.
Ladda ned från en katalog
Ladda ned en fil från en katalog med hjälp av cmdleten Get-AzDataLakeGen2ItemContent
.
I det här exemplet laddas en fil med namnet upload.txt
från en katalog med namnet my-directory
.
$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath
Lista kataloginnehåll
Visa en lista över innehållet i en katalog med hjälp av cmdleten Get-AzDataLakeGen2ChildItem
. Du kan använda den valfria parametern -OutputUserPrincipalName
för att hämta namnet (i stället för objekt-ID:t) för användare.
I det här exemplet visas innehållet i en katalog med namnet my-directory
.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName
I följande exempel visas ACL
egenskaperna , Permissions
, Group
och Owner
för varje objekt i katalogen. Parametern -FetchProperty
krävs för att hämta värden för egenskapen 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
Kommentar
Om du vill visa innehållet i containerns rotkatalog utelämnar du parametern -Path
.
Ladda upp en fil till en katalog
Ladda upp en fil till en katalog med hjälp av cmdleten New-AzDataLakeGen2Item
.
I det här exemplet laddas en fil med namnet upload.txt
till en katalog med namnet 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
Det här exemplet laddar upp samma fil, men anger sedan behörigheter, umask, egenskapsvärden och metadatavärden för målfilen. I det här exemplet skrivs även dessa värden ut till konsolen.
$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
Kommentar
Om du vill ladda upp en fil till containerns rotkatalog utelämnar du parametern -Path
.
Visa filegenskaper
Det här exemplet hämtar en fil med hjälp av cmdleten Get-AzDataLakeGen2Item
och skriver sedan ut egenskapsvärden till konsolen.
$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
Ta bort en fil
Ta bort en fil med hjälp av cmdleten Remove-AzDataLakeGen2Item
.
I det här exemplet tas en fil med namnet upload.txt
.
$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $filepath
Du kan använda parametern -Force
för att ta bort filen utan att fråga.
Gen1 till Gen2-mappning
Följande tabell visar hur cmdletarna som används för Data Lake Storage Gen1 mappar till cmdletarna för Data Lake Storage.
Kommentar
Azure Data Lake Storage Gen1 har nu dragits tillbaka. Se pensionsmeddelandet här. Data Lake Storage Gen1-resurser är inte längre tillgängliga. Kontakta oss om du behöver särskild hjälp.
Data Lake Storage Gen1-cmdlet | Data Lake Storage-cmdlet | Kommentar |
---|---|---|
Get-AzDataLakeStoreChildItem | Get-AzDataLakeGen2ChildItem | Som standard visar cmdleten Get-AzDataLakeGen2ChildItem endast de underordnade objekten på den första nivån. Parametern -Recurse listar underordnade objekt rekursivt. |
Get-AzDataLakeStoreItem Get-AzDataLakeStoreItemAclEntry Get-AzDataLakeStoreItemOwner Get-AzDataLakeStoreItemPermission |
Get-AzDataLakeGen2Item | Utdataobjekten i cmdleten Get-AzDataLakeGen2Item har följande egenskaper: Acl, Ägare, Grupp, Behörighet. |
Get-AzDataLakeStoreItemContent | Get-AzDataLakeGen2FileContent | Cmdleten Get-AzDataLakeGen2FileContent laddar ned filinnehåll till en lokal fil. |
Move-AzDataLakeStoreItem | Move-AzDataLakeGen2Item | |
New-AzDataLakeStoreItem | New-AzDataLakeGen2Item | Den här cmdleten laddar upp det nya filinnehållet från en lokal fil. |
Remove-AzDataLakeStoreItem | Remove-AzDataLakeGen2Item | |
Set-AzDataLakeStoreItemOwner Set-AzDataLakeStoreItemPermission Set-AzDataLakeStoreItemAcl |
Update-AzDataLakeGen2Item | Cmdleten Update-AzDataLakeGen2Item uppdaterar endast ett enskilt objekt och inte rekursivt. Om du vill uppdatera rekursivt listar du objekt med cmdleten Get-AzDataLakeStoreChildItem och sedan pipeline till cmdleten Update-AzDataLakeGen2Item. |
Test-AzDataLakeStoreItem | Get-AzDataLakeGen2Item | Cmdleten Get-AzDataLakeGen2Item rapporterar ett fel om objektet inte finns. |