Delen via


PowerShell gebruiken om mappen en bestanden te beheren in Azure Data Lake Storage

In dit artikel leest u hoe u PowerShell gebruikt voor het maken en beheren van mappen en bestanden in opslagaccounts met een hiërarchische naamruimte.

Zie PowerShell gebruiken voor het beheren van ACL's in Azure Data Lake Storage voor meer informatie over het ophalen, instellen en bijwerken van de toegangsbeheerlijsten (ACL's).

Verwijzing | Gen1 naar Gen2-toewijzing | Feedback geven

Vereisten

  • Een Azure-abonnement. Zie Gratis proefversie van Azure downloaden voor meer informatie.

  • Een opslagaccount waarvoor hiërarchische naamruimte is ingeschakeld. Volg deze instructies om er een te maken.

  • .NET Framework is 4.7.2 of hoger geïnstalleerd. Zie .NET Framework downloaden voor meer informatie.

  • PowerShell-versie 5.1 of hoger.

De PowerShell-module installeren

  1. Controleer of de geïnstalleerde versie van PowerShell of hoger is 5.1 met behulp van de volgende opdracht.

    echo $PSVersionTable.PSVersion.ToString()
    

    Zie Bestaande Windows PowerShell upgraden om uw versie van PowerShell bij te werken

  2. Installeer de Az.Storage-module .

    Install-Module Az.Storage -Repository PSGallery -Force  
    

    Zie De Azure PowerShell-module installeren voor meer informatie over het installeren van PowerShell-modules

Verbinding maken met het account

  1. Open een Windows PowerShell-opdrachtvenster en meld u aan bij uw Azure-abonnement met de opdracht Connect-AzAccount en volg de aanwijzingen op het scherm.

    Connect-AzAccount
    
  2. Als uw identiteit is gekoppeld aan meer dan één abonnement en u niet wordt gevraagd het abonnement te selecteren, stelt u uw actieve abonnement in op het abonnement van het opslagaccount waarop u wilt werken. Vervang in dit voorbeeld de waarde van de <subscription-id> tijdelijke aanduiding door de id van uw abonnement.

    Select-AzSubscription -SubscriptionId <subscription-id>
    
    
    
  3. Haal de context van het opslagaccount op.

    $ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
    

Een container maken

Een container fungeert als een bestandssysteem voor uw bestanden. U kunt er een maken met behulp van de cmdlet New-AzStorageContainer .

In dit voorbeeld wordt een container gemaakt met de naam my-file-system.

$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName

Een map maken

Maak een mapverwijzing met behulp van de cmdlet New-AzDataLakeGen2Item .

In dit voorbeeld wordt een map met de naam my-directory toegevoegd aan een container.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory

In dit voorbeeld wordt dezelfde map toegevoegd, maar worden ook de machtigingen, umask, eigenschapswaarden en metagegevenswaarden ingesteld.

$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx---  -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata  @{"tag1" = "value1"; "tag2" = "value2" }

Mapeigenschappen weergeven

In dit voorbeeld wordt een map opgehaald met behulp van de cmdlet Get-AzDataLakeGen2Item en worden de eigenschapswaarden vervolgens afgedrukt naar de 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

Notitie

Als u de hoofdmap van de container wilt ophalen, laat u de -Path parameter weg.

De naam van een map wijzigen of verplaatsen

Wijzig de naam van een map of verplaats deze met behulp van de cmdlet Move-AzDataLakeGen2Item .

In dit voorbeeld wordt de naam van een map gewijzigd van de naam my-directory in de naam 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

Notitie

Gebruik de -Force parameter als u wilt overschrijven zonder prompts.

In dit voorbeeld wordt een map met de naam my-directory verplaatst naar een submap met my-directory-2 de naam 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

Een directory verwijderen

Verwijder een map met behulp van de cmdlet Remove-AzDataLakeGen2Item .

In dit voorbeeld wordt een map met de naam my-directoryverwijderd.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item  -Context $ctx -FileSystem $filesystemName -Path $dirname

U kunt de -Force parameter gebruiken om het bestand te verwijderen zonder een prompt.

Downloaden uit een map

Download een bestand uit een map met behulp van de cmdlet Get-AzDataLakeGen2ItemContent .

In dit voorbeeld wordt een bestand met de naam gedownload upload.txt uit een map met de naam my-directory.

$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath

Mapinhoud weergeven

