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 yRegistry
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, a continuación, use el parámetro PowerShell.exe
PSConsoleFile para importarlo. 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)