Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 Armazenamento do Azure Data Lake.
Referência | Mapeamento Gen1 para 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 está instalado. Para obter mais informações, consulte Baixar o .NET Framework.
Versão
5.1do PowerShell ou superior.
Instalar o módulo do PowerShell
Verifique se a versão do PowerShell instalada é
5.1ou 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 -ForcePara obter mais informações sobre como instalar módulos do PowerShell, consulte Instalar o módulo do Azure PowerShell
Ligue-se à conta
Abra uma janela de comando do Windows PowerShell e, em seguida, inicie sessão na sua subscrição do Azure com o comando Connect-AzAccount e siga as instruções no ecrã.
Connect-AzAccountSe a sua identidade estiver associada a mais do que uma subscrição e não lhe for pedido para selecionar a subscrição, defina a sua subscrição ativa para a subscrição da conta de armazenamento em que pretende operar. Neste exemplo, substitua o valor do marcador
<subscription-id>pelo ID da sua subscrição.Select-AzSubscription -SubscriptionId <subscription-id>Obtenha o contexto da conta de armazenamento.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
Criar um contentor
Um contêiner atua como um sistema de arquivos para seus arquivos. Você pode criar um usando o cmdlet New-AzStorageContainer .
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 cmdlet New-AzDataLakeGen2Item .
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 cmdlet Get-AzDataLakeGen2Item e 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 cmdlet Move-AzDataLakeGen2Item .
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
Utilize o parâmetro -Force se quiser substituir sem aviso.
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 cmdlet Remove-AzDataLakeGen2Item .
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 cmdlet Get-AzDataLakeGen2ItemContent .
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 cmdlet Get-AzDataLakeGen2ChildItem . 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, Permissions, Group e Owner propriedades 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 cmdlet New-AzDataLakeGen2Item .
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 cmdlet Get-AzDataLakeGen2Item e 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 cmdlet Remove-AzDataLakeGen2Item .
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 do Data Lake Storage Gen1 correspondem aos cmdlets do Data Lake Storage.
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 do Data Lake Storage | Notas |
|---|---|---|
| Get-AzDataLakeStoreChildItem | Get-AzDataLakeGen2ChildItem | Por padrão, o cmdlet Get-AzDataLakeGen2ChildItem lista apenas os itens de primeiro nível. O parâmetro -Recurse lista elementos filho recursivamente. |
| Get-AzDataLakeStoreItem Get-AzDataLakeStoreItemAclEntry Get-AzDataLakeStoreItemOwner PermissãoGet-AzDataLakeStoreItem |
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 ficheiro a partir de um ficheiro local. |
| Remover-AzDataLakeStoreItem | Remover-AzDataLakeGen2Item | |
| Set-AzDataLakeStoreItemOwner Set-AzDataLakeStoreItemPermission (definir permissão de item do Armazenamento de Dados do Azure) 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. |