New-PSDrive

创建临时映射网络驱动器和永久映射网络驱动器

语法

New-PSDrive
   [-Name] <String>
   [-PSProvider] <String>
   [-Root] <String>
   [-Description <String>]
   [-Scope <String>]
   [-Persist]
   [-Credential <PSCredential>]
   [-WhatIf]
   [-Confirm]
   [-UseTransaction]
   [<CommonParameters>]

说明

New-PSDrive cmdlet 创建映射到数据存储中某个位置或与之关联的临时和永久性驱动器,例如网络驱动器、本地计算机上的目录或注册表项,以及与远程计算机上的文件系统位置关联的永久性 Windows 映射网络驱动器。

临时驱动器仅存在于当前 PowerShell 会话和你在当前会话中创建的会话中。 它们可以具有在 PowerShell 中有效的任何名称,并且可以映射到任何本地或远程资源。 可以使用临时 PowerShell 驱动器访问关联数据存储中的数据,就像使用任何映射的网络驱动器一样。 可以使用 、Set-Locationcdchdir 将位置更改为驱动器,并使用 Get-ItemGet-ChildItemdir 访问驱动器的内容。

但是,由于只有 PowerShell 才知道临时驱动器,因此无法使用 文件资源管理器、Windows Management Instrumentation (WMI) 、组件对象模型 (COM) 、Microsoft .NET Framework或使用 Net Use 等工具访问它们。

Windows PowerShell 3.0 中添加了New-PSDrive以下功能:

  • 映射的网络驱动器。 可以使用 的 Persist 参数 New-PSDrive 创建 Windows 映射网络驱动器。 与临时 PowerShell 驱动器不同,Windows 映射的网络驱动器不是特定于会话的。 它们保存在 Windows 中,可以使用标准 Windows 工具(如 文件资源管理器 和 Net Use)进行管理。 映射网络驱动器必须以驱动器号命名,并且连接到某个远程文件系统位置。 当命令的作用域在本地 (无点源) 时, Persist 参数不会将 PSDrive 的创建保留到运行命令的范围之外。 如果在脚本中运行 New-PSDrive ,并且希望驱动器无限期保留,则必须对脚本进行点源。 为了获得最佳结果,若要强制新驱动器无限期保留,请将 Scope 参数添加到命令,并将其值设置为 Global。
  • 外部驱动器。 当外部驱动器连接到计算机时,PowerShell 会自动将 PSDrive 添加到表示新驱动器的文件系统。 无需重启 PowerShell。 同样,当外部驱动器与计算机断开连接时,PowerShell 会自动删除表示已删除驱动器的 PSDrive
  • UNC 路径的凭据。

如果 Root 参数的值是 UNC 路径(如 \\Server\Share),则使用 Credential 参数的值中指定的 凭据 来创建 PSDrive。 否则,创建新的文件系统驱动器时 ,凭据 无效。

示例

示例 1:Create映射到网络共享的驱动器

New-PSDrive -Name "P" -PSProvider "FileSystem" -Root "\\Server01\Public"

Name       Provider      Root
----       --------      ----
P          FileSystem    \\Server01\Public

此命令创建一个名为 P: 的临时 PowerShell 驱动器,该驱动器映射到 \\Server01\公用网络共享。

它使用 Name 参数指定驱动器的名称, 使用 PSProvider 参数指定 PowerShell FileSystem 提供程序,并使用 Root 参数指定网络共享。

命令完成后,\\Server01\Public 共享的内容将显示在 P: 驱动器中。 若要查看它们,请键入: dir P:

示例 2:Create临时驱动器

New-PSDrive -Name MyDocs -PSProvider FileSystem -Root "C:\Documents and Settings\User01\My Documents" -Description "Maps to my My Documents folder."

Name       Provider      Root
----       --------      ----
MyDocs     FileSystem    C:\Documents and Settings\User01\My Documents

此命令创建一个临时 PowerShell 驱动器,该驱动器提供对本地目录的快速访问。 它创建一个名为 MyDocs: 的驱动器,该驱动器映射到本地计算机的“C:\Documents and Settings\User01\My Documents”目录。

它使用 Name 指定驱动器的名称, 使用 PSProvider 指定 PowerShell FileSystem 提供程序, 使用 Root 指定“我的文档”文件夹的路径,使用 Description 参数创建驱动器的说明。

命令完成后,“我的文档”文件夹的内容将显示在驱动器中 MyDocs: 。 若要查看它们,请键入: dir MyDocs:

示例 3:为注册表项Create驱动器

New-PSDrive -Name "MyCompany" -PSProvider "Registry" -Root "HKLM:\Software\MyCompany"

Name       Provider      Root
----       --------      ----
MyCompany  Registry      HKEY_LOCAL_MACHINE\Software\MyCo...

此命令创建一个临时 PowerShell 驱动器,用于快速访问经常检查的注册表项。 它创建一个名为 MyCompany 的驱动器,该驱动器映射到 HKLM\Software\MyCompany 注册表项。

它使用 Name 指定驱动器的名称, 使用 PSProvider 指定 PowerShell 注册表提供程序,使用 Root 指定注册表项。

命令完成后,MyCompany 密钥的内容将显示在驱动器中 MyCompany: 。 若要查看它们,请键入: dir MyCompany:

示例 4:Create持久化映射网络驱动器

New-PSDrive -Name "S" -Root "\\Server01\Scripts" -Persist -PSProvider "FileSystem"
Net Use

