Administración de unidades de PowerShell

Este ejemplo solo se aplica a las plataformas Windows.

Una unidad de PowerShell es una ubicación de almacén de datos a la que se puede acceder como una unidad del sistema de archivos en PowerShell. Los proveedores de PowerShell crean algunas unidades automáticamente, como las unidades de sistema de archivos (C: y D:), las unidades del Registro (HKCU: y HKLM:) y la unidad de certificado (Cert:). También puede crear sus propias unidades de PowerShell. Estas unidades son muy útiles, pero solo están disponibles en PowerShell. No se puede tener acceso a ellas con otras herramientas de Windows, como el Explorador de archivos o Cmd.exe.

PowerShell usa el término PSDrive en los comandos que funcionan con las unidades de PowerShell. Para ver una lista de las unidades de PowerShell en la sesión de PowerShell, use el cmdlet Get-PSDrive.

Get-PSDrive
Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
A          FileSystem    A:\
Alias      Alias
C          FileSystem    C:\                                 ...And Settings\me
cert       Certificate   \
D          FileSystem    D:\
Env        Environment
Function   Function
HKCU       Registry      HKEY_CURRENT_USER
HKLM       Registry      HKEY_LOCAL_MACHINE
Variable   Variable

Aunque las unidades que aparecen en pantalla varían con respecto a las unidades de disco en el sistema, la suya debería tener un aspecto similar al resultado del comando Get-PSDrive mostrado anteriormente.

Las unidades del sistema de archivos son un subconjunto de las unidades de PowerShell. Puede identificar las unidades del sistema de archivos por la entrada FileSystem en la columna Provider. El proveedor FileSystem de PowerShell admite las unidades del sistema de archivos de PowerShell.

Para ver la sintaxis del cmdlet Get-PSDrive, escriba un comando Get-Command con el parámetro Syntax:

Get-Command -Name Get-PSDrive -Syntax
Get-PSDrive [[-Name] <String[]>] [-Scope <String>] [-PSProvider <String[]>] [-V
erbose] [-Debug] [-ErrorAction <ActionPreference>] [-ErrorVariable <String>] [-
OutVariable <String>] [-OutBuffer <Int32>]

El parámetro PSProvider permite mostrar únicamente las unidades de PowerShell compatibles con un proveedor determinado. Por ejemplo, para mostrar solo las unidades de PowerShell compatibles con el proveedor FileSystem de PowerShell, escriba un comando Get-PSDrive con el parámetro PSProvider y el valor FileSystem:

Get-PSDrive -PSProvider FileSystem
Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
A          FileSystem    A:\
C          FileSystem    C:\                           ...nd Settings\PowerUser
D          FileSystem    D:\

Para ver las unidades de PowerShell que representan los subárboles del Registro, use el parámetro PSProvider para mostrar solo las unidades de PowerShell compatibles con el proveedor de Registro de PowerShell:

Get-PSDrive -PSProvider Registry
Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
HKCU       Registry      HKEY_CURRENT_USER
HKLM       Registry      HKEY_LOCAL_MACHINE

También puede usar los cmdlets Location estándar con las unidades de disco de PowerShell:

Set-Location HKLM:\SOFTWARE
Push-Location .\Microsoft
Get-Location
Path
----
HKLM:\SOFTWARE\Microsoft

Adición de nuevas unidades de PowerShell

Puede usar el comando New-PSDrive para agregar sus propias unidades de PowerShell. Para obtener la sintaxis del cmdlet New-PSDrive, escriba un comando Get-Command con el parámetro Syntax:

Get-Command -Name New-PSDrive -Syntax
New-[-Description <String>] [-Scope <String>] [-Credential <PSCredential>] [-Verbose] [-Debug ]
[-ErrorAction <ActionPreference>] [-ErrorVariable <String>] [-OutVariable <St ring>]
[-OutBuffer <Int32>] [-WhatIf] [-Confirm]

Para crear una nueva unidad de PowerShell, debe proporcionar tres parámetros:

  • Un nombre de unidad (puede usar cualquier nombre válido de PowerShell)
  • PSProvider: se usa FileSystem para las ubicaciones del sistema de archivos y Registry para las ubicaciones del Registro.
  • La raíz; es decir, la ruta de acceso a la raíz de la nueva unidad

Por ejemplo, puede crear una unidad llamada Office que esté asignada a la carpeta que contiene las aplicaciones de Microsoft Office del equipo, como C:\Program Files\MicrosoftOffice\OFFICE11. Para crear la unidad, escriba el siguiente comando:

New-PSDrive -Name Office -PSProvider FileSystem -Root "C:\Program Files\Microsoft Office\OFFICE11"
Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
Office     FileSystem    C:\Program Files\Microsoft Offic...

Nota

Por lo general, las rutas de acceso no distinguen mayúsculas de minúsculas.

Se tiene acceso a una unidad de PowerShell con su nombre seguido de dos puntos (:).

Una unidad de PowerShell puede hacer que muchas tareas sean mucho más sencillas de realizar. Por ejemplo, algunas de las claves más importantes en el Registro de Windows tienen rutas de acceso muy largas, lo que las hace complicadas de acceder y difíciles de recordar. La información de configuración crítica reside en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion. Si quiere ver y cambiar elementos en la clave del Registro CurrentVersion, puede escribir lo siguiente para crear una unidad de PowerShell que se base en esa clave:

New-PSDrive -Name cvkey -PSProvider Registry -Root HKLM\Software\Microsoft\Windows\CurrentVersion
Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
cvkey      Registry      HKLM\Software\Microsoft\Windows\...

Luego, puede cambiar la ubicación a la unidad cvkey:, como lo haría con cualquier otra unidad:

cd cvkey:

O bien

Set-Location cvkey: -PassThru
Path
----
cvkey:\

El cmdlet New-PSDrive agrega la nueva unidad solo en la sesión actual de PowerShell. Si cierra la ventana de PowerShell, la nueva unidad se perderá. Para guardar una unidad de PowerShell, use el cmdlet Export-Console para exportar la sesión actual de PowerShell y, luego, use el parámetro PowerShell.exePSConsoleFile para importarla. También puede agregar la nueva unidad al perfil de Windows PowerShell.

Eliminación de unidades de PowerShell

Puede usar el cmdlet Remove-PSDrive para eliminar unidades de PowerShell. Por ejemplo, si agregó la unidad de PowerShell Office:, como se indica en el tema New-PSDrive, puede eliminarla escribiendo lo siguiente:

Remove-PSDrive -Name Office

Para eliminar la unidad de PowerShell cvkey:, use el comando siguiente:

Remove-PSDrive -Name cvkey

Sin embargo, no puede eliminarla mientras esté en la unidad. Por ejemplo:

cd office:
Remove-PSDrive -Name office
Remove-PSDrive : Cannot remove drive 'Office' because it is in use.
At line:1 char:15
+ remove-psdrive  <<<< -name office

Adición y eliminación de unidades fuera de PowerShell

PowerShell detecta unidades del sistema de archivos que se agregan o quitan en Windows, entre las que se incluyen:

  • Unidades de red asignadas
  • Unidades USB conectadas
  • Unidades que se eliminan mediante el comando net use o desde un script de Windows Script Host (WSH)