Usar o PowerShell para gerenciar diretórios e arquivos no Azure Data Lake Storage Gen2
Este artigo mostra como usar o PowerShell para criar e gerenciar diretórios e arquivos em contas de armazenamento que têm um namespace hierárquico.
Para saber como obter, definir e atualizar as listas de controle de acesso (ACL) de diretórios e arquivos, consulte Usar o PowerShell para gerenciar ACLs no Azure Data Lake Storage Gen2.
Referência | Gen1 ao mapeamento | Gen2 Enviar comentários
Pré-requisitos
Uma subscrição do Azure. Para obter mais informações, consulte Obter avaliação gratuita do Azure.
Uma conta de armazenamento com namespace hierárquico habilitado. Siga estas instruções para criar um.
O .NET Framework é 4.7.2 ou superior instalado. Para obter mais informações, consulte Baixar o .NET Framework.
5.1
Versão do PowerShell ou superior.
Instalar o módulo do PowerShell
Verifique se a versão do PowerShell instalada é
5.1
ou superior usando o comando a seguir.echo $PSVersionTable.PSVersion.ToString()
Para atualizar sua versão do PowerShell, consulte Atualizando o Windows PowerShell existente
Instale o módulo Az.Storage .
Install-Module Az.Storage -Repository PSGallery -Force
Para obter mais informações sobre como instalar módulos do PowerShell, consulte Instalar o módulo do Azure PowerShell
Conecte-se à conta
Escolha como deseja que seus comandos obtenham autorização para a conta de armazenamento.
Opção 1: Obter autorização usando o Microsoft Entra ID
Com essa abordagem, o sistema garante que sua conta de usuário tenha as atribuições apropriadas de controle de acesso baseado em função (Azure RBAC) e permissões de ACL do Azure.
Abra uma janela de comando do Windows PowerShell e, em seguida, inicie sessão na sua subscrição do Azure com o
Connect-AzAccount
comando e siga as instruções no ecrã.Connect-AzAccount
Se sua identidade estiver associada a mais de uma assinatura, defina sua assinatura ativa como assinatura da conta de armazenamento na qual você deseja criar e gerenciar diretórios. Neste exemplo, substitua o valor do
<subscription-id>
espaço reservado pela ID da sua assinatura.Select-AzSubscription -SubscriptionId <subscription-id>
Obtenha o contexto da conta de armazenamento.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
Opção 2: Obter autorização usando a chave da conta de armazenamento
Com essa abordagem, o sistema não verifica as permissões de RBAC ou ACL do Azure. Obtenha o contexto da conta de armazenamento usando uma chave de conta.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -StorageAccountKey '<storage-account-key>'
Criar um contentor
Um contêiner atua como um sistema de arquivos para seus arquivos. Você pode criar um usando o New-AzStorageContainer
cmdlet.
Este exemplo cria um contêiner chamado my-file-system
.
$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName
Criar um diretório
Crie uma referência de diretório usando o New-AzDataLakeGen2Item
cmdlet.
Este exemplo adiciona um diretório nomeado my-directory
a um contêiner.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory
Este exemplo adiciona o mesmo diretório, mas também define as permissões, umask, valores de propriedade e valores de metadados.
$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx--- -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata @{"tag1" = "value1"; "tag2" = "value2" }
Mostrar propriedades do diretório
Este exemplo obtém um diretório usando o Get-AzDataLakeGen2Item
cmdlet e, em seguida, imprime valores de propriedade no 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
Para obter o diretório raiz do contêiner, omita o -Path
parâmetro.
Renomear ou mover um diretório
Renomeie ou mova um diretório usando o Move-AzDataLakeGen2Item
cmdlet.
Este exemplo renomeia um diretório do nome my-directory
para o 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
Use o -Force
parâmetro se quiser substituir sem prompts.
Este exemplo move um diretório nomeado my-directory
para um subdiretório de my-directory-2
named 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
Eliminar um diretório
Exclua um diretório usando o Remove-AzDataLakeGen2Item
cmdlet.
Este exemplo exclui um diretório chamado my-directory
.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
Você pode usar o -Force
parâmetro para remover o arquivo sem um prompt.
Download de um diretório
Baixe um arquivo de um diretório usando o Get-AzDataLakeGen2ItemContent
cmdlet.
Este exemplo baixa um arquivo nomeado upload.txt
de um diretório chamado my-directory
.
$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath
Listar conteúdo do diretório
Liste o conteúdo de um diretório usando o Get-AzDataLakeGen2ChildItem
cmdlet. Você pode usar o parâmetro -OutputUserPrincipalName
opcional para obter o nome (em vez do ID do objeto) dos usuários.
Este exemplo lista o conteúdo de um diretório chamado my-directory
.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName
O exemplo a seguir lista as ACL
propriedades , Permissions
, Group
, e Owner
de cada item no diretório. O -FetchProperty
parâmetro é necessário para obter valores para a ACL
propriedade.
$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
Para listar o conteúdo do diretório raiz do contêiner, omita o -Path
parâmetro.
Carregar um ficheiro para um diretório
Carregue um arquivo em um diretório usando o New-AzDataLakeGen2Item
cmdlet.
Este exemplo carrega um arquivo nomeado upload.txt
para um diretório chamado 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
Este exemplo carrega o mesmo arquivo, mas define as permissões, umask, valores de propriedade e valores de metadados do arquivo de destino. Este exemplo também imprime esses valores no 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
Para carregar um arquivo no diretório raiz do contêiner, omita o -Path
parâmetro.
Mostrar propriedades do ficheiro
Este exemplo obtém um arquivo usando o Get-AzDataLakeGen2Item
cmdlet e, em seguida, imprime valores de propriedade no 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
Eliminar um ficheiro
Exclua um arquivo usando o Remove-AzDataLakeGen2Item
cmdlet.
Este exemplo exclui um arquivo chamado upload.txt
.
$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $filepath
Você pode usar o -Force
parâmetro para remover o arquivo sem um prompt.
Mapeamento de Gen1 para Gen2
A tabela a seguir mostra como os cmdlets usados para o Data Lake Storage Gen1 são mapeados para os cmdlets do Data Lake Storage Gen2.
Nota
O Azure Data Lake Storage Gen1 foi desativado. Veja o anúncio da aposentadoria aqui. Os recursos do Data Lake Storage Gen1 não estão mais acessíveis. Se necessitar de assistência especial, por favor contacte-nos.
Cmdlet Data Lake Storage Gen1 | Cmdlet Data Lake Storage Gen2 | Notas |
---|---|---|
Get-AzDataLakeStoreChildItem | Get-AzDataLakeGen2ChildItem | Por padrão, o cmdlet Get-AzDataLakeGen2ChildItem lista apenas os itens filho de primeiro nível. O parâmetro -Recurse lista itens filho recursivamente. |
Get-AzDataLakeStoreItem Get-AzDataLakeStoreItemAclEntry Get-AzDataLakeStoreItemOwner Get-AzDataLakeStoreItemPermission |
Get-AzDataLakeGen2Item | Os itens de saída do cmdlet Get-AzDataLakeGen2Item têm estas propriedades: Acl, Owner, Group, Permission. |
Get-AzDataLakeStoreItemContent | Get-AzDataLakeGen2FileContent | O cmdlet Get-AzDataLakeGen2FileContent baixa o conteúdo do arquivo para o arquivo local. |
Move-AzDataLakeStoreItem | Move-AzDataLakeGen2Item | |
New-AzDataLakeStoreItem | New-AzDataLakeGen2Item | Este cmdlet carrega o novo conteúdo do arquivo de um arquivo local. |
Remover-AzDataLakeStoreItem | Remover-AzDataLakeGen2Item | |
Set-AzDataLakeStoreItemOwner Set-AzDataLakeStoreItemPermission Set-AzDataLakeStoreItemAcl |
Update-AzDataLakeGen2Item | O cmdlet Update-AzDataLakeGen2Item atualiza apenas um único item, e não recursivamente. Se você quiser atualizar recursivamente, liste itens usando o cmdlet Get-AzDataLakeStoreChildItem e, em seguida, faça o pipeline para o cmdlet Update-AzDataLakeGen2Item. |
Test-AzDataLakeStoreItem | Get-AzDataLakeGen2Item | O cmdlet Get-AzDataLakeGen2Item relata um erro se o item não existir. |