about_FileSystem_Provider
Nombre del proveedor
FileSystem
Unidades
C:
, D:
, Temp:
...
Funcionalidades
Filtro, ShouldProcess
Descripción breve
Proporciona acceso a archivos y directorios.
Descripción detallada
El proveedor FileSystem de PowerShell le 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 del 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 denominada 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 $env:TMPDIR
que o /tmp
si la variable de entorno no está definida.
El proveedor FileSystem admite los siguientes cmdlets, que se tratan en este artículo.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-Item
- Clear-ItemProperty
- Remove-Item
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
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 .
Navegación por las unidades FileSystem
El proveedor FileSystem expone sus almacenes de datos mediante la asignación de unidades lógicas en el equipo como unidades de PowerShell. Para trabajar con una unidad FileSystem , puede cambiar la ubicación a una unidad con el nombre de la unidad seguido de dos puntos (:
).
Set-Location C:
También puede trabajar con el proveedor FileSystem desde cualquier otra unidad de PowerShell. Para hacer referencia a un archivo o directorio desde otra ubicación, use el nombre de unidad (C:
, D:
, ...) en la ruta de acceso.
Nota
PowerShell usa alias para permitirle trabajar con rutas de acceso del proveedor. 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 Get-ChildItem
cmdlet 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 más información sobre el uso de cmdlets, consulte Get-ChildItem.
Copiar archivos y directorios
El Copy-Item
cmdlet copia archivos y directorios en una ubicación que especifique.
Los parámetros están disponibles para filtrar y recurse, de forma similar a Get-ChildItem
.
El siguiente comando 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 solicitar confirmación.
Este comando copia el a.txt
archivo del C:\a
directorio en el C:\a\bb
directorio .
Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt
Copia todos los directorios y archivos del C:\a
directorio en el C:\c
directorio. Si alguno de los directorios que se van a copiar ya existe en el directorio de destino, el comando generará un error a menos que especifique el parámetro Force.
Copy-Item -Path C:\a\* -Destination C:\c -Recurse
Para obtener más información, vea Copy-Item.
Mover archivos y directorios
Este comando mueve el c.txt
archivo del C:\a
directorio al C:\a\aa
directorio :
Move-Item -Path C:\a\c.txt -Destination C:\a\aa
El comando no sobrescribirá automáticamente un archivo existente que tenga el mismo nombre. Para forzar el cmdlet a que sobrescriba un archivo existente, especifique el parámetro Force.
No se puede mover un directorio cuando dicho directorio es la ubicación actual. Cuando se usa 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 Test.txt
archivo y, a continuación, los proporciona como entrada para el cmdlet ConvertTo-Html :
Get-Content -Path Test.txt | ConvertTo-Html
También puede recuperar el contenido de un archivo mediante el prefijo de su ruta de acceso del proveedor con el signo de dólar ($
). La ruta de acceso debe incluirse entre llaves debido a restricciones de 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 Test.txt
archivo:
Add-Content -Path test.txt -Value "test content"
El contenido existente en el Test.txt
archivo no se elimina.
Reemplazar el contenido de un archivo
Este comando reemplaza el contenido del Test.txt
archivo 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 Get-Content
cmdlet 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 -Delimiter
parámetro 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 Employees.txt
archivo y lo divide en secciones, cada una de las cuales termina con las palabras "Fin del registro de empleado" y la guarda en la $e
variable .
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 Get-Content
el cmdlet, consulte el tema de ayuda de Get-Content.
Para obtener más información sobre las matrices, consulte about_Arrays.
$e = Get-Content c:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]
Administración de descriptores de seguridad
Ver 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 . O bien, consulte FileSecurity (Clase).
Modificación de la ACL para un archivo
Create y establezca una ACL para un archivo
Creación de archivos y directorios
Creación de un directorio
Este comando crea el logfiles
directorio en la C
unidad:
New-Item -Path c:\ -Name logfiles -Type directory
PowerShell también incluye una mkdir
función (alias md
) que usa el cmdlet New-Item para crear un directorio.
Creación de un archivo
Este comando crea el log2.txt
archivo en el C:\logfiles
directorio 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 llamado log2.txt
en el C:\logfiles
directorio y agrega la cadena "registro de prueba" 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 a.txt
archivo del C:\a
directorio 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 C:\a\cc
directorio a C:\a\dd
:
Rename-Item -Path c:\a\cc -NewName dd
Eliminación de archivos y directorios
Eliminación de un archivo
Este comando elimina el Test.txt
archivo 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 .xml
nombre de archivo:
Remove-Item -Path *.xml
Iniciar un programa invocando un archivo asociado
Invocación de un archivo
El primer comando usa el cmdlet Get-Service para obtener información sobre los servicios locales.
Canaliza la información al cmdlet Export-Csv y, a continuación, almacena esa información en el Services.csv
archivo.
El segundo comando usa Invoke-Item para abrir el services.csv
archivo en el programa asociado a la .csv
extensión :
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 que se encuentren en el directorio actual y en sus subdirectorios.
Usa el -File
parámetro para obtener solo archivos (no directorios) y el -System
parámetro para obtener solo elementos con el atributo "system".
Usa el -Recurse
parámetro 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 ocultos, que se encuentren 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 los archivos del directorio actual que estén comprimidos o cifrados.
Usa el -Attributes
parámetro con dos valores y Compressed
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 agregados por un proveedor de PowerShell y que solo están disponibles cuando se usa el cmdlet en la unidad habilitada para el proveedor.
Codificación <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>
Especifica la codificación del archivo. El valor predeterminado es ASCII.
- ASCII: usa la codificación para el juego de caracteres ASCII (7 bits).
- BigEndianUnicode: codifica en formato UTF-16 mediante el orden de bytes big-endian.
- String: usa el tipo de codificación para una cadena.
- Unicode: codifica en formato UTF-16 mediante 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)
- UF8NOBOM: codifica en formato UTF-8 sin marca de orden de bytes (BOM)
- UTF32: codifica en formato UTF-32.
- Valor predeterminado: codifica en la página de códigos instalada predeterminada.
- OEM: usa la codificación predeterminada para los programas ms-DOS y de consola.
- Desconocido: el tipo de codificación es desconocido o no válido. Los datos pueden tratarse como binarios.
Cmdlets admitidos
Delimitador <System.String>
Especifica el delimitador que Get-Content utiliza 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 utilizar este parámetro para dividir un archivo grande en archivos más pequeños. Para ello, especifique un separador de archivo como delimitador, como por ejemplo, "Fin del ejemplo". El delimitador se conserva (no se descarta) y se convierte en el último elemento de cada sección del archivo.
Nota
Actualmente, cuando el valor del -Delimiter
parámetro es una cadena vacía, Get-Content no devuelve nada. Este es un problema conocido. Para forzar Get-Content a que devuelva todo el archivo como una cadena única no delimitada, escriba un valor que no exista en el archivo.
Cmdlets admitidos
Wait <System.Management.Automation.SwitchParameter>
Espera a que el contenido se anexe al archivo. Si se anexa el contenido, devuelve el contenido anexado. Si el contenido ha cambiado, devuelve todo el archivo.
Mientras espera, Get-Content comprueba el archivo una vez por segundo hasta que se interrumpa, por ejemplo presionando CTRL+C.
Cmdlets admitidos
Marcas de atributosExpression <>
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.
El -Attributes
parámetro se introdujo en Windows PowerShell 3.0.
El -Attributes
parámetro admite los siguientes atributos:
- Archivar
- Compressed
- Dispositivo
- Directorio
- Cifrado
- Oculto
- Normal
- NotContentIndexed
- Sin conexión
- ReadOnly
- ReparsePoint
- SparseFile
- Sistema
- Temporales
Para obtener una descripción de estos atributos, consulte la enumeración FileAttributes .
Utilice los siguientes operadores 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 admitidos
Directory <System.Management.Automation.SwitchParameter>
Obtiene directorios (carpetas).
El -Directory
parámetro se introdujo en Windows PowerShell 3.0.
Para obtener solo directorios, use el -Directory
parámetro y omita el -File
parámetro . Para excluir directorios, use el -File
parámetro y omita el -Directory
parámetro o use el -Attributes
parámetro .
Cmdlets admitidos
File <System.Management.Automation.SwitchParameter>
Obtiene archivos.
El -File
parámetro se introdujo en Windows PowerShell 3.0.
Para obtener solo archivos, use el -File
parámetro y omita el -Directory
parámetro . Para excluir archivos, use el -Directory
parámetro y omita el -File
parámetro o use el -Attributes
parámetro .
Cmdlets admitidos
Hidden <System.Management.Automation.SwitchParameter>
Obtiene solo archivos y directorios (carpetas) ocultos. De forma predeterminada, Get-ChildItem solo obtiene elementos no ocultos.
El -Hidden
parámetro se introdujo en Windows PowerShell 3.0.
Para obtener solo elementos ocultos, use el -Hidden
parámetro , sus h
alias o ah
o el valor Hidden del -Attributes
parámetro . Para excluir elementos ocultos, omita el -Hidden
parámetro o use el -Attributes
parámetro .
Cmdlets admitidos
ReadOnly <System.Management.Automation.SwitchParameter>
Obtiene únicamente archivos y directorios (carpetas) de solo lectura.
El -ReadOnly
parámetro se introdujo en Windows PowerShell 3.0.
Para obtener solo elementos de solo lectura, use el -ReadOnly
parámetro , su ar
alias o el valor ReadOnly del -Attributes
parámetro . Para excluir elementos de solo lectura, use el -Attributes
parámetro .
Cmdlets admitidos
System.Management.Automation.SwitchParameter <>
Obtiene solo archivos y directorios (carpetas) del sistema.
El -System
parámetro se introdujo en Windows PowerShell 3.0.
Para obtener solo archivos y carpetas del sistema, use el -System
parámetro , su as
alias o el valor System del -Attributes
parámetro . Para excluir archivos y carpetas del sistema, use el -Attributes
parámetro .
Cmdlets admitidos
NewerThan <System.DateTime>
Devuelve $True
cuando el LastWriteTime
valor de un archivo es mayor 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 admitidos
OlderThan <System.DateTime>
Devuelve $True
cuando el LastWriteTime
valor 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 admitidos
<Stream System.String>
Administra secuencias de datos alternativas. Escriba el nombre de la secuencia. Los caracteres comodín solo se permiten en los comandos Get-Item para y Remove-Item en una unidad del sistema de archivos.
Cmdlets admitidos
SwitchParameter sin <procesar>
Omite los caracteres de nueva línea. Devuelve el contenido como un solo elemento.
Cmdlets admitidos
ItemType <String>
Este parámetro permite especificar el valor de item que se va a crear con New-Item
Los valores disponibles de este parámetro dependen del proveedor actual que esté usando.
En una FileSystem
unidad, se permiten los siguientes valores:
- Archivo
- Directorio
- SymbolicLink
- unión
- HardLink
Cmdlets admitidos
Uso de la canalización
Los cmdlets del proveedor aceptan la entrada 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 cmdlets de proveedor, consulte las referencias de cmdlet proporcionadas en este artículo.
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 -Path
parámetro de Get-Help para especificar una unidad del sistema de archivos.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: