Get-ChildItem

Obtiene los elementos y elementos secundarios de una o varias ubicaciones especificadas.

Syntax

Get-ChildItem
   [[-Path] <string[]>]
   [[-Filter] <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Recurse]
   [-Depth <uint32>]
   [-Force]
   [-Name]
   [-Attributes <FlagsExpression[FileAttributes]>]
   [-FollowSymlink]
   [-Directory]
   [-File]
   [-Hidden]
   [-ReadOnly]
   [-System]
   [<CommonParameters>]
Get-ChildItem
   [[-Filter] <string>]
   -LiteralPath <string[]>
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Recurse]
   [-Depth <uint32>]
   [-Force]
   [-Name]
   [-Attributes <FlagsExpression[FileAttributes]>]
   [-FollowSymlink]
   [-Directory]
   [-File]
   [-Hidden]
   [-ReadOnly]
   [-System]
   [<CommonParameters>]

Description

El Get-ChildItem cmdlet obtiene los elementos de una o varias ubicaciones especificadas. Si el elemento es un contenedor, obtiene los elementos que se encuentran dentro del contenedor, denominados elementos secundarios. Puede usar el parámetro Recurse para obtener elementos de todos los contenedores secundarios y usar el parámetro Depth para limitar el número de niveles a recurse.

Get-ChildItem no muestra directorios vacíos. Cuando un Get-ChildItem comando incluye los parámetros Depth o Recurse , los directorios vacíos no se incluyen en la salida.

Los proveedores de PowerShell exponen Get-ChildItem las ubicaciones. Una ubicación puede ser un directorio del sistema de archivos, un subárbol del Registro o un almacén de certificados. Para obtener más información, consulte about_Providers.

Ejemplos

Ejemplo 1: Obtener elementos secundarios de un directorio del sistema de archivos

En este ejemplo se obtienen los elementos secundarios de un directorio del sistema de archivos. Se muestran los nombres de nombre de archivo y subdirectorio. En el caso de las ubicaciones vacías, el comando no devuelve ninguna salida y vuelve al símbolo del sistema de PowerShell.

El Get-ChildItem cmdlet usa el parámetro Path para especificar el directorio C:\Test. Get-ChildItem muestra los archivos y directorios en la consola de PowerShell.

Get-ChildItem -Path C:\Test

Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/15/2019     08:29                Logs
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-a----         2/1/2019     08:43            183 CreateTestFile.ps1
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt

De forma predeterminada Get-ChildItem , se muestra el modo (atributos), LastWriteTime, el tamaño de archivo (Length) y el nombre del elemento. Las letras de la propiedad Mode se pueden interpretar de la siguiente manera:

  • l (vínculo)
  • d (directorio)
  • a (archivo)
  • r (solo lectura)
  • h (oculto)
  • s (sistema).

Para obtener más información sobre las marcas de modo, consulte about_Filesystem_Provider.

Ejemplo 2: Obtener nombres de elementos secundarios en un directorio

En este ejemplo solo se enumeran los nombres de los elementos de un directorio.

El Get-ChildItem cmdlet usa el parámetro Path para especificar el directorio C:\Test. El parámetro Name devuelve solo los nombres de archivo o directorio de la ruta de acceso especificada.

Get-ChildItem -Path C:\Test -Name

Logs
anotherfile.txt
Command.txt
CreateTestFile.ps1
ReadOnlyFile.txt

Ejemplo 3: Obtener elementos secundarios en el directorio y subdirectorios actuales

En este ejemplo se muestran .txt archivos que se encuentran en el directorio actual y sus subdirectorios.

Get-ChildItem -Path C:\Test\*.txt -Recurse -Force

Directory: C:\Test\Logs\Adirectory

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/12/2019     16:16             20 Afile4.txt
-a-h--        2/12/2019     15:52             22 hiddenfile.txt
-a----        2/13/2019     13:26             20 LogFile4.txt

    Directory: C:\Test\Logs\Backup

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/12/2019     16:16             20 ATextFile.txt
-a----        2/12/2019     15:50             20 LogFile3.txt

    Directory: C:\Test\Logs

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/12/2019     16:16             20 Afile.txt
-a-h--        2/12/2019     15:52             22 hiddenfile.txt
-a----        2/13/2019     13:26             20 LogFile1.txt

    Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-a-h--        2/12/2019     15:52             22 hiddenfile.txt
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt

