Uso de PowerShell para administrar directorios y archivos en Azure Data Lake Storage
En este artículo se explica cómo usar PowerShell para crear y administrar directorios y archivos en cuentas de almacenamiento que tengan habilitado un espacio de nombres jerárquico.
Para obtener información sobre cómo obtener, establecer y actualizar las listas de control de acceso (ACL) de directorios y archivos, consulte Uso de PowerShell para administrar listas de control de acceso en Azure Data Lake Storage.
Referencia | Asignación de Gen1 a Gen2 | Envíenos su comentarios
Requisitos previos
Suscripción a Azure. Para obtener más información, vea Obtención de una evaluación gratuita de Azure.
Una cuenta de almacenamiento que tenga habilitado un espacio de nombres jerárquico. Siga estas instrucciones para crear uno.
Debe tener instalada la versión de .NET Framework 4.7.2 o superior. Para obtener más información, vea Descarga de .NET Framework.
La versión de PowerShell
5.1
o posterior.
Instalación del módulo de PowerShell
Use el siguiente comando para comprobar que la versión de PowerShell que ha instalado es
5.1
o posterior.echo $PSVersionTable.PSVersion.ToString()
Para actualizar la versión de PowerShell, vea Actualización de Windows PowerShell existente.
Instale el módulo Az.Storage.
Install-Module Az.Storage -Repository PSGallery -Force
Para más información sobre cómo instalar módulos de PowerShell, vea Instalación del módulo de Azure PowerShell.
Conexión con la cuenta
Abra una ventana de comandos de Windows PowerShell e inicie sesión en la suscripción de Azure con el comando Connect-AzAccount y siga las instrucciones en pantalla.
Connect-AzAccount
Si su identidad está asociada a más de una suscripción y no se le pedirá que seleccione la suscripción, establezca la suscripción activa en la suscripción de la cuenta de almacenamiento en la que desea operar. En este ejemplo, reemplace el valor de marcador de posición
<subscription-id>
por el identificador de la suscripción.Select-AzSubscription -SubscriptionId <subscription-id>
Obtenga el contexto de la cuenta de almacenamiento.
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
Creación de un contenedor
Un contenedor actúa como sistema de archivos para sus archivos. Puede crear uno mediante el cmdlet New-AzStorageContainer.
En este ejemplo se crea un contenedor denominado my-file-system
.
$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName
Creación de un directorio
Cree una referencia de directorio mediante el cmdlet New-AzDataLakeGen2Item.
En este ejemplo se agrega un directorio denominado my-directory
a un contenedor.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory
En este ejemplo se agrega el mismo directorio, pero también se establecen los permisos, la máscara de permisos, los valores de propiedad y los valores de metadatos.
$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx--- -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata @{"tag1" = "value1"; "tag2" = "value2" }
Visualización de las propiedades de directorio
En este ejemplo se obtiene un directorio mediante el cmdlet Get-AzDataLakeGen2Item y, a continuación, se imprimen los valores de propiedad en la consola.
$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 obtener el directorio raíz del contenedor, omita el parámetro -Path
.
Cambio de nombre o traslado de un directorio
Cambie el nombre o mueva un directorio mediante el cmdlet Move-AzDataLakeGen2Item.
En este ejemplo se cambia el nombre de un subdirectorio de my-directory
a 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 el parámetro -Force
si desea sobrescribir sin preguntar.
En este ejemplo se mueve un directorio denominado my-directory
a un subdirectorio de my-directory-2
denominado 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
Eliminación de un directorio
Elimine un directorio mediante el cmdlet Remove-AzDataLakeGen2Item.
En este ejemplo se elimina un directorio denominado my-directory
.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
Puede usar el parámetro -Force
para quitar el archivo sin preguntar.
Descarga de un directorio
Descargue un archivo de un directorio mediante el cmdletGet-AzDataLakeGen2ItemContent.
En este ejemplo se descarga un archivo denominado upload.txt
de un directorio denominado my-directory
.
$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath
Lista del contenido del directorio
Enumere el contenido de un directorio mediante el cmdletGet-AzDataLakeGen2ChildItem. Puede usar el parámetro opcional -OutputUserPrincipalName
para obtener el nombre (en lugar del identificador de objeto) de los usuarios.
En este ejemplo se muestra el contenido de un directorio denominado my-directory
.
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName
En el ejemplo siguiente se enumeran las propiedades ACL
, Permissions
, Group
y Owner
de cada elemento del directorio. Se necesita el parámetro -FetchProperty
para obtener los valores de la propiedad ACL
.
$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 mostrar el contenido del directorio raíz del contenedor, omita el parámetro -Path
.
Carga de un archivo en un directorio
Cargue un archivo en un directorio mediante el cmdlet New-AzDataLakeGen2Item.
En este ejemplo se carga un archivo denominado upload.txt
en un directorio denominado 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
En este ejemplo se carga el mismo archivo, pero después se establecen los permisos, la máscara de permisos, los valores de propiedad y los valores de metadatos del archivo de destino. En este ejemplo también se imprimen estos valores en la consola.
$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 cargar un archivo en el directorio raíz del contenedor, omita el parámetro -Path
.
Visualización de las propiedades del archivo
En este ejemplo se obtiene un archivo mediante el cmdletGet-AzDataLakeGen2Item y, a continuación, se imprimen los valores de propiedad en la consola.
$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 un archivo
Elimine un archivo mediante el cmdlet Remove-AzDataLakeGen2Item.
En este ejemplo se elimina un archivo denominado upload.txt
.
$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $filepath
Puede usar el parámetro -Force
para quitar el archivo sin preguntar.
Asignación de Gen1 a Gen2
En la siguiente tabla se refleja la asignación de cmdlets usados con Data Lake Storage Gen1 a cmdlets de Data Lake Storage.
Nota:
Azure Data Lake Storage Gen1 ahora se ha retirado. Consulte el anuncio de retirada aquí. Ya no se puede acceder a los recursos de Data Lake Storage Gen1. Si necesita asistencia especial, por favor póngase en contacto con nosotros.
Cmdlet de Data Lake Storage Gen1 | Cmdlet de Data Lake Storage | Notas |
---|---|---|
Get-AzDataLakeStoreChildItem | Get-AzDataLakeGen2ChildItem | De forma predeterminada, el cmdlet Get-AzDataLakeGen2ChildItem solo muestra los elementos secundarios de primer nivel. El parámetro -Recurse muestra elementos secundarios de forma recursiva. |
Get-AzDataLakeStoreItem Get-AzDataLakeStoreItemAclEntry Get-AzDataLakeStoreItemOwner Get-AzDataLakeStoreItemPermission |
Get-AzDataLakeGen2Item | Los elementos de salida del cmdlet Get-AzDataLakeGen2Item tienen estas propiedades: Acl, Owner, Group y Permission. |
Get-AzDataLakeStoreItemContent | Get-AzDataLakeGen2FileContent | El cmdlet Get-AzDataLakeGen2FileContent descarga el contenido del archivo en el archivo local. |
Move-AzDataLakeStoreItem | Move-AzDataLakeGen2Item | |
New-AzDataLakeStoreItem | New-AzDataLakeGen2Item | Este cmdlet carga el contenido del archivo nuevo desde un archivo local. |
Remove-AzDataLakeStoreItem | Remove-AzDataLakeGen2Item | |
Set-AzDataLakeStoreItemOwner Set-AzDataLakeStoreItemPermission Set-AzDataLakeStoreItemAcl |
Update-AzDataLakeGen2Item | El cmdlet Update-AzDataLakeGen2Item actualiza solo un único elemento, y no de forma recursiva. Si desea actualizar de forma recursiva, muestre los elementos mediante el cmdlet Get-AzDataLakeStoreChildItem y, a continuación, canalice al cmdlet Update-AzDataLakeGen2Item. |
Test-AzDataLakeStoreItem | Get-AzDataLakeGen2Item | El cmdlet Get-AzDataLakeGen2Item notifica un error si el elemento no existe. |