Proveedor FileSystem

Se aplica a: Windows PowerShell 4.0, Windows PowerShell 5.0

NOMBRE DEL 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 unidades de Windows PowerShell que se corresponden con las unidades lógicas del equipo, incluidas las unidades asignadas a recursos compartidos de red. Esto le permite hacer referencia a estas unidades desde Windows PowerShell.

El proveedor FileSystem le permite hacer referencia a archivos y carpetas en Windows PowerShell en la misma forma en que hace referencia a ellos en Windows.

Para hacer referencia a una unidad, especifique el nombre de la unidad seguido de dos puntos. Como en la mayor parte de Windows PowerShell, el proveedor FileSystem no distingue mayúsculas de minúsculas. Por ejemplo, para obtener los archivos y las carpetas de la unidad C, puede hacer referencia a la unidad "C:" o "c:".

Un nombre completo incluye el nombre de la unidad, seguido de dos puntos, el nombre de cualquier directorio y subdirectorio, y el nombre de archivo (si procede). Cada elemento del nombre completo debe estar separado por una barra diagonal inversa (\) o una barra diagonal (/).

El ejemplo siguiente muestra el nombre completo del archivo Shell.dll en el subdirectorio System32 del directorio Windows en la unidad C:

C:\Windows\System32\shell.dll

Si un elemento del nombre completo incluye espacios, debe colocar el nombre entre comillas.

Por ejemplo,

"C:\Archivos de programa\Internet Explorer\iexplore.exe"

La ubicación actual en el sistema de archivos está representada por un punto (.)

Por ejemplo, si la ubicación actual es el directorio C:\Windows\System32, puede hacer referencia al archivo Shell.dll de dicho directorio de la forma siguiente:

.\Shell.dll

Para usar el proveedor FileSystem para ver y administrar archivos y carpetas, use los cmdlets de proveedor, como Get-ChildItem ("dir", "ls") y Set-Location ("cd"). Windows PowerShell también incluye una función "mkdir" (alias = "md") que usa el cmdlet New-Item para crear un directorio nuevo.

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 bien utilice el parámetro Path de Get-Help para especificar una unidad del sistema de archivos.

Por ejemplo,

PS C:\> Get-Help get-childitem

PS HKLM:\> Get-HelpGet-ChildItem -path c:

Además, a partir de Windows PowerShell 3.0, el proveedor FileSystem admite credenciales para el cmdlet New-PSDrive. Para obtener más información, vea el tema de ayuda para el cmdlet New-PSDrive.

FUNCIONALIDADES

Filter, ShouldProcess

EJEMPLOS

Dividir un archivo grande

-------------------------- EJEMPLO 1 --------------------------

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

Puede utilizar el parámetro Delimiter 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 una de las cuales finaliza con las palabras "End of Employee Record", y lo guarda en la variable $e.

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

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]

-------------------------- EJEMPLO 1 --------------------------

Este comando obtiene la ubicación actual.

get-location

El cmdlet Get-Location incluye la funcionalidad de comandos, como el comando cd en el símbolo del sistema de Windows y el comando pwd en UNIX. Para obtener más información, escriba "get-help get-location".

-------------------------- EJEMPLO 2 --------------------------

Este comando establece la ubicación actual:

set-location C:

Obtención información de archivo y directorio

-------------------------- 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 en el directorio actual al ejecutar este comando, se devuelven un objeto System.IO.FileInfo y un objeto System.IO.DirectoryInfo.

-------------------------- EJEMPLO 2 --------------------------

Este comando obtiene todos los archivos que se encuentren en el directorio actual:

get-childitem | where-object {!$_.psiscontainer}

El comando usa el cmdlet Get-ChildItem para obtener los archivos y directorios. Canaliza los resultados al cmdlet Where-Object, que selecciona únicamente los objetos que no son contenedores (!).

-------------------------- EJEMPLO 3 --------------------------

El comando usa el cmdlet Get-ChildItem para obtener los archivos y directorios. Canaliza los resultados a Where-Object, que selecciona únicamente los objetos que son contenedores.

get-childitem | where-object {$_.psiscontainer}