Status       Local     Remote                    Network
---------------------------------------------------------
OK           S:        \\Server01\Scripts        Microsoft Windows Network

此命令在本地计算机上创建“S”映射的网络驱动器。 “S”驱动器映射到 \\Server01\Scripts 网络共享。

命令使用 New-PSDrive 创建映射的网络驱动器。 它使用 Persist 创建保存在本地计算机上的 Windows 映射网络驱动器。

命令使用 Name 指定 Windows 接受的字母名称,使用 Root 指定远程计算机上的位置。 它使用 PSProvider 指定 FileSystem 提供程序。

可以在本地计算机上的其他 PowerShell 会话、Windows 资源管理器和其他工具(如 Net Use)中查看生成的驱动器。

示例 5:Create永久性驱动器和临时驱动器

# Create a temporary PowerShell drive called PSDrive: that is 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-WmiObject 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-WmiObject Win32_LogicalDisk | Format-Table -Property DeviceID
Get-WmiObject 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

此示例演示永久性映射网络驱动器与映射到同一网络共享的临时 PowerShell 驱动器之间的差异。

如果关闭 PowerShell 会话,然后打开一个新会话,PSDrive: 驱动器将消失,并且 X: 驱动器会保留。 因此,在决定使用哪种方法映射网络驱动器时,请考虑该驱动器的使用方式、驱动器是否必须持久,以及驱动器是否必须对其他 Windows 功能可见。

参数

-Confirm

提示你在运行 cmdlet 之前进行确认。

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

-Credential

指定有权执行此操作的用户帐户。 默认为当前用户。

键入用户名,如“User01”或“Domain01\User01”;或输入 PSCredential 对象,如 Get-Credential cmdlet 生成的一个 PSCredential 对象。 键入用户名时,此 cmdlet 会提示输入密码。

从 Windows PowerShell 3.0 开始,当 Root 参数的值为 UNC 路径时,可以使用凭据创建文件系统驱动器。 并非所有 PowerShell 提供程序都支持此参数。

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Description

指定驱动器的简短文本说明。 键入任意字符串。

若要查看会话中所有驱动器的说明,请键入 Get-PSDrive | Format-Table Name, Description。 若要查看特定驱动器的说明,请键入 (Get-PSDrive \<DriveName\>).Description

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

-Name

指定新驱动器的名称。 对于永久映射网络驱动器,请键入驱动器号。 对于临时 PowerShell 驱动器,请键入任何有效的字符串;不限于驱动器号。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Persist

指示此 cmdlet 创建 Windows 映射网络驱动器。 映射网络驱动器保存于本地计算机的 Windows 中。 它们是非会话特定的永久性驱动器,可以在文件资源管理器及其他工具中进行查看和管理。

在本地限定命令范围时,即不进行点溯源, Persist 参数不会将 PSDrive 的创建保留到运行命令的范围之外。 如果在脚本中运行 New-PSDrive ,并且希望新驱动器无限期保留,则必须对脚本进行点源。 为了获得最佳结果,若要强制新驱动器持久化,请指定 Global 作为 Scope 参数的值,并将 Persist 添加到命令。

驱动器的名称必须是字母,例如“D”或“E”。 Root 参数的值必须是不同计算机的 UNC 路径。 PSProvider 参数的值必须为 FileSystem。

若要断开 Windows 映射网络驱动器,请使用 Remove-PSDrive cmdlet。 在断开 Windows 映射网络驱动器时,将从计算机中永久删除该映射,而不仅是从当前会话中删除。

映射网络驱动器特定于用户帐户。 在使用其他凭据启动的会话中,在提升会话中创建的映射驱动器或使用其他用户凭据的会话不可见。

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

-PSProvider

指定支持此类驱动器的 PowerShell 提供程序。

例如,如果驱动器与网络共享或文件系统目录相关联,则 PowerShell 提供程序为 FileSystem。 如果驱动器与注册表项相关联,则提供程序为 Registry。

临时 PowerShell 驱动器可以与任何 PowerShell 提供程序相关联。 映射网络驱动器仅可与 FileSystem 提供程序关联。

若要查看 PowerShell 会话中的提供程序列表,请使用 Get-PSProvider cmdlet。

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Root

指定 PowerShell 驱动器映射到的数据存储位置。

例如,指定网络共享,例如 \\Server01\Public、本地目录(如 C:\Program Files)或注册表项(如 HKLM:\Software\Microsoft)。

临时 PowerShell 驱动器可以与任何受支持的提供程序驱动器上的本地或远程位置相关联。 映射网络驱动器只能与远程计算机上的文件系统位置关联。

Type:String
Position:2
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Scope

指定驱动器的作用域。 此参数的可接受值为:Global、Local 和 Script,或相对于当前范围的数字。 范围数 0 到范围数。 当前范围编号为 0,其父级为 1。 有关详细信息,请参阅 about_Scopes

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

-UseTransaction

在活动事务中使用该命令。 仅当正在执行事务时,此参数才有效。 有关详细信息,请参阅 about_Transactions

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

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 此 cmdlet 未运行。

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

输入

None

不能通过管道将输入传递给此 cmdlet。

输出

PSDriveInfo

备注

  • New-PSDrive 旨在处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请使用 Get-PSProvider。 有关提供程序的详细信息,请参阅 about_Providers
  • 映射网络驱动器特定于用户帐户。 在使用其他凭据启动的会话中,在提升会话中创建的映射驱动器或使用其他用户凭据的会话不可见。