Geef de inhoud van een map weer met behulp van de cmdlet Get-AzDataLakeGen2ChildItem . U kunt de optionele parameter -OutputUserPrincipalName gebruiken om de naam (in plaats van de object-id) van gebruikers op te halen.

In dit voorbeeld wordt de inhoud van een map met de naam my-directoryvermeld.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName

In het volgende voorbeeld ziet u de ACLeigenschappen , Permissionsen GroupOwner eigenschappen van elk item in de map. De -FetchProperty parameter is vereist om waarden voor de ACL eigenschap op te halen.

$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

Notitie

Als u de inhoud van de hoofdmap van de container wilt weergeven, laat u de -Path parameter weg.

Een bestand uploaden naar een map

Upload een bestand naar een map met behulp van de cmdlet New-AzDataLakeGen2Item .

In dit voorbeeld wordt een bestand met de naam upload.txt geüpload naar een map met de naam 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

In dit voorbeeld wordt hetzelfde bestand geüpload, maar worden de machtigingen, umask, eigenschapswaarden en metagegevenswaarden van het doelbestand ingesteld. In dit voorbeeld worden deze waarden ook afgedrukt op de 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

Notitie

Als u een bestand wilt uploaden naar de hoofdmap van de container, laat u de -Path parameter weg.

Bestandseigenschappen weergeven

In dit voorbeeld wordt een bestand opgehaald met behulp van de cmdlet Get-AzDataLakeGen2Item en worden de eigenschapswaarden vervolgens afgedrukt naar de 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

Een bestand verwijderen

Verwijder een bestand met behulp van de cmdlet Remove-AzDataLakeGen2Item .

In dit voorbeeld wordt een bestand met de naam upload.txtverwijderd.

$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item  -Context $ctx -FileSystem $filesystemName -Path $filepath

U kunt de -Force parameter gebruiken om het bestand te verwijderen zonder een prompt.

Gen1 naar Gen2-toewijzing

In de volgende tabel ziet u hoe de cmdlets die worden gebruikt voor Data Lake Storage Gen1, worden toegewezen aan de cmdlets voor Data Lake Storage.

Notitie

Azure Data Lake Storage Gen1 is nu buiten gebruik gesteld. Bekijk hier de aankondiging van de buitengebruikstelling. Data Lake Storage Gen1-resources zijn niet meer toegankelijk. Als u speciale hulp nodig hebt, neem dan contact met ons op.

Data Lake Storage Gen1-cmdlet Data Lake Storage-cmdlet Opmerkingen
Get-AzDataLakeStoreChildItem Get-AzDataLakeGen2ChildItem De cmdlet Get-AzDataLakeGen2ChildItem bevat standaard alleen de onderliggende items op het eerste niveau. Met de parameter -Recurse worden onderliggende items recursief vermeld.
Get-AzDataLakeStoreItem
Get-AzDataLakeStoreItemAclEntry
Get-AzDataLakeStoreItemOwner
Get-AzDataLakeStoreItemPermission
Get-AzDataLakeGen2Item De uitvoeritems van de cmdlet Get-AzDataLakeGen2Item hebben de volgende eigenschappen: Acl, Eigenaar, Groep, Machtiging.
Get-AzDataLakeStoreItemContent Get-AzDataLakeGen2FileContent De cmdlet Get-AzDataLakeGen2FileContent downloadt bestandsinhoud naar een lokaal bestand.
Move-AzDataLakeStoreItem Move-AzDataLakeGen2Item
New-AzDataLakeStoreItem New-AzDataLakeGen2Item Met deze cmdlet wordt de nieuwe bestandsinhoud vanuit een lokaal bestand geüpload.
Remove-AzDataLakeStoreItem Remove-AzDataLakeGen2Item
Set-AzDataLakeStoreItemOwner
Set-AzDataLakeStoreItemPermission
Set-AzDataLakeStoreItemAcl
Update-AzDataLakeGen2Item De cmdlet Update-AzDataLakeGen2Item werkt slechts één item bij en niet recursief. Als u recursief wilt bijwerken, maakt u een lijst met items met behulp van de cmdlet Get-AzDataLakeStoreChildItem en voert u een pijplijn uit naar de cmdlet Update-AzDataLakeGen2Item.
Test-AzDataLakeStoreItem Get-AzDataLakeGen2Item De cmdlet Get-AzDataLakeGen2Item meldt een fout als het item niet bestaat.

Zie ook