New-PSDrive
Crea unidades temporales y persistentes asociadas a una ubicación en un almacén de datos de elementos.
Sintaxis
New-PSDrive
[-Name] <String>
[-PSProvider] <String>
[-Root] <String>
[-Description <String>]
[-Scope <String>]
[-Persist]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Description
El New-PSDrive
cmdlet crea unidades temporales y persistentes asignadas o asociadas a una ubicación en un almacén de datos, como una unidad de red, un directorio en el equipo local o una clave del Registro, y unidades de red asignadas persistentes de Windows asociadas a una ubicación del sistema de archivos en un equipo remoto.
Las unidades temporales solo existen en la sesión de PowerShell actual y en las sesiones que cree en la sesión actual. Pueden tener cualquier nombre válido en PowerShell y se pueden asignar a cualquier recurso local o remoto. Puede usar unidades temporales de PowerShell para acceder a los datos del almacén de datos asociado, como haría con cualquier unidad de red asignada. Puede cambiar las ubicaciones en la unidad mediante Set-Location
y acceder al contenido de la unidad mediante Get-Item
o Get-ChildItem
.
Dado que las unidades temporales solo se conocen en PowerShell, no se puede acceder a ellas mediante Explorador de archivos, Instrumental de administración de Windows (WMI), Modelo de objetos componentes (COM), Microsoft .NET Framework o con herramientas como net use
.
Las siguientes características se agregaron a New-PSDrive
en PowerShell 3.0:
- Unidades de red asignadas. Puede usar el parámetro Persist de para crear unidades de
New-PSDrive
red asignadas de Windows. A diferencia de las unidades temporales de PowerShell, las unidades de red asignadas por Windows no son específicas de la sesión. Se guardan en Windows y se pueden administrar mediante herramientas estándar de Windows, como Explorador de archivos y uso neto. Las unidades de red asignadas deben tener un nombre de letra de unidad y estar conectadas a una ubicación del sistema de archivos remoto. Cuando el comando se limita localmente, no hay ningún origen de puntos, el parámetro Persist no conserva la creación de un PSDrive más allá del ámbito en el que se ejecuta el comando. Si se ejecutaNew-PSDrive
dentro de un script y desea que la unidad persista indefinidamente, debe generar puntos en el script. Para obtener los mejores resultados, para forzar que una nueva unidad persista indefinidamente, agregue el parámetro Scope al comando y establezca su valor en Global. Para obtener más información sobre dot-sourcing, consulte about_Scripts. - Unidades externas. Cuando una unidad externa está conectada al equipo, PowerShell agrega automáticamente un PSDrive al sistema de archivos que representa la nueva unidad. No tiene que reiniciar PowerShell. Del mismo modo, cuando se desconecta una unidad externa del equipo, PowerShell elimina automáticamente el PSDrive que representa la unidad eliminada.
- Credenciales para rutas de acceso de convención de nomenclatura universal (UNC).
Cuando el valor del parámetro Root es una ruta de acceso UNC, como \\Server\Share
, la credencial especificada en el valor del parámetro Credential se usa para crear psDrive. De lo contrario, la credencial no es efectiva cuando se crean nuevas unidades del sistema de archivos.
Algunos ejemplos de código usan la expansión para reducir la longitud de línea y mejorar la legibilidad. Para obtener más información, consulte about_Splatting.
Nota:
A menos que use el parámetro Scope , psDrives se crean en el ámbito en el que se ejecuta el New-PSDrive
comando.
Ejemplos
Ejemplo 1: Creación de una unidad temporal asignada a un recurso compartido de red
En este ejemplo se crea una unidad temporal de PowerShell asignada a un recurso compartido de red.
New-PSDrive -Name "Public" -PSProvider "FileSystem" -Root "\\Server01\Public"
Name Provider Root
---- -------- ----
Public FileSystem \\Server01\Public
New-PSDrive
usa el parámetro Name para especificar la unidad de PowerShell denominada Public
y el parámetro PSProvider para especificar el proveedor de PowerShellFileSystem
. El parámetro Root especifica la ruta de acceso UNC del recurso compartido de red.
Para ver el contenido desde una sesión de PowerShell: Get-ChildItem -Path Public:
Ejemplo 2: Creación de una unidad temporal asignada a un directorio local
En este ejemplo se crea una unidad temporal de PowerShell que proporciona acceso a un directorio en el equipo local.
$parameters = @{
Name = "MyDocs"
PSProvider = "FileSystem"
Root = "C:\Users\User01\Documents"
Description = "Maps to my My Documents folder."
}
New-PSDrive @parameters
Name Provider Root
---- -------- ----
MyDocs FileSystem C:\Users\User01\Documents
La expansión crea las claves y los valores de los parámetros. El parámetro Name especifica el nombre de la unidad, MyDocs. El parámetro PSProvider especifica el proveedor de PowerShell FileSystem
. Root especifica el directorio del equipo local. El parámetro Description describe el propósito de la unidad. New-PSDrive
usa los parámetros de la placa para crear la MyDocs
unidad.
Para ver el contenido desde una sesión de PowerShell: Get-ChildItem -Path MyDocs:
Ejemplo 3: Creación de una unidad temporal para una clave del Registro
En este ejemplo se crea una unidad temporal de PowerShell que proporciona acceso a una clave del Registro. Crea una unidad denominada MyCompany que se asigna a la clave del HKLM:\Software\MyCompany
Registro.
New-PSDrive -Name "MyCompany" -PSProvider "Registry" -Root "HKLM:\Software\MyCompany"
Name Provider Root
---- -------- ----
MyCompany Registry HKLM:\Software\MyCompany
New-PSDrive
usa el parámetro Name para especificar la unidad de PowerShell denominada MyCompany
y el parámetro PSProvider para especificar el proveedor de PowerShellRegistry
. El parámetro Root especifica la ubicación del Registro.
Para ver el contenido desde una sesión de PowerShell: Get-ChildItem -Path MyCompany:
Ejemplo 4: Creación de una unidad de red asignada persistente mediante credenciales
En este ejemplo se asigna una unidad de red autenticada con las credenciales de una cuenta de servicio de dominio. Para obtener más información sobre el objeto PSCredential que almacena las credenciales y cómo se almacenan las contraseñas como secureString, consulte la descripción del parámetro Credential .
$cred = Get-Credential -Credential Contoso\ServiceAccount
New-PSDrive -Name "S" -Root "\\Server01\Scripts" -Persist -PSProvider "FileSystem" -Credential $cred
Net Use
Status Local Remote Network
---------------------------------------------------------
OK S: \\Server01\Scripts Microsoft Windows Network
Nota:
Recuerde que, si usa el fragmento de código anterior en un script, establezca el valor del parámetro Scope en "Global" para asegurarse de que la unidad persiste fuera del ámbito actual.
La $cred
variable almacena un objeto PSCredential que contiene las credenciales de la cuenta de servicio. Get-Credential
le pide que escriba la contraseña almacenada en secureString.
New-PSDrive
crea la unidad de red asignada mediante varios parámetros. Name especifica la letra de S
unidad que Windows acepta. y Root define \\Server01\Scripts
como la ubicación en un equipo remoto. Persist crea una unidad de red asignada de Windows que se guarda en el equipo local. PSProvider especifica el FileSystem
proveedor. Credential usa la $cred
variable para obtener las credenciales de la cuenta de servicio para la autenticación.
La unidad asignada se puede ver en el equipo local en sesiones de PowerShell, Explorador de archivos y con herramientas como net use. Para ver el contenido desde una sesión de PowerShell: Get-ChildItem -Path S:
Ejemplo 5: Crear unidades temporales y persistentes
En este ejemplo se muestra la diferencia entre una unidad de red asignada persistente y una unidad temporal de PowerShell asignada al mismo recurso compartido de red.
Si cierra la sesión de PowerShell y, a continuación, abre una nueva sesión, el archivo temporal PSDrive:
no está disponible, pero la unidad persistente X:
está disponible. Al decidir qué método usar para asignar unidades de red, tenga en cuenta cómo usará la unidad. Por ejemplo, si tiene que ser persistente y si la unidad tiene que ser visible para otras características de Windows.
# Create a temporary PowerShell drive called PSDrive:
# that's mapped to the \\Server01\Public network share.
New-PSDrive -Name "PSDrive" -PSProvider "FileSystem" -Root "\\Server01\Public"
# Use the Persist parameter of New-PSDrive to create the X: mapped network drive,
# which is also mapped to the \\Server01\Public network share.
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
# Now, you can use the Get-PSDrive drive cmdlet to examine the two drives.
# The drives appear to be the same, although the network share name appears only
# in the root of the PSDrive: drive.
Get-PSDrive -Name "PSDrive", "X"
Name Provider Root
---- -------- ----
PsDrive FileSystem \\Server01\public
X FileSystem X:\
# Get-Member cmdlet shows that the drives have the same object type,
# System.Management.Automation.PSDriveInfo.
Get-PSDrive "PSDrive", "x" | Get-Member
TypeName: System.Management.Automation.PSDriveInfo
Name MemberType Definition
---- ---------- ----------
CompareTo Method System.Int32 CompareTo(PSDriveInfo drive),
Equals Method System.Boolean Equals(Object obj),
GetHashCode Method System.Int32 GetHashCode()
...
# Net Use and Get-CimInstance for the Win32_LogicalDisk class,
# and Win32_NetworkConnection class find only the persistent X: drive.
# PowerShell temporary drives are known only to PowerShell.
Net Use
Get-CimInstance Win32_LogicalDisk | Format-Table -Property DeviceID
Get-CimInstance Win32_NetworkConnection
Status Local Remote Network
--------------------------------------------------------
OK X: \\contoso-pc\data Microsoft Windows Network
deviceid
--------
C:
D:
X:
LocalName RemoteName ConnectionState Status
--------- ---------- --------------- ------
X: \\products\public Disconnected Unavailable
Ejemplo 6: Creación de una unidad persistente en un script
PsDrives se crean en el ámbito en el que se ejecuta el New-PSDrive
comando. Cuando el comando se ejecuta dentro de un script, la asignación de unidades es local al script. Cuando se cierra el script, la unidad ya no está disponible.
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public" -Scope Global
Para asegurarse de que la unidad está disponible fuera del script, debe usar el parámetro Scope para crear la unidad en el ámbito global .
Parámetros
-Confirm
Le solicita su confirmación antes de ejecutar el cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Credential
Especifica una cuenta de usuario que tiene permiso para realizar esta acción. El valor predeterminado es el usuario actual.
Dado que PowerShell 3.0, cuando el valor del parámetro Root es una ruta de acceso UNC, puede usar credenciales para crear unidades del sistema de archivos.
Escriba un nombre de usuario, como User01 o Domain01\User01, o escriba un objeto PSCredential generado por el Get-Credential
cmdlet . Si escribe un nombre de usuario, se le pedirá que escriba la contraseña.
Las credenciales se almacenan en un objeto PSCredential y la contraseña se almacena como SecureString.
Nota:
Para obtener más información sobre la protección de datos SecureString , consulte ¿Cómo es secure is SecureString?.
Tipo: | PSCredential |
Posición: | Named |
Valor predeterminado: | Current user |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Description
Especifica una breve descripción de texto de la unidad. Escriba cualquier cadena.
Para ver las descripciones de todas las unidades de la sesión, Get-PSDrive | Format-Table Name, Description
.
Para ver la descripción de una unidad determinada, escriba (Get-PSDrive <DriveName>).Description
.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Name
Especifica un nombre para la nueva unidad. Para las unidades de red asignadas persistentes, use una letra de unidad. En el caso de las unidades de PowerShell temporales, no se limita a las letras de unidad, use ninguna cadena válida.
Tipo: | String |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Persist
Indica que este cmdlet crea una unidad de red asignada de Windows. El parámetro Persist solo está disponible en Windows.
Las unidades de red asignadas se guardan en Windows en el equipo local. Son persistentes, no específicas de la sesión, y se pueden ver y administrar en Explorador de archivos y otras herramientas.
Al definir el ámbito del comando localmente, sin dot-sourcing, el parámetro Persist no conserva la creación de un PSDrive más allá del ámbito en el que se ejecuta el comando. Si se ejecuta New-PSDrive
dentro de un script y desea que la nueva unidad persista indefinidamente, debe generar puntos en el script. Para obtener los mejores resultados, para forzar la conservación de una nueva unidad, especifique Global como valor del parámetro Scope e incluya Persist en el comando.
El nombre de la unidad debe ser una letra, como D
o E
. El valor del parámetro Root debe ser una ruta de acceso UNC de otro equipo. El valor del parámetro PSProvider debe ser FileSystem
.
Para desconectar una unidad de red asignada de Windows, use el Remove-PSDrive
cmdlet . Cuando desconecte una unidad de red asignada de Windows, la asignación se elimina permanentemente del equipo, no solo de la sesión actual.
las unidades de red asignadas son específicas de una cuenta de usuario. Las unidades asignadas creadas en sesiones con privilegios elevados o sesiones con la credencial de otro usuario no son visibles en las sesiones iniciadas con credenciales diferentes.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-PSProvider
Especifica el proveedor de PowerShell que admite unidades de este tipo.
Por ejemplo, si la unidad está asociada a un directorio de sistema de archivos o recurso compartido de red, el proveedor de PowerShell es FileSystem
. Si la unidad está asociada a una clave del Registro, el proveedor es Registry
.
Las unidades temporales de PowerShell se pueden asociar a cualquier proveedor de PowerShell. Las unidades de red asignadas solo se pueden asociar con el FileSystem
proveedor.
Para ver una lista de los proveedores en la sesión de PowerShell, use el Get-PSProvider
cmdlet .
Tipo: | String |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Root
Especifica la ubicación del almacén de datos a la que se asigna una unidad de PowerShell.
Por ejemplo, especifique un recurso compartido de red, como \\Server01\Public
, un directorio local, como C:\Program Files
, o una clave del Registro, como HKLM:\Software\Microsoft
.
Las unidades temporales de PowerShell se pueden asociar a una ubicación local o remota en cualquier unidad de proveedor compatible. Las unidades de red asignadas pueden asociarse con una ubicación del sistema de archivos en un equipo remoto.
Tipo: | String |
Posición: | 2 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Scope
Especifica un ámbito para la unidad. Los valores aceptables para este parámetro son: Global, Local y Script, o un número relativo al ámbito actual. El número de ámbitos es 0 al número de ámbitos. El número de ámbito actual es 0 y su elemento primario es 1. Para obtener más información, consulte about_Scopes.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | Local |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-UseTransaction
Incluye el comando en la transacción activa. Este parámetro solo es válido cuando hay una transacción en curso. Para obtener más información, consulte about_Transactions.
Tipo: | SwitchParameter |
Alias: | usetx |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-WhatIf
Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Alias: | wi |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
None
No se pueden canalizar objetos a este cmdlet
Salidas
Este cmdlet devuelve un objeto PSDriveInfo que representa la unidad creada.
Notas
Windows PowerShell incluye los siguientes alias para New-PSDrive
:
mount
ndr
New-PSDrive
está diseñado para trabajar con los datos expuestos por cualquier proveedor. Para enumerar los proveedores disponibles en la sesión, use Get-PSProvider
. Para obtener más información sobre los proveedores, consulte about_Providers.
las unidades de red asignadas son específicas de una cuenta de usuario. Las unidades asignadas creadas en sesiones con privilegios elevados o sesiones con la credencial de otro usuario no son visibles en las sesiones iniciadas con credenciales diferentes.