Dela via


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

Installera PowerShell-modulen

  1. 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

  2. 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.

  1. Ö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
    
  2. 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>
    
  3. 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 ACLegenskaperna , Permissions, Groupoch 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.

Se även