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

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 om ACL's te beheren in Azure Data Lake Storage Gen2 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 naar het account

Kies hoe u wilt dat uw opdrachten autorisatie voor het opslagaccount verkrijgen.

Optie 1: Autorisatie verkrijgen met behulp van Microsoft Entra-id

Met deze methode zorgt het systeem ervoor dat uw gebruikersaccount beschikt over de juiste Azure RBAC-toewijzingen (op rollen gebaseerd toegangsbeheer) en ACL-machtigingen.

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

    Connect-AzAccount
    
  2. Als uw identiteit is gekoppeld aan meer dan één abonnement, stelt u uw actieve abonnement in op het abonnement van het opslagaccount waarin u mappen wilt maken en beheren. 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
    

Optie 2: autorisatie verkrijgen met behulp van de sleutel van het opslagaccount

Met deze methode controleert het systeem geen Azure RBAC- of ACL-machtigingen. Haal de context van het opslagaccount op met behulp van een accountsleutel.

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

Een container maken

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

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 mapreferentie met behulp van de New-AzDataLakeGen2Item cmdlet.

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 Get-AzDataLakeGen2Item cmdlet 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 Move-AzDataLakeGen2Item cmdlet.

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 Remove-AzDataLakeGen2Item cmdlet.

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 Get-AzDataLakeGen2ItemContent cmdlet.

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 Get-AzDataLakeGen2ChildItem cmdlet. 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 New-AzDataLakeGen2Item cmdlet.

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 Get-AzDataLakeGen2Item cmdlet 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 Remove-AzDataLakeGen2Item cmdlet.

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

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 Gen2-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