Comparteix a través de


about_FileSystem_Provider

Nombre del proveedor

Sistema de archivos

Unidades

C:, , D:... Temp:

Capabilities

Filter, ShouldProcess

Descripción breve

Proporciona acceso a archivos y directorios.

Descripción detallada

El proveedor FileSystem de PowerShell permite obtener, agregar, cambiar, borrar y eliminar archivos y directorios en PowerShell.

Las unidades FileSystem son un espacio de nombres jerárquico que contiene los directorios y los archivos de su equipo. Una unidad FileSystem puede ser una unidad lógica o física, un directorio o un recurso compartido de red asignado.

A partir de la versión 7.0 de PowerShell, una unidad llamada Temp: se asigna a la ruta de acceso del directorio temporal del usuario. PowerShell usa el método GetTempPath() de .NET para determinar la ubicación de la carpeta temporal. En Windows, la ubicación es la misma que $Env:TEMP. En sistemas que no son windows, la ubicación es la misma que $Env:TMPDIR o /tmp si no se define la variable de entorno.

El proveedor FileSystem admite los siguientes cmdlets, que se tratan en este artículo.

Tipos expuestos por este proveedor

Los archivos son instancias de la clase System.IO.FileInfo. Los directorios son instancias de la clase System.IO.DirectoryInfo.

El sistema de tipos extendidos de PowerShell agrega propiedades adicionales a estos tipos de objetos para proporcionar información adicional. Cierta información es específica de la plataforma. Por ejemplo, los posibles valores de la propiedad LinkType dependen de la plataforma y del sistema de archivos que se usa. Los sistemas de archivos de Linux y macOS admiten HardLink y SymLink. Windows NTFS admite HardLink, SymLink, Junctiony otros valores para LinkType.

Al usar o para obtener información sobre un elemento vinculado, la propiedad Mode contiene un para indicar que el elemento es un vínculo. La propiedad LinkType contiene el tipo de vínculo.

Los vínculos AppExecLink se crean al instalar una aplicación desde Microsoft Store. Para los vínculos de AppExecLink, Windows no proporciona valores para las propiedades LinkType ni LinkTarget.

Get-Item ~\AppData\Local\Microsoft\WindowsApps\winget.exe

    Directory: C:\Users\user1\AppData\Local\Microsoft\WindowsApps

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
la---            6/8/2023 12:20 PM              0 winget.exe ->

El proveedor FileSystem expone sus almacenes de datos mapeando cualquier unidad lógica en el equipo como unidades de PowerShell. Para trabajar con una unidad FileSystem, puede cambiar de ubicación a una unidad especificando su nombre seguido de dos puntos (:).

Set-Location C:

También puede trabajar con el proveedor de FileSystem desde cualquier otra unidad de PowerShell. Para hacer referencia a un archivo o directorio desde otra ubicación, use el nombre de la unidad de disco (C:, D:, ...) en la ruta de acceso.

Nota

PowerShell usa alias para permitirle una forma familiar de trabajar con rutas de acceso a proveedores. Los comandos como dir y ls ahora son alias para Get-ChildItem, cd es un alias para Set-Location. y pwd es un alias para Get-Location.

Obtención de archivos y directorios

El cmdlet Get-ChildItem devuelve todos los archivos y directorios de la ubicación actual. Puede especificar una ruta de acceso diferente para buscar y usar parámetros integrados para filtrar y controlar la profundidad de recursividad.

Get-ChildItem

Para obtener más información sobre el uso de cmdlets, consulte Get-ChildItem.

Copiar archivos y directorios

El cmdlet Copy-Item copia archivos y directorios en una ubicación que especifique. Los parámetros están disponibles para filtrar y recursar, similar a Get-ChildItem.

El comando siguiente copia todos los archivos y directorios en la ruta de acceso C:\temp\ a la carpeta C:\Windows\Temp.

Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File

Copy-Item sobrescribe los archivos en el directorio de destino sin pedir confirmación.

Este comando copia el archivo a.txt desde el directorio C:\a al directorio C:\a\bb.

Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt

Copia todos los directorios y archivos del directorio C:\a en el directorio C:\c. Si alguno de los directorios que se van a copiar ya existe en el directorio de destino, se produce un error en el comando a menos que especifique el parámetro Force.

Copy-Item -Path C:\a\* -Destination C:\c -Recurse

Para obtener más información, consulte Copy-Item.

Mover archivos y directorios

Este comando mueve el archivo c.txt del directorio C:\a al directorio C:\a\aa:

Move-Item -Path C:\a\c.txt -Destination C:\a\aa

De forma predeterminada, el cmdlet no sobrescribe un archivo existente que tiene el mismo nombre. Para forzar que el cmdlet sobrescriba un archivo existente, especifique el parámetro Force.