-------------------------- EJEMPLO 4 --------------------------

Este comando muestra las propiedades de un directorio:

get-item -path c:\ps-test | format-list -property *

El comando utiliza el parámetro Path del cmdlet Get-Item para obtener el directorio C:\ps-test. Canaliza el objeto de directorio al cmdlet Format-List, que muestra todas (*) las propiedades y valores del directorio en una lista.

-------------------------- EJEMPLO 5 --------------------------

Este comando muestra las propiedades de un archivo:

get-item -path test.txt | format-list -property *

El comando utiliza el parámetro Path del cmdlet Get-Item para obtener el archivo test.txt. Canaliza el objeto de archivo al cmdlet Format-List, que muestra todas (*) las propiedades y valores del archivo en una lista.

Copiar archivos y directorios

-------------------------- EJEMPLO 1 --------------------------

Este comando copia el archivo A.txt desde el directorio C:\A en el directorio C:\A\Bb:

copy-item -path C:\a\a.txt -destination C:\a\bb\a.txt

Sobrescribe los archivos en el directorio de destino sin pedir confirmación.

-------------------------- EJEMPLO 2 --------------------------

Este comando copia todos los archivos del directorio C:\A\Bb que tienen la extensión de nombre de archivo .txt en el directorio C:\A\Cc\Ccc\:

copy-item -path C:\a\bb\*.txt -destination C:\a\cc\ccc\

Utiliza 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, el comando generará un error a menos que 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 en el 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 forzar el cmdlet a que sobrescriba un archivo existente, especifique el parámetro Force.

-------------------------- EJEMPLO 2 --------------------------

Este comando mueve el directorio C:\A y todos sus contenidos al directorio C:\B:

move-item -path C:\a -destination C:\b

No se puede mover un directorio cuando dicho directorio es la ubicación actual.

Administrar el contenido del archivo

-------------------------- EJEMPLO 1 --------------------------

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

add-content -path test.txt -value "test content"

No se elimina el contenido existente en el archivo Test.txt.

-------------------------- EJEMPLO 2 --------------------------

Este comando obtiene el contenido del archivo Test.txt y lo muestra en la consola:

get-content -path test.txt

Puede canalizar el contenido del archivo a otro cmdlet. Por ejemplo, el comando siguiente lee el contenido del archivo Test.txt y 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 con la cadena "test content":

set-content -path test.txt -value "test content"

Sobrescribe el contenido de Test.txt. Puede utilizar 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 acerca de este objeto, canalice el comando al cmdlet Get-Member. También puede consultar "Clase FileSecurity" en el vínculo https://go.microsoft.com/fwlink/?LinkId=145718 de MSDN Library (Microsoft Developer Network).

-------------------------- 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 acerca de este objeto, canalice el comando al cmdlet Get-Member. También puede consultar "Clase DirectorySecurity" en el vínculo https://go.microsoft.com/fwlink/?LinkId=145736 de MSDN Library.

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" en el 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" en el 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 el nombre del archivo A.txt en el directorio C:\A a B.txt:

rename-item -path c:\a\a.txt -newname b.txt

-------------------------- EJEMPLO 2 --------------------------

Este comando cambia el nombre del directorio C:\A\Cc a C:\A\Dd:

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 que tengan la extensión de nombre de archivo .xml:

remove-item -path *.xml

Iniciar un programa mediante la invocación de un archivo asociado

-------------------------- EJEMPLO 1 --------------------------

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 la información en el archivo Services.csv.

El segundo comando usa Invoke-Item para abrir 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

Obtener archivos y carpetas con los atributos especificados

-------------------------- EJEMPLO 1 --------------------------

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

Usa el parámetro File para obtener únicamente archivos (no directorios) y el parámetro System para obtener únicamente elementos con el atributo System.

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

get-childitem -file -system  -recurse

-------------------------- EJEMPLO 2 --------------------------

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

Utiliza el parámetro Attributes con dos valores: !Directory+Hidden, que obtiene los 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.

-------------------------- EJEMPLO 3 --------------------------

Este comando obtiene los archivos del directorio actual que estén comprimidos o cifrados.

Utiliza 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 agregados por un proveedor de Windows PowerShell que solo están disponibles cuando se utiliza el cmdlet en la unidad habilitada por el proveedor.

Encoding <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>

Especifica la codificación del archivo. El valor predeterminado es ASCII.

Valor Descripción

Unknown

El tipo de codificación es desconocido o no válido. Los datos pueden tratarse como binarios.

Cadena

Usa el tipo de codificación para una cadena.

Unicode

Codifica en formato UTF-16 utilizando el orden de bytes little-endian.

Byte

Codifica un conjunto de caracteres en una secuencia de bytes.

BigEndianUnicode

Codifica en formato UTF-16 utilizando el orden de bytes big-endian.

UTF8

Codifica en formato UTF-8.

UTF7

Codifica en formato UTF-7.

ASCII

Utiliza la codificación para el juego de caracteres (de 7 bits) de ASCII.

Cmdlets admitidos:

Delimiter <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.

Por consiguiente, de manera predeterminada, al leer un archivo de texto, Get-Content devuelve una colección de objetos de cadena, cada uno de los cuales termina con un carácter de final de línea.

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

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 para la solución de problemas: Actualmente, cuando el valor del parámetro Delimiter es una cadena vacía, Get-Content no devuelve nada. Se trata de 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:

Attributes <FlagsExpression[System.IO.FileAttributes]>

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 parámetro Attributes se incorporó en Windows PowerShell 3.0.

El parámetro Attributes es compatible con los siguientes atributos: Archive, Compressed, Device, Directory, Encrypted, Hidden, Normal, NotContentIndexed, Offline, ReadOnly, ReparsePoint, SparseFile, System y Temporary. Para obtener una descripción de estos atributos, vea la enumeración FileAttributes en https://go.microsoft.com/fwlink/?LinkId=201508.

Utilice los siguientes operadores para combinar atributos.

! NOT

+ AND

, OR

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 parámetro Directory se incorporó en Windows PowerShell 3.0.

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

Cmdlets admitidos:

File <System.Management.Automation.SwitchParameter>

Obtiene archivos.

El parámetro File se incorporó en Windows PowerShell 3.0.

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

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 parámetro Hidden se incorporó en Windows PowerShell 3.0.

Para obtener solo elementos ocultos, utilice el parámetro Hidden, su alias "h" o "ah", o el valor Hidden del parámetro Attributes. Para excluir los elementos ocultos, omita el parámetro Hidden o utilice el parámetro Attributes.

Cmdlets admitidos:

ReadOnly <System.Management.Automation.SwitchParameter>

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

El parámetro ReadOnly se incorporó en Windows PowerShell 3.0.

Para obtener únicamente elementos de solo lectura, utilice el parámetro ReadOnly, su alias "ar" o el valor ReadOnly del parámetro Attributes. Para excluir elementos de solo lectura, utilice el parámetro Attributes.

Cmdlets admitidos:

System <System.Management.Automation.SwitchParameter>

Obtiene solo archivos y directorios (carpetas) del sistema.

El parámetro System se incorporó en Windows PowerShell 3.0.

Para obtener únicamente archivos y carpetas del sistema, use el parámetro System, su alias "as" o el valor System del parámetro Attributes. Para excluir carpetas y archivos del sistema, utilice el parámetro Attributes.

Cmdlets admitidos:

NewerThan <System.DateTime>

Devuelve "True" ($True) cuando el valor LastWriteTime de un archivo es mayor que la fecha especificada. De lo contrario, devuelve "False" ($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 "10 de agosto de 2011 2:00 p. m.".

Cmdlets admitidos:

OlderThan <System.DateTime>

Devuelve "True" ($True) cuando el valor LastWriteTime de un archivo es menor que la fecha especificada. De lo contrario, devuelve "False" ($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 "10 de agosto de 2011 2:00 p. m.".

Cmdlets admitidos:

Stream <System.String []>

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

Cmdlets admitidos:

Raw <SwitchParameter>

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

Cmdlets admitidos:

See Also

Concepts

about_Providers