El Get-ChildItem cmdlet usa el parámetro Path para especificar C:\Test\*.txt. La ruta de acceso usa el carácter comodín asterisco (*) para especificar todos los archivos con la extensión .txtde nombre de archivo . El parámetro Recurse busca en el directorio Path sus subdirectorios, como se muestra en los encabezados Directory: . El parámetro Force muestra archivos ocultos, como hiddenfile.txt que tienen un modo h.

Ejemplo 4: Obtener elementos secundarios mediante el parámetro Include

En este ejemplo Get-ChildItem se usa el parámetro Include para buscar elementos específicos del directorio especificado por el parámetro Path .

# When using the -Include parameter, if you don't include an asterisk in the path
# the command returns no output.
Get-ChildItem -Path C:\Test\ -Include *.txt



Get-ChildItem -Path C:\Test\* -Include *.txt

Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt

El Get-ChildItem cmdlet usa el parámetro Path para especificar el directorio C:\Test. El parámetro Path incluye un carácter comodín de asterisco final (*) para especificar el contenido del directorio. El parámetro Include usa un carácter comodín asterisco (*) para especificar todos los archivos con la extensión de nombre de archivo .txt.

Cuando se usa el parámetro Include , el parámetro Path necesita un carácter comodín de asterisco final (*) para especificar el contenido del directorio. Por ejemplo: -Path C:\Test\*.

  • Si el parámetro Recurse se agrega al comando , el asterisco final (*) del parámetro Path es opcional. El parámetro Recurse obtiene elementos del directorio Path y sus subdirectorios. Por ejemplo: -Path C:\Test\ -Recurse -Include *.txt
  • Si no se incluye un asterisco final (*) en el parámetro Path , el comando no devuelve ninguna salida y vuelve al símbolo del sistema de PowerShell. Por ejemplo, -Path C:\Test\.

Ejemplo 5: Obtener elementos secundarios mediante el parámetro Exclude

La salida del ejemplo muestra el contenido del directorio C:\Test\Logs. La salida es una referencia para los demás comandos que usan los parámetros Exclude y Recurse .

Get-ChildItem -Path C:\Test\Logs

Directory: C:\Test\Logs

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/15/2019     13:21                Adirectory
d-----        2/15/2019     08:28                AnEmptyDirectory
d-----        2/15/2019     13:21                Backup
-a----        2/12/2019     16:16             20 Afile.txt
-a----        2/13/2019     13:26             20 LogFile1.txt
-a----        2/12/2019     16:24             23 systemlog1.log

Get-ChildItem -Path C:\Test\Logs\* -Exclude A*

Directory: C:\Test\Logs

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/15/2019     13:21                Backup
-a----        2/13/2019     13:26             20 LogFile1.txt
-a----        2/12/2019     16:24             23 systemlog1.log

El Get-ChildItem cmdlet usa el parámetro Path para especificar el directorio C:\Test\Logs. El parámetro Exclude usa el comodín asterisco (*) para especificar los archivos o directorios que comienzan porA o se excluyen de la salida.

Cuando se usa el parámetro Exclude , un asterisco final (*) en el parámetro Path es opcional. Por ejemplo, -Path C:\Test\Logs o -Path C:\Test\Logs\*.

  • Si no se incluye un asterisco final (*) en el parámetro Path , se muestra el contenido del parámetro Path . Las excepciones son nombres de archivo o subdirectorios que coinciden con el valor del parámetro Exclude .
  • Si se incluye un asterisco final (*) en el parámetro Path , el comando se repite en los subdirectorios del parámetro Path . Las excepciones son nombres de archivo o subdirectorios que coinciden con el valor del parámetro Exclude .
  • Si el parámetro Recurse se agrega al comando , la salida de recursividad es la misma si el parámetro Path incluye o no un asterisco final (*).

Ejemplo 6: Obtención de las claves del Registro de un subárbol del Registro

En este ejemplo se obtienen todas las claves del Registro de HKEY_LOCAL_MACHINE\HARDWARE.

Get-ChildItem usa el parámetro Path para especificar la clave HKLM:\HARDWAREdel Registro . La ruta de acceso de Hive y el nivel superior de las claves del Registro se muestran en la consola de PowerShell.

Para obtener más información, consulte about_Registry_Provider.