No se puede mover un directorio cuando ese directorio es la ubicación actual. Al usar Move-Item para mover el directorio en la ubicación actual, verá este error.

C:\temp> Move-Item -Path C:\temp\ -Destination C:\Windows\Temp

Move-Item : Cannot move item because the item at 'C:\temp\' is in use.
At line:1 char:1
+ Move-Item C:\temp\ C:\temp2\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand

Administración del contenido del archivo

Obtener el contenido de un archivo

Este comando obtiene el contenido del archivo "Test.txt" y los muestra en la consola.

Get-Content -Path Test.txt

Puede canalizar el contenido del archivo a otro cmdlet. Por ejemplo, el siguiente comando lee el contenido del archivo Test.txt y, a continuación, los proporciona como entrada al cmdlet ConvertTo-Html:

Get-Content -Path Test.txt | ConvertTo-Html

También puede recuperar el contenido de un archivo anteponiendo a su ruta de acceso del proveedor el signo de dólar ($). La ruta de acceso debe incluirse entre llaves debido a las restricciones en la nomenclatura de variables. Para obtener más información, consulte about_Variables.

${C:\Windows\System32\drivers\etc\hosts}

Agregar contenido a un archivo

Este comando anexa la cadena "test content" al archivo Test.txt:

Add-Content -Path test.txt -Value "test content"

El contenido existente en el archivo Test.txt no se elimina.

Reemplazar el contenido de un archivo

Este comando reemplaza el contenido del archivo Test.txt por la cadena "test content":

Set-Content -Path test.txt -Value "test content"

Sobrescribe el contenido de Test.txt. Puede usar el parámetro Value del cmdlet New-Item para agregar contenido a un archivo al crearlo.

Recorrer en bucle el contenido de un archivo

De forma predeterminada, el cmdlet Get-Content usa el carácter de fin de línea como delimitador, por lo que obtiene un archivo como una colección de cadenas, con cada línea como una cadena en el archivo.

Puede usar el parámetro delimitador para especificar un delimitador alternativo. Si lo establece en los caracteres que indican el final de una sección o el principio de la sección siguiente, puede dividir el archivo en partes lógicas.

El primer comando obtiene el archivo Employees.txt y lo divide en secciones, cada uno de los cuales termina con las palabras "Fin del registro de empleado" y lo guarda en la variable $e.

El segundo comando usa la notación de matriz para obtener el primer elemento de la colección en $e. Usa un índice de 0, ya que las matrices de PowerShell están basadas en cero.

Para obtener más información sobre el cmdlet Get-Content, consulte el tema de ayuda de Get-Content.

Para obtener más información sobre las matrices, vea about_Arrays.

$e = Get-Content C:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]

Administración de descriptores de seguridad

Visualización de la ACL de un archivo

Este comando devuelve un objeto System.Security.AccessControl.FileSecurity:

Get-Acl -Path test.txt | Format-List -Property *

Para obtener más información sobre este objeto, canalice el comando al cmdlet get-member de o vea la clase fileSecurity de .

Creación de archivos y directorios

Creación de un directorio

Este comando crea el directorio logfiles en la unidad C:

New-Item -Path C:\ -Name logfiles -Type Directory

PowerShell también incluye una función de mkdir (alias md) que usa el cmdlet New-Item para crear un nuevo directorio.

Creación de un archivo

Este comando crea el archivo log2.txt en el directorio C:\logfiles y, a continuación, agrega la cadena "registro de pruebas" al archivo:

New-Item -Path C:\logfiles -Name log2.txt -Type File

Creación de un archivo con contenido

Crea un archivo denominado log2.txt en el directorio C:\logfiles y agrega la cadena "registro de pruebas" al archivo.

New-Item -Path C:\logfiles -Name log2.txt -Type File -Value "test log"

Cambiar el nombre de archivos y directorios

Cambiar el nombre de un archivo

Este comando cambia el nombre del archivo a.txt del directorio C:\a a b.txt:

Rename-Item -Path C:\a\a.txt -NewName b.txt

Cambiar el nombre de un directorio

Este comando cambia el nombre del directorio C:\a\cc a C:\a\dd:

Rename-Item -Path C:\a\cc -NewName dd

Eliminación de archivos y directorios

Eliminar un archivo

Este comando elimina el archivo Test.txt en el directorio actual:

Remove-Item -Path test.txt

Eliminación de archivos mediante caracteres comodín

Este comando elimina todos los archivos del directorio actual que tienen la extensión de nombre de archivo .xml:

Remove-Item -Path *.xml

Iniciar un programa invocando un archivo asociado

