FileSystem Provider
Nombre de proveedor
FileSystem
Unidades
C, D
Descripción breve
Proporciona acceso a archivos y directorios.
Descripción detallada
El proveedor FileSystem de Windows PowerShell permite obtener, agregar, cambiar, borrar y eliminar archivos y directorios en Windows PowerShell.
El proveedor FileSystem expone las unidades de Windows PowerShell que corresponden a las unidades lógicas configuradas en el equipo, incluidas las unidades asignadas a recursos compartidos de red. Por ejemplo, un equipo con una unidad de disquete, una unidad de disco duro y un directorio compartido de red asignado podría tener las unidades A, C y Z. El proveedor FileSystem expone las unidades de Windows PowerShell que corresponden directamente a A, C y Z, lo que permite hacer referencia a estas unidades desde Windows PowerShell. Por ejemplo, para hacer referencia a la unidad C se usaría C:, como se muestra en el siguiente ejemplo:
El comando devuelve todo el contenido de la unidad C, incluidos los archivos y directorios. Cuando se hace referencia a un directorio o archivo concreto mediante el proveedor FileSystem, debe proporcionarse la información necesaria para identificar dicho directorio o archivo. Esto significa que, en algunos casos, se debe proporcionar un nombre completo. Un nombre completo incluye el nombre de unidad (junto con un signo de dos puntos), los nombres de directorio y subdirectorio y (si procede) el nombre de archivo. Por ejemplo, a continuación se muestra el nombre completo del archivo Shell.dll, que se encuentra en el subdirectorio System32 del directorio Windows de la unidad C:.
c:\windows\system32\shell.dll
Como puede observar, cada elemento del nombre completo está separado por una barra diagonal inversa (\). Windows PowerShell también permite el uso de una barra diagonal (/) para aportar compatibilidad con otros shells.
En algunos casos, no es necesario proporcionar un nombre completo al hacer referencia a un archivo o directorio. Por ejemplo, si se desea tener acceso a un archivo que se encuentra en la ubicación de trabajo actual, solamente hay que proporcionar el nombre de archivo. Si la ubicación de trabajo actual es c:\windows, se puede ver una lista de todos los archivos .dll de ese directorio mediante el comando siguiente:
Get-ChildItem *.dll
Si el directorio de trabajo es distinto de c:\windows, como c:\archivos de programa\Windows PowerShell, es posible que el comando deba incluir el nombre completo:
Get-ChildItem c:\windows\*.dll
En algunos casos, se pueden usar referencias relativas a una ubicación. Si la ubicación de trabajo es c:\windows y se desea ver una lista de los archivos .DLL contenidos en el directorio c:\windows\system32, se puede usar el siguiente comando:
Get-ChildItem .\system32\*.dll
El punto que precede a \system32 representa la ubicación de trabajo actual.
En algunas situaciones, la ubicación de trabajo actual estará en una unidad que no es FileSystem. En tal caso, se deberá incluir siempre el nombre de la unidad de destino en la referencia. Por ejemplo, supongamos que la ubicación de trabajo actual es la unidad Env:. Para ver el contenido de la unidad C:, usaría el siguiente comando:
Ejemplos
Desplazarse por el sistema de archivos
-------------------------- EJEMPLO 1 --------------------------
Este comando obtiene la ubicación actual:
get-location
El cmdlet Get-Location incluye la funcionalidad de comandos, como el comando cd del símbolo del sistema de Windows y el comando pwd de Unix. Para obtener más información, escriba: get-help get-location
-------------------------- EJEMPLO 2 --------------------------
Este comando establece la ubicación actual:
set-location C:
Obtener información de archivos y directorios
-------------------------- EJEMPLO 1 --------------------------
Este comando obtiene todos los archivos y directorios del directorio actual:
get-childitem
De forma predeterminada, el cmdlet Get-ChildItem no es recursivo. Si hay archivos y carpetas presentes en el directorio actual cuando se ejecuta este comando, se devuelve un objeto System.IO.FileInfo y un objeto System.IO.DirectoryInfo.
-------------------------- EJEMPLO 2 --------------------------
Este comando obtiene todos los archivos y directorios del directorio actual mediante Get-ChildItem:
get-childitem | where-object {!$_.psiscontainer}
Canaliza los resultados a Where-Object, que examina la propiedad PSIsContainer y permite únicamente los objetos que no (!) son contenedores a través de la canalización.
-------------------------- EJEMPLO 3 --------------------------
Este comando obtiene todos los archivos y directorios del directorio actual mediante Get-ChildItem. Canaliza los resultados a Where-Object, que examina la propiedad PSIsContainer y permite únicamente los objetos que son contenedores a través de la canalización.
get-childitem | where-object {$_.psiscontainer}
-------------------------- EJEMPLO 4 --------------------------
Este comando obtiene todos los archivos y directorios del directorio actual mediante Get-ChildItem:
get-item -path a | format-list *
Canaliza los resultados al cmdlet Where-Object, que examina la propiedad PSIsContainer y permite únicamente los objetos que son contenedores a través de la canalización.
-------------------------- EJEMPLO 5 --------------------------
Este comando usa el cmdlet Get-Item para obtener información acerca del archivo Test.txt:
get-item -path test.txt | format-list *
El cmdlet Format-List se utiliza para mostrar todas las propiedades del objeto resultante.
Copiar archivos y directorios
-------------------------- EJEMPLO 1 --------------------------
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
Sobrescribe archivos en el directorio de destino sin pedir confirmación.
-------------------------- EJEMPLO 2 --------------------------
Este comando copia todos los archivos del directorio C:\A\Bb cuya extensión es .txt al directorio C:\A\Cc\Ccc\.
copy-item -path C:\a\bb\*.txt -destination C:\a\cc\ccc\
Usa los nombres originales de los archivos. El comando sobrescribe los archivos existentes en el directorio de destino sin pedir confirmación.
-------------------------- EJEMPLO 3 --------------------------
Copia todos los archivos y directorios 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 producirá un error al ejecutar el comando a menos que se especifique el parámetro Force.
copy-item -path C:\a\* -destination C:\c -recurse
Mover archivos y directorios
-------------------------- EJEMPLO 1 --------------------------
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
El comando no sobrescribirá automáticamente un archivo existente que tenga el mismo nombre. Para obligar a que el cmdlet sobrescriba un archivo existente, debe especificarse el parámetro Force.
-------------------------- EJEMPLO 2 --------------------------
Este comando mueve el directorio C:\A y todo su contenido al directorio C:\B:
move-item -path C:\a -destination C:\b
No se puede mover un directorio que sea la ubicación actual.
Administrar el contenido de archivos
-------------------------- EJEMPLO 1 --------------------------
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.
-------------------------- EJEMPLO 2 --------------------------
Este comando obtiene el contenido del archivo Test.txt y lo muestra en la consola:
get-content -path test.txt
El contenido del archivo se puede canalizar a otro cmdlet. Por ejemplo, el comando siguiente lee el contenido del archivo Test.txt y, a continuación, lo proporciona como entrada al cmdlet ConvertTo-HTML: get-content -path test.txt | convertto-html
-------------------------- EJEMPLO 3 --------------------------
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. Se puede usar el parámetro Value del cmdlet New-Item para agregar contenido a un archivo al crearlo.
Administrar descriptores de seguridad
-------------------------- EJEMPLO 1 --------------------------
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, vea la clase FileSecurity en MSDN (Microsoft Developer Network) Library, en https://go.microsoft.com/fwlink/?LinkId=145718.
-------------------------- EJEMPLO 2 --------------------------
Este comando devuelve un objeto System.Security.AccessControl.DirectorySecurity:
get-acl -path test_directory | format-list -property *
Para obtener más información sobre este objeto, canalice el comando al cmdlet Get-Member. O bien, vea la clase DirectorySecurity en MSDN (Microsoft Developer Network) Library, en https://go.microsoft.com/fwlink/?LinkId=145736.
Crear archivos y directorios
-------------------------- EJEMPLO 1 --------------------------
Este comando crea el directorio Logfiles en la unidad C.
new-item -path c:\ -name logfiles -type directory
-------------------------- EJEMPLO 2 --------------------------
Este comando crea el archivo Log2.txt en el directorio C:\Logfiles y, a continuación, agrega la cadena "test log" al archivo:
new-item -path c:\logfiles -name log.txt -type file
-------------------------- EJEMPLO 3 --------------------------
Crea un archivo denominado Log2.txt en el directorio C:\logfiles y agrega la cadena "test log" al archivo.
new-item -path c:\logfiles -name log2.txt -type file -value "test log"
Cambiar el nombre de archivos y directorios
-------------------------- EJEMPLO 1 --------------------------
Este comando cambia a B.txt el nombre del archivo A.txt del directorio C:\A.
rename-item -path c:\a\a.txt -newname b.txt
-------------------------- EJEMPLO 2 --------------------------
Este comando cambia a C:\A\Dd el nombre del directorio C:\A\Cc:
rename-item -path c:\a\cc -newname dd
Eliminar archivos y directorios
-------------------------- EJEMPLO 1 --------------------------
Este comando elimina el archivo Test.txt del directorio actual:
remove-item -path test.txt
-------------------------- EJEMPLO 2 --------------------------
Este comando elimina todos los archivos del directorio actual cuya extensión es .xml:
remove-item -path *.xml
Iniciar un programa mediante la llamada a un archivo asociado
-------------------------- EJEMPLO 1 --------------------------
El primer comando usa el cmdlet Get-Service para obtener información acerca de los servicios locales.
Canaliza la información al cmdlet Export-Csv y, a continuación, la almacena en el archivo Services.csv.
El segundo comando usa Invoke-Item para abrir el archivo Services.csv en el programa asociado a la extensión .csv:
get-service | export-csv -path services.csv
invoke-item -path services.csv
Parámetros dinámicos
Los parámetros dinámicos son los parámetros de cmdlet que un proveedor de Windows PowerShell agrega y solo están disponibles cuando el cmdlet se utiliza en la unidad habilitada por el proveedor.
Encoding <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>
Value | Description |
---|---|
Unknown |
El tipo de codificación es desconocida o no es válida. Los datos se pueden tratar como binarios. |
String |
Usa el tipo de codificación de una cadena. |
Unicode |
Codifica en el formato UTF-16 con el orden de bytes Little-Endian. |
Byte |
Codifica un conjunto de caracteres en una secuencia de bytes. |
BigEndianUnicode |
Codifica en el formato UTF-16 con el orden de bytes Big-Endian. |
UTF8 |
Codifica en formato UTF8. |
UTF7 |
Codifica en formato UTF7. |
ASCII |
Usa la codificación del juego de caracteres ASCII (7 bits). |
Cmdlets admitidos
Delimiter <System.String>
Especifica el delimitador que se va a usar al leer el archivo. El valor predeterminado es "\n" (final de línea).
Cmdlets admitidos
Wait <System.Management.Automation.SwitchParameter>
Espera a que se anexe contenido al archivo. Si se anexa contenido, devuelve el contenido anexado. Si el contenido ha cambiado, devuelve el archivo completo.
Durante la espera, Get-Content comprueba el archivo una vez cada segundo hasta que el usuario lo interrumpa, por ejemplo, con CTRL+C.