Get-ChildItem -Path HKLM:\HARDWARE

Hive: HKEY_LOCAL_MACHINE\HARDWARE

Name             Property
----             --------
ACPI
DESCRIPTION
DEVICEMAP
RESOURCEMAP
UEFI

Get-ChildItem -Path HKLM:\HARDWARE -Exclude D*

Hive: HKEY_LOCAL_MACHINE\HARDWARE

Name                           Property
----                           --------
ACPI
RESOURCEMAP

El primer comando muestra el contenido de la clave del HKLM:\HARDWARE Registro. El parámetro Exclude indica Get-ChildItem que no devuelva ninguna subclave que comience por D*. Actualmente, el parámetro Exclude solo funciona en subclaves, no en propiedades de elemento.

Ejemplo 7: Obtención de todos los certificados con la entidad de firma de código

En este ejemplo se obtiene cada certificado de la unidad Cert: de PowerShell que tiene entidad de firma de código.

El Get-ChildItem cmdlet usa el parámetro Path para especificar el proveedor Cert: . El parámetro Recurse busca en el directorio especificado por Path y sus subdirectorios. El parámetro CodeSigningCert solo obtiene certificados que tienen entidad de firma de código.

Get-ChildItem -Path Cert:\* -Recurse -CodeSigningCert

Para obtener más información sobre el proveedor de certificados y la unidad Cert: , consulte about_Certificate_Provider.

Ejemplo 8: Obtener elementos mediante el parámetro Depth

En este ejemplo se muestran los elementos de un directorio y sus subdirectorios. El parámetro Depth determina el número de niveles de subdirectorio que se van a incluir en la recursividad. Los directorios vacíos se excluyen de la salida.

Get-ChildItem -Path C:\Parent -Depth 2

Directory: C:\Parent

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/14/2019     10:24                SubDir_Level1
-a----        2/13/2019     08:55             26 file.txt

    Directory: C:\Parent\SubDir_Level1

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/14/2019     10:24                SubDir_Level2
-a----        2/13/2019     08:55             26 file.txt

    Directory: C:\Parent\SubDir_Level1\SubDir_Level2

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/14/2019     10:22                SubDir_Level3
-a----        2/13/2019     08:55             26 file.txt

El Get-ChildItem cmdlet usa el parámetro Path para especificar C:\Parent. El parámetro Depth especifica dos niveles de recursividad. Get-ChildItem muestra el contenido del directorio especificado por el parámetro Path y los dos niveles de subdirectorios.

Ejemplo 9: Obtención de información de vínculos duros

En PowerShell 6.2, se agregó una vista alternativa para obtener información de vínculo duro.

Get-ChildItem -Path C:\PathContainingHardLink | Format-Table -View childrenWithHardLink

Ejemplo 10: salida para sistemas operativos que no son Windows

En PowerShell 7.1 en sistemas Unix, Get-ChildItem proporciona una salida similar a Unix:

PS> Get-ChildItem /etc/r*

Directory: /etc

UnixMode   User Group    LastWriteTime Size Name
--------   ---- -----    ------------- ---- ----
drwxr-xr-x root wheel  9/30/2019 19:19  128 racoon
-rw-r--r-- root wheel  9/26/2019 18:20 1560 rc.common
-rw-r--r-- root wheel  7/31/2017 17:30 1560 rc.common~previous
-rw-r--r-- root wheel  9/27/2019 20:34 5264 rc.netboot
lrwxr-xr-x root wheel  11/8/2019 15:35   22 resolv.conf -> /private/var/run/resolv.conf
-rw-r--r-- root wheel 10/23/2019 17:41    0 rmtab
-rw-r--r-- root wheel 10/23/2019 17:41 1735 rpc
-rw-r--r-- root wheel  7/25/2017 18:37 1735 rpc~previous
-rw-r--r-- root wheel 10/23/2019 18:42  891 rtadvd.conf
-rw-r--r-- root wheel  8/24/2017 21:54  891 rtadvd.conf~previous

Las nuevas propiedades que ahora forman parte de la salida son:

  • UnixMode es los permisos de archivo representados en un sistema Unix.
  • El usuario es el propietario del archivo
  • El grupo es el propietario del grupo
  • El tamaño es el tamaño del archivo o directorio tal y como se representa en un sistema Unix.

Nota

Esta característica se movió de la rama experimental a la estándar en PowerShell 7.1.