Invocación de un archivo

El cmdlet Get-Service obtiene información sobre los servicios locales y canaliza la información al cmdlet de Export-Csv para almacenar la información en el archivo Services.csv.

A continuación, Invoke-Item abre el archivo services.csv en el programa asociado con la extensión .csv:

Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv

Obtención de archivos y carpetas con atributos especificados

Obtener archivos del sistema

Este comando obtiene los archivos del sistema en el directorio actual y sus subdirectorios.

Usa el parámetro File para obtener solo archivos (no directorios) y el parámetro System para obtener solo elementos con el atributo "system".

Usa el parámetro Recurse para obtener los elementos del directorio actual y todos los subdirectorios.

Get-ChildItem -File -System -Recurse

Obtener archivos ocultos

Este comando obtiene todos los archivos, incluidos los archivos ocultos, en el directorio actual.

Usa el parámetro Attributes con dos valores, !Directory+Hidden, que obtiene archivos ocultos y !Directory, que obtiene todos los demás archivos.

Get-ChildItem -Attributes !Directory,!Directory+Hidden

dir -Att !d,!d+h es el equivalente de este comando.

Obtener archivos comprimidos y cifrados

Este comando obtiene archivos en el directorio actual que están comprimidos o cifrados.

Usa el parámetro Attributes con dos valores, Compressed y Encrypted. Los valores están separados por una coma , que representa el operador "OR".

Get-ChildItem -Attributes Compressed,Encrypted

Parámetros dinámicos

Los parámetros dinámicos son parámetros de cmdlet que agrega un proveedor de PowerShell y solo están disponibles cuando el cmdlet se usa en la unidad habilitada para el proveedor.

Codificación <Codificación>

Especifica la codificación de archivos. El valor predeterminado es ASCII.

  • ascii: utiliza la codificación para el juego de caracteres (de 7 bits) de ASCII.
  • bigendianunicode: codifica en formato UTF-16 utilizando el orden de bytes big-endian.
  • bigendianutf32: codifica en formato UTF-32 utilizando el orden de bytes big-endian.
  • oem: usa la codificación predeterminada para MS-DOS y programas de consola.
  • unicode: codifica en formato UTF-16 utilizando el orden de bytes little-endian.
  • utf7: codifica en formato UTF-7.
  • utf8: codifica en formato UTF-8.
  • utf8BOM: codifica en formato UTF-8 con marca de orden de bytes (BOM)
  • utf8NoBOM: codifica en formato UTF-8 sin marca de orden de bytes (BOM)
  • utf32: codifica en formato UTF-32.

Cmdlets compatibles

  • Add-Content
  • Get-Content
  • Set-Content

Cadena delimitador <>

Especifica el delimitador que Get-Content usa para dividir el archivo en objetos mientras lee.

El valor predeterminado es \n, el carácter de final de línea.

Al leer un archivo de texto, Get-Content devuelve una colección de objetos de cadena, cada uno de los cuales termina con el carácter delimitador.

Al escribir un delimitador que no existe en el archivo, Get-Content devuelve todo el archivo como un único objeto sin delimitar.

Puede usar este parámetro para dividir un archivo grande en archivos más pequeños especificando un separador de archivos, como "Fin de ejemplo", como delimitador. El delimitador se conserva (no se descarta) y se convierte en el último elemento de cada sección de archivo.

Nota

Actualmente, cuando el valor del parámetro delimitador de es una cadena vacía, no devuelve nada. Se trata de un problema conocido. Para forzar a Get-Content a devolver todo el archivo como una sola cadena sin delimitadores, introduzca un valor que no exista en el archivo.

Cmdlets compatibles

  • Get-Content

Wait <SwitchParameter>

Espera a que el contenido se anexe al archivo. Si se anexa contenido, devuelve el contenido anexado. Si el contenido ha cambiado, devuelve todo el archivo.

Al esperar, Get-Content comprueba el archivo una vez cada segundo hasta que se interrumpa, por ejemplo presionando CTRL+C.

Cmdlets compatibles

  • Get-Content

Marcas de atributosExpression <>

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

El parámetro Attributes se introdujo en Windows PowerShell 3.0.

El parámetro Atributos soporta los siguientes atributos:

  • Archive
  • Compressed
  • Device
  • Directory
  • Encriptado
  • Hidden
  • Normal
  • NotContentIndexed
  • Offline
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • System
  • Temporary

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

Use los operadores siguientes para combinar atributos.

  • ! -NO
  • + -Y
  • , -O

No se permiten espacios entre un operador y su atributo. Sin embargo, se permiten espacios antes de comas.

Cmdlets compatibles

  • Get-ChildItem

SwitchParameter de directorio <>

Obtiene los directorios (carpetas)

El parámetro directory se introdujo en Windows PowerShell 3.0.

Para obtener solo directorios, use el parámetro Directory y omita el parámetro File . Para excluir directorios, use el parámetro File y omita el parámetro Directory, o use el parámetro Attributes.

Cmdlets compatibles

  • Get-ChildItem

Modificador de archivoParameter <>

Obtiene archivos.

El parámetro File se introdujo en Windows PowerShell 3.0.

Para obtener solo archivos, use el parámetro File y omita el parámetro Directory. Para excluir archivos, use el parámetro Directory y omita el parámetro File o use el parámetro Attributes .

Cmdlets compatibles

  • Get-ChildItem

SwitchParameter oculto <>

Obtiene solo los archivos y directorios ocultos (carpetas). De forma predeterminada, Get-ChildItem obtiene solo elementos no ocultos.

El parámetro hidden se introdujo en Windows PowerShell 3.0.

Para obtener solo elementos ocultos, use el parámetro Hidden, sus alias h o ah, o el valor Hidden del parámetro Attributes. Para excluir elementos ocultos, omita el parámetro Hidden o use el parámetro Attributes.

Cmdlets compatibles

  • Get-ChildItem

ReadOnly <SwitchParameter>

Obtiene únicamente archivos y directorios (carpetas) de solo lectura.

El parámetro readOnly se introdujo en Windows PowerShell 3.0.

Para obtener solo elementos de solo lectura, use el parámetro ReadOnly, su alias ar o el valor ReadOnly del parámetro Attributes. Para excluir elementos de solo lectura, use el parámetro Atributos.

Cmdlets compatibles

  • Get-ChildItem

Conmutador del sistemaParameter <>

Obtiene solo los archivos y directorios del sistema (carpetas).

El parámetro System se introdujo en Windows PowerShell 3.0.

Para obtener solo archivos y carpetas del sistema, use el parámetro System, su alias as o el valor System del parámetro Attributes. Para excluir archivos y carpetas del sistema, use el parámetro Atributos.

Cmdlets compatibles

  • Get-ChildItem

Más recienteThan <DateTime>

Devuelve $true cuando el valor de LastWriteTime de un archivo es mayor que la fecha especificada. De lo contrario, devuelve $false.

Especifique un objeto DateTime, por ejemplo uno que el cmdlet Get-Date devuelva, o una cadena que se pueda convertir en un objeto DateTime, como "August 10, 2011 2:00 PM".

Cmdlets compatibles

OlderThan <DateTime>

Devuelve $true cuando el valor LastWriteTime de un archivo es menor que la fecha especificada. De lo contrario, devuelve $false.

Escriba un objeto DateTime, como el que devuelve el cmdlet Get-Date, o una cadena que se pueda convertir en un objeto DateTime, como "August 10, 2011 2:00 PM".

Cmdlets compatibles

  • Test-Path

Cadena de secuencia <>

Administra flujos de datos alternativos. Escriba el nombre de la secuencia. Los caracteres comodín solo se permiten en Get-Item para los comandos y Remove-Item en una unidad del sistema de archivos.

Cmdlets compatibles

  • Add-Content
  • Clear-Content
  • Get-Item
  • Get-Content
  • Remove-Item
  • Set-Content

SwitchParameter sin formato <>

Omite los caracteres de nueva línea. Devuelve el contenido como un solo elemento.

Cmdlets compatibles

  • Get-Content

ItemType <String>

Este parámetro permite especificar el tipo de elemento que se va a crear con New-Item.

Los valores disponibles de este parámetro dependen del proveedor actual que use.

En una unidad FileSystem, se permiten los siguientes valores:

  • Archivo
  • Directorio
  • SymbolicLink
  • Intersección
  • HardLink

Cmdlets compatibles

  • New-Item

Uso de la canalización

Los cmdlets del proveedor aceptan entradas de canalización. Puede usar la canalización para simplificar la tarea mediante el envío de datos del proveedor de un cmdlet a otro cmdlet de proveedor. Para obtener más información sobre cómo usar la canalización con los cmdlets del proveedor, consulte las referencias de los cmdlets que se encuentran a lo largo de este artículo.

Obtener ayuda

A partir de Windows PowerShell 3.0, puede obtener temas de ayuda personalizados sobre cmdlets de proveedor que explican cómo se comportan dichos cmdlets en una unidad del sistema de archivos.

Para obtener los temas de ayuda personalizados para la unidad del sistema de archivos, ejecute un comando Get-Help en una unidad del sistema de archivos o use el parámetro Path de Get-Help para especificar una unidad del sistema de archivos.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c:

Consulte también