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
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
Installeer de Az.Storage-module .
Install-Module Az.Storage -Repository PSGallery -Force
Verbinding maken met het account
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
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>
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-directory
verwijderd.
$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-directory
vermeld.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName
In het volgende voorbeeld ziet u de ACL
eigenschappen , Permissions
en Group
Owner
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.txt
verwijderd.
$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. |