New-PSDrive

创建与项目数据存储中的位置关联的临时和永久驱动器。

语法

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

说明

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

临时驱动器仅存在于当前 PowerShell 会话中以及在当前会话中创建的会话中。 它们可以用在 PowerShell 中有效的任意名称来命名,并且可以映射到任何位置或远程资源。 如同操作任何映射网络驱动器一样,你可以使用临时 PowerShell 驱动器访问关联数据存储中的数据。 可以使用 Set-Location 更改驱动器中的位置,并使用 Get-ItemGet-ChildItem 访问驱动器的内容。

由于只有 PowerShell 能识别临时驱动器,因此不能使用文件资源管理器、Windows Management Instrumentation (WMI)、组件对象模型 (COM)、Microsoft .NET Framework 或诸如 net use 之类的工具来访问它们。

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

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

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

一些代码示例使用 splatting 来减少行长度并提高可读性。 有关详细信息,请参阅 about_Splatting

注意

除非使用 Scope 参数,否则将在运行 New-PSDrive 命令的范围内创建 PSDrive。

示例

示例 1:创建映射到网络共享的临时驱动器

此示例创建映射到网络共享的临时 PowerShell 驱动器。

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

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

New-PSDrive 使用 Name 参数指定名为 Public 的 PowerShell 驱动器,并使用 PSProvider 参数指定 PowerShell FileSystem 提供程序。 Root 参数指定网络共享的 UNC 路径。

若要查看 PowerShell 会话中的内容:Get-ChildItem -Path Public:

示例 2:创建映射到本地目录的临时驱动器

此示例创建一个临时 PowerShell 驱动器,该驱动器提供对本地计算机上的目录的访问权限。

$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

Splatting 创建参数键和值。 Name 参数指定驱动器名称 MyDocsPSProvider 参数指定 PowerShell FileSystem 提供程序。 Root 指定本地计算机的目录。 Description 参数描述驱动器的目的。 New-PSDrive 使用 splatted 参数来创建 MyDocs 驱动器。

若要查看 PowerShell 会话中的内容:Get-ChildItem -Path MyDocs:

示例 3:为注册表项创建临时驱动器

此示例创建一个临时 PowerShell 驱动器,该驱动器提供对注册表项的访问权限。 该命令创建一个名为 MyCompany 的驱动器,该驱动器映射到 HKLM:\Software\MyCompany 注册表项。

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

Name           Provider      Root
----           --------      ----
MyCompany      Registry      HKLM:\Software\MyCompany

New-PSDrive 使用 Name 参数指定名为 MyCompany 的 PowerShell 驱动器,并使用 PSProvider 参数指定 PowerShell Registry 提供程序。 Root 参数指定注册表位置。

若要查看 PowerShell 会话中的内容:Get-ChildItem -Path MyCompany:

示例 4:使用凭据创建持久映射网络驱动器

此示例映射使用域服务帐户的凭据进行身份验证的网络驱动器。 有关存储凭据的 PSCredential 对象以及如何将密码存储为 SecureString 的详细信息,请参阅 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

注意

请记住,如果在脚本中使用上述代码段,请将 Scope 参数值设置为“Global”,以确保驱动器持续存在于当前范围之外。

$cred 变量存储包含服务帐户凭据的 PSCredential 对象。 Get-Credential 提示输入存储在 SecureString 中的密码。

New-PSDrive 使用多个参数创建映射的网络驱动器。 Name 指定 Windows 接受的 S 驱动器盘符。 Root\\Server01\Scripts 定义为远程计算机上的位置。 Persist 会创建保存在本地计算机上的 Windows 映射网络驱动器。 PSProvider 指定 FileSystem 提供程序。 Credential 使用 $cred 变量来获取用于身份验证的服务帐户凭据。

可以在本地计算机上的 PowerShell 会话、文件资源管理器以及使用 net use 等工具查看映射的驱动器。 若要查看 PowerShell 会话中的内容:Get-ChildItem -Path S:

示例 5:创建持久驱动器和临时驱动器

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

如果关闭 PowerShell 会话,然后打开新会话,则临时 PSDrive: 驱动器不可用,但持久 X: 驱动器可用。 在决定使用哪种方法来映射网络驱动器时,请考虑你将如何使用该驱动器。 例如,它是否必须是持久的,以及驱动器是否必须对其他 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

示例 6:在脚本中创建永久驱动器

PSDrive 是在运行 New-PSDrive 命令的范围内创建的。 当该命令在脚本中运行时,驱动器映射是脚本的本地驱动器映射。 当脚本退出时,驱动器将不再可用。

New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public" -Scope Global

要确保驱动器在脚本外部可用,必须使用 Scope 参数在 Global 范围内创建驱动器。

参数

-Confirm

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

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

-Credential

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

从 PowerShell 3.0 开始,当 Root 参数的值为 UNC 路径时,可以使用凭据创建文件系统驱动器。

键入用户名,如 User01Domain01\User01;或输入 Get-Credential cmdlet 生成的 PSCredential 对象。 如果键入用户名,系统会提示输入密码。

凭据存储在 PSCredential 对象中,密码存储为 SecureString

注意

有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?

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 映射网络驱动器。 Persist 参数仅在 Windows 上可用。

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

在本地设置命令范围且没有点源时,Persist 参数不会在运行命令的范围之外保留 PSDrive 的创建。 如果在脚本内运行 New-PSDrive,并且希望新驱动器无限期地保留,则必须对该脚本进行点源化。 为了获得最佳结果,要强制保留新驱动器,请将 Global 指定为 Scope 参数的值,并在命令中包含 Persist

驱动器的名称必须是字母,例如 DERoot 参数的值必须是另一台计算机的 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

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

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

此 cmdlet 将返回表示所创建驱动器的 PSDriveInfo 对象。

备注

PowerShell 包含 Get-PSDrive 的以下别名:

  • 所有平台:
    • ndr
  • Windows:
    • mount

New-PSDrive 旨在处理任何提供程序公开的数据。 若要列出会话中可用的提供程序,请使用 Get-PSProvider。 有关提供程序的详细信息,请参阅 about_Providers

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