Ejemplo 11: Obtención del destino del vínculo para un punto de unión

El dir comando del Shell de comandos de Windows muestra la ubicación de destino de un punto de unión del sistema de archivos. En PowerShell, esta información está disponible en la propiedad LinkTarget del objeto filesystem devuelto por Get-ChildItem y se muestra en la salida predeterminada.

PS D:\> New-Item -ItemType Junction -Name tmp -Target $env:TEMP
PS D:\> Get-ChildItem | select name,LinkTarget

Name     LinkTarget
----     ----------
tmp      C:\Users\user1\AppData\Local\Temp

PS D:\> Get-ChildItem

    Directory: D:\

Mode          LastWriteTime    Length Name
----          -------------    ------ ----
l----   12/16/2021  9:29 AM           tmp -> C:\Users\user1\AppData\Local\Temp

Parámetros

-Attributes

Obtiene los archivos y las carpetas con los atributos especificados. Este parámetro es compatible con todos los atributos y permite especificar combinaciones complejas de atributos.

Por ejemplo, para obtener archivos que no son del sistema (no directorios) que están comprimidos o cifrados, escriba:

Get-ChildItem -Attributes !Directory+!System+Encrypted, !Directory+!System+Compressed

Para buscar archivos y carpetas con atributos usados habitualmente, use el parámetro Attributes . O bien, los parámetros Directory, File, Hidden, ReadOnly y System.

El parámetro Attributes admite las siguientes propiedades:

  • Archivar
  • Compressed
  • Dispositivo
  • Directorio
  • Cifrado
  • Oculto
  • IntegrityStream
  • Normal
  • NoScrubData
  • NotContentIndexed
  • Sin conexión
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • Sistema
  • Temporales

Para obtener una descripción de estos atributos, consulte La enumeración FileAttributes.

Para combinar atributos, use los operadores siguientes:

  • ! (NOT)
  • + (AND)
  • , (OR)

No use espacios entre un operador y su atributo. Los espacios se aceptan después de comas.

Para atributos comunes, use las abreviaturas siguientes:

  • D (Directorio)
  • H (Oculto)
  • R (Solo lectura)
  • S (Sistema)
Type:FlagsExpression<T>[FileAttributes]
Accepted values:Archive, Compressed, Device, Directory, Encrypted, Hidden, IntegrityStream, Normal, NoScrubData, NotContentIndexed, Offline, ReadOnly, ReparsePoint, SparseFile, System, Temporary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Depth

Este parámetro se agregó en PowerShell 5.0 y le permite controlar la profundidad de recursividad. De forma predeterminada, Get-ChildItem muestra el contenido del directorio primario. El parámetro Depth determina el número de niveles de subdirectorio que se incluyen en la recursividad y muestra el contenido.

Por ejemplo, Depth 2 incluye el directorio del parámetro Path , el primer nivel de subdirectorios y el segundo nivel de subdirectorios. De forma predeterminada, los nombres de directorio y los nombres de archivo se incluyen en la salida.

Nota

En un equipo Windows desde PowerShell o cmd.exe, puede mostrar una vista gráfica de una estructura de directorios con el comando tree.com .

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Directory

Para obtener una lista de directorios, use el parámetro Directory o el parámetro Attributes con la propiedad Directory . Puede usar el parámetro Recurse con Directory.

Type:SwitchParameter
Aliases:ad, d
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

Especifica una matriz de uno o varios patrones de cadena que se van a buscar coincidencias a medida que el cmdlet obtiene elementos secundarios. Cualquier elemento coincidente se excluye de la salida. Escriba un elemento o patrón de ruta de acceso, como *.txt o A*. Se aceptan caracteres comodín.

Un asterisco final (*) en el parámetro Path es opcional. Por ejemplo, -Path C:\Test\Logs o -Path C:\Test\Logs\*. Si se incluye un asterisco final (*), el comando se repite en los subdirectorios del parámetro Path . Sin el asterisco (*), se muestra el contenido del parámetro Path . Se incluyen más detalles en el ejemplo 5 y en la sección Notas.

Los parámetros Include y Exclude se pueden usar juntos. Sin embargo, las exclusiones se aplican después de las inclusiones, lo que puede afectar a la salida final.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-File

Para obtener una lista de archivos, use el parámetro File . Puede usar el parámetro Recurse con File.

