New-PSDrive

Crea unidades temporales y persistentes asociadas a una ubicación en un almacén de datos de elementos.

Syntax

New-PSDrive
   [-Name] <String>
   [-PSProvider] <String>
   [-Root] <String>
   [-Description <String>]
   [-Scope <String>]
   [-Persist]
   [-Credential <PSCredential>]
   [-WhatIf]
   [-Confirm]
   [<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-Locationy 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 ejecuta New-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-PSDriveusa 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-PSDriveusa 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-Credentialle 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.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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?.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters: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.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:True
Accept wildcard characters: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 .

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:String
Position:2
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:String
Position:Named
Default value:Local
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

None

No se pueden canalizar objetos a este cmdlet

Salidas

PSDriveInfo

Este cmdlet devuelve un objeto PSDriveInfo que representa la unidad creada.

Notas

PowerShell incluye los siguientes alias para Get-PSDrive:

  • Todas las plataformas:
    • ndr
  • Windows:
    • mount

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.