Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come usare PowerShell per creare e gestire directory e file negli account di archiviazione con uno spazio dei nomi gerarchico.
Per informazioni su come ottenere, impostare e aggiornare gli elenchi di controllo di accesso (ACL) di directory e file, vedere Usare PowerShell per gestire gli elenchi di controllo di accesso in Azure Data Lake Storage.
Riferimento | Mappatura da Gen1 a Gen2 | Invia commenti e suggerimenti
Prerequisiti
Una sottoscrizione di Azure. Per altre informazioni, vedere Ottenere la versione di valutazione gratuita di Azure.
Un account di archiviazione con spazio dei nomi gerarchico abilitato. Per crearne uno, seguire queste istruzioni.
.NET Framework versione 4.7.2 o successiva è installata. Per altre informazioni, vedere Scaricare .NET Framework.
Versione
5.1di PowerShell o successiva.
Installa il modulo PowerShell
Verifica che la versione di PowerShell che hai installato sia
5.1o superiore usando il seguente comando.echo $PSVersionTable.PSVersion.ToString()Per aggiornare la tua versione di PowerShell, vedi Aggiornamento di PowerShell di Windows esistente.
Installa il modulo Az.Storage .
Install-Module Az.Storage -Repository PSGallery -ForcePer maggiori informazioni su come installare moduli PowerShell, consulta Installa il modulo Azure PowerShell.
Effettuare la connessione all'account
Apri una finestra di comandi PowerShell di Windows e poi accedi al tuo abbonamento Azure usando il comando Connect-AzAccount. Segui le istruzioni sullo schermo.
Connect-AzAccountSe l'identità è associata a più sottoscrizioni e non viene richiesto di selezionare la sottoscrizione, impostare la sottoscrizione attiva sulla sottoscrizione dell'account di archiviazione su cui si vuole operare. In questo esempio sostituire il
<subscription-id>valore segnaposto con l'ID della sottoscrizione.Select-AzSubscription -SubscriptionId <subscription-id>Ottieni il contesto dell'account di archiviazione.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
Creazione di un contenitore
Un contenitore funge da file system per i file. È possibile crearne uno usando il cmdlet New-AzStorageContainer .
In questo esempio viene creato un contenitore denominato my-file-system.
$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName
Crea una directory
Creare un riferimento di directory usando il cmdlet New-AzDataLakeGen2Item.
In questo esempio viene aggiunta una directory denominata my-directory a un contenitore.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory
Questo esempio aggiunge la stessa directory, ma imposta anche le autorizzazioni, umask, i valori delle proprietà e i valori dei metadati.
$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx--- -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata @{"tag1" = "value1"; "tag2" = "value2" }
Mostrare le proprietà della directory
Questo esempio ottiene una directory usando il cmdlet Get-AzDataLakeGen2Item e quindi stampa i valori delle proprietà nella 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
Nota
Per ottenere la directory radice del contenitore, omettere il parametro -Path.
Rinominare o spostare una directory
Rinominare o spostare una directory usando il cmdlet Move-AzDataLakeGen2Item .
In questo esempio viene rinominata una directory dal nome my-directory al nome 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
Nota
Usare il -Force parametro se si desidera sovrascrivere senza prompt.
In questo esempio viene spostata una directory denominata my-directory in una sottodirectory denominata my-directory-2my-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
Eliminare una directory
Eliminare una directory usando il cmdlet Remove-AzDataLakeGen2Item .
Questo esempio illustra come eliminare una directory denominata my-directory.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
È possibile usare il -Force parametro per rimuovere il file senza un prompt.
Scaricare da una directory
Scaricare un file da una directory usando il cmdlet Get-AzDataLakeGen2ItemContent .
Questo esempio illustra come scaricare un file denominato upload.txt da una directory denominata my-directory.
$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath
Elencare il contenuto della directory
Elencare il contenuto di una directory usando il cmdlet Get-AzDataLakeGen2ChildItem . È possibile usare il parametro -OutputUserPrincipalName facoltativo per ottenere il nome (anziché l'ID oggetto) degli utenti.
In questo esempio vengono elencati i contenuti di una directory denominata my-directory.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName
Nell'esempio seguente vengono elencate le proprietà ACL, Permissions, Group e le proprietà Owner di ogni elemento nella directory. Il -FetchProperty parametro è necessario per ottenere i valori per la ACL proprietà .
$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
Nota
Per elencare il contenuto della directory radice del contenitore, omettere il parametro -Path.
Carica un file in una cartella
Caricare un file in una directory tramite il cmdlet New-AzDataLakeGen2Item.
Questo esempio illustra come caricare un file denominato upload.txt in una directory denominata 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 questo esempio viene caricato lo stesso file, ma vengono quindi impostate le autorizzazioni, umask, i valori delle proprietà e i valori dei metadati del file di destinazione. In questo esempio vengono stampati anche questi valori nella 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
Nota
Per caricare un file nella directory radice del contenitore, omettere il parametro -Path.
Mostra le proprietà del file
Questo esempio ottiene un file usando il cmdlet Get-AzDataLakeGen2Item e quindi stampa i valori delle proprietà nella 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
Eliminare un file
Eliminare un file usando il cmdlet Remove-AzDataLakeGen2Item .
In questo esempio viene eliminato un file denominato upload.txt.
$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $filepath
È possibile usare il -Force parametro per rimuovere il file senza un prompt.
Mappatura da Gen1 a Gen2
La tabella seguente mostra come i cmdlet usati con Data Lake Storage Gen1 corrispondono ai cmdlet di Data Lake Storage.
Nota
Azure Data Lake Storage Gen1 è ora ritirato. Vedere l'annuncio di ritiro qui. Le risorse di Data Lake Storage Gen1 non sono più accessibili. Se hai bisogno di assistenza speciale, contattaci.
| Cmdlet di Data Lake Storage Gen1 | Cmdlet di Data Lake Storage | Note |
|---|---|---|
| Get-AzDataLakeStoreChildItem | Get-AzDataLakeGen2ChildItem | Per impostazione predefinita, il cmdlet Get-AzDataLakeGen2ChildItem elenca solo gli elementi figlio del primo livello. Il parametro -Recurse elenca in modo ricorsivo gli elementi figlio. |
| Get-AzDataLakeStoreItem Get-AzDataLakeStoreItemAclEntry Get-AzDataLakeStoreItemOwner Get-AzDataLakeStoreItemPermission |
Get-AzDataLakeGen2Item | Gli elementi di output del cmdlet Get-AzDataLakeGen2Item hanno queste proprietà: Acl, Owner, Group, Permission. |
| Get-AzDataLakeStoreItemContent | Get-AzDataLakeGen2FileContent | Il cmdlet Get-AzDataLakeGen2FileContent scarica il contenuto del file nel file locale. |
| Move-AzDataLakeStoreItem | Move-AzDataLakeGen2Item | |
| New-AzDataLakeStoreItem | New-AzDataLakeGen2Item | Questo cmdlet carica il nuovo contenuto del file da un file locale. |
| Remove-AzDataLakeStoreItem | Remove-AzDataLakeGen2Item | |
| Set-AzDataLakeStoreItemOwner Set-AzDataLakeStoreItemPermission Set-AzDataLakeStoreItemAcl |
Update-AzDataLakeGen2Item | Il cmdlet Update-AzDataLakeGen2Item aggiorna solo un singolo elemento e non in modo ricorsivo. Se si vuole aggiornare in modo ricorsivo, elencare gli elementi usando il cmdlet Get-AzDataLakeStoreChildItem, quindi eseguire la pipeline al cmdlet Update-AzDataLakeGen2Item. |
| Test-AzDataLakeStoreItem | Get-AzDataLakeGen2Item | Il cmdlet Get-AzDataLakeGen2Item segnala un errore se l'elemento non esiste. |