Type:SwitchParameter
Aliases:af
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Filter

Especifica un filtro para calificar el parámetro Path . El proveedor FileSystem es el único proveedor de PowerShell instalado que admite filtros. Los filtros son más eficaces que otros parámetros. El proveedor aplica el filtro cuando el cmdlet obtiene los objetos en lugar de que PowerShell filtre los objetos una vez recuperados. La cadena de filtro se pasa a la API de .NET para enumerar archivos. La API solo admite * caracteres comodín y ? .

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

De forma predeterminada, el Get-ChildItem cmdlet muestra vínculos simbólicos a directorios encontrados durante la recursividad, pero no se repite en ellos. Use el parámetro FollowSymlink para buscar los directorios que tienen como destino esos vínculos simbólicos. FollowSymlink es un parámetro dinámico y solo se admite en el proveedor FileSystem.

Este parámetro se introdujo en PowerShell 6.0.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Permite al cmdlet obtener elementos a los que el usuario no puede acceder de otro modo, como archivos ocultos o del sistema. El parámetro Force no invalida las restricciones de seguridad. La implementación varía en función del proveedor. Para obtener más información, consulte about_Providers.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Hidden

Para obtener solo elementos ocultos, use el parámetro Hidden o el parámetro Attributes con la propiedad Hidden . De forma predeterminada, Get-ChildItem no muestra elementos ocultos. Use el parámetro Force para obtener elementos ocultos.

Type:SwitchParameter
Aliases:ah, h
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

Especifica una matriz de uno o varios patrones de cadena que se van a buscar coincidencias a medida que el cmdlet obtiene elementos secundarios. Cualquier elemento coincidente se incluye en la salida. Escriba un elemento o patrón de ruta de acceso, como "*.txt". Se permite el uso de caracteres comodín. El parámetro Include solo es efectivo cuando el comando incluye el contenido de un elemento, como C:\Windows\*, donde el carácter comodín especifica el contenido del C:\Windows directorio.

Los parámetros Include y Exclude se pueden usar juntos. Sin embargo, las exclusiones se aplican después de las inclusiones, lo que puede afectar a la salida final.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

Especifica una ruta de acceso a una o varias ubicaciones. El valor de LiteralPath se usa exactamente como se escribe. Ninguno de los caracteres se interpreta como caracteres comodín. Si la ruta de acceso contiene caracteres de escape, escríbalos entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.

Para obtener más información, consulte about_Quoting_Rules.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

Obtiene solo los nombres de los elementos de la ubicación. La salida es un objeto de cadena que se puede enviar por la canalización a otros comandos. Se permiten los caracteres comodín.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Path

Especifica una ruta de acceso a una o varias ubicaciones. Se aceptan caracteres comodín. La ubicación predeterminada es el directorio actual (.).

Type:String[]
Position:0
Default value:Current directory
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-ReadOnly

Para obtener solo elementos de solo lectura, use el parámetro ReadOnly o la propiedad ReadOnly del parámetro Attributes.

Type:SwitchParameter
Aliases:ar
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Recurse

Obtiene los elementos que se encuentren en las ubicaciones especificadas y en todos los elementos secundarios de dichas ubicaciones.

Type:SwitchParameter
Aliases:s
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-System

Obtiene solo los archivos y directorios del sistema. Para obtener solo archivos y carpetas del sistema, use el parámetro System o la propiedad System parameters.

Type:SwitchParameter
Aliases:as
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

String

Puede canalizar una cadena que contenga una ruta de acceso a Get-ChildItem.

Salidas

Object

El tipo de objeto que Get-ChildItem devuelve viene determinado por los objetos de la ruta de acceso de la unidad del proveedor.

String

Si usa el parámetro Name , Get-ChildItem devuelve los nombres de objeto como cadenas.

Notas

  • Get-ChildItem se puede ejecutar mediante cualquiera de los alias integrados, ls, diry gci. Para obtener más información, consulte about_Aliases.
  • Get-ChildItem no obtiene elementos ocultos de forma predeterminada. Para obtener los elementos ocultos, use el parámetro Force.
  • El Get-ChildItem cmdlet está diseñado para trabajar con los datos expuestos por cualquier proveedor. Para enumerar los proveedores disponibles en la sesión, escriba Get-PSProvider. Para obtener más información, consulte about_Providers.