New-PSDrive
在当前会话中创建 Windows PowerShell 驱动器。
语法
New-PSDrive [-Name] <string> [-PSProvider] <string> [-Root] <string> [-Credential <PSCredential>] [-Description <string>] [-Scope <string>] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]
说明
New-PSDrive cmdlet 创建“映射到”数据存储(如网络驱动器、本地计算机上的目录或注册表项)中的某一位置或与之关联的一个 Windows PowerShell 驱动器。
就像操作任何映射驱动器那样,可以使用创建的 Windows PowerShell 驱动器访问关联数据存储中的数据。可以更改驱动器中的位置(使用“set-location”、“cd”或“chdir”),并且可以访问驱动器的内容(使用“get-item”、“get-childitem”或“dir”)。
但是,Windows PowerShell 驱动器仅对 Windows PowerShell 是已知的。不能使用 Windows 资源管理器、Windows Management Instrumentation (WMI)、组件对象模型 (COM)、Microsoft .NET Framework 或使用类似 Net Use 的工具访问这些驱动器。
Windows PowerShell 驱动器仅存在于当前 Windows PowerShell 会话中。要使驱动器具有持久性,可以导出在其中添加了驱动器的会话,或者在 Windows PowerShell 配置文件中保存 New-PSDrive 命令。
要删除 New-PSDrive 所创建的驱动器,请使用 Remove-PSDrive cmdlet。
参数
-Credential <PSCredential>
指定有权执行此操作的用户帐户。默认值为当前用户。
键入用户名,例如“User01”或“Domain01\User01”。或者,输入 PSCredential 对象,例如由 Get-Credential cmdlet 生成的对象。如果键入用户名,则将提示您输入密码。
随同 Windows PowerShell 一起安装的任何提供程序都不支持此参数。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Description <string>
指定驱动器的简短文本说明。可键入任意字符串。
要查看系统上所有 Windows PowerShell 驱动器的说明,请键入“get-psdrive | format name, description”。要查看特定 Windows PowerShell 驱动器的说明,请键入“(get-psdrive <DriveName>).description”。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Name <string>
指定新驱动器的名称。可以对该名称使用任意有效字符串,而不仅限于驱动器号。Windows PowerShell 驱动器名称区分大小写。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-PSProvider <string>
指定支持此类型的驱动器的 Windows PowerShell 提供程序。
例如,如果 Windows PowerShell 驱动器与网络共享或文件系统目录关联,则 Windows PowerShell 提供程序为“FileSystem”。如果 Windows PowerShell 驱动器与注册表项关联,则提供程序为“Registry”。
要查看 Windows PowerShell 会话中提供程序的列表,请键入“get-psprovider”。
是否为必需? |
true |
位置? |
2 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Root <string>
指定 Windows PowerShell 驱动器映射到的数据存储位置。
例如,指定网络共享(如 \\Server01\Public)、本地目录(如 C:\Program Files)或注册表项(如 HKLM:\Software\Microsoft)。
是否为必需? |
true |
位置? |
3 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Scope <string>
指定驱动器的作用域。有效值包括“Global”、“Local”、“Script”或者相对于当前作用域的数字(0 到作用域数,其中 0 是指当前作用域,1 是指其父作用域)。默认值为“Local”。有关详细信息,请参阅 about_Scopes。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Confirm
在执行命令之前提示您进行确认。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-WhatIf
描述如果执行该命令会发生什么情况(无需实际执行该命令)。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-UseTransaction
将命令包含在活动事务中。仅当正在执行事务时,此参数才有效。有关详细信息,请参阅 about_Transactions。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
无 不能通过管道将输入传递给此 cmdlet。 |
输出 |
System.Management.Automation.PSDriveInfo |
说明
New-PSDrive cmdlet 用于处理由任何提供程序公开的数据。要列出会话中可用的提供程序,请键入“get-psprovider”。有关详细信息,请参阅 about_Providers。
示例 1
C:\PS>new-psdrive -name P -psprovider FileSystem -root \\Server01\Public
Name Provider Root
---- -------- ----
P FileSystem \\Server01\Public
说明
-----------
此命令创建一个 Windows PowerShell 驱动器,其功能类似于 Windows 中的映射网络驱动器。该命令创建一个名为 P: 的 Windows PowerShell 驱动器,该驱动器映射到 \\Server01\Public 网络共享。
该命令使用 Name 参数指定该驱动器的名称,使用 PSProvider 参数指定 Windows PowerShell FileSystem 提供程序,使用 Root 参数指定网络共享。
该命令完成后,\\Server01\Public 共享的内容即会显示在 P: 驱动器中。要查看这些内容,请键入:“dir p:”。
示例 2
C:\PS>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
说明
-----------
此命令创建一个 Windows PowerShell 驱动器,用于提供对本地目录的快速访问。该命令创建一个名为 MyDocs: 的驱动器,该驱动器映射到本地计算机上的
“C:\Documents and Settings\User01\My Documents”目录。
该命令使用 Name 参数指定该驱动器的名称,使用 PSProvider 参数指定 Windows PowerShell FileSystem 提供程序,使用 Root 参数指定 My Documents 文件夹的路径,使用 Description 参数创建该驱动器的说明。
该命令完成后,My Documents 文件夹的内容即会显示在 MyDocs: 驱动器中。要查看这些内容,请键入:“dir mydocs:”。
示例 3
C:\PS>new-psdrive -name MyCompany -psprovider Registry -root HKLM:\Software\MyCompany
Name Provider Root
---- -------- ----
MyCompany Registry HKEY_LOCAL_MACHINE\Software\MyCo...
说明
-----------
此命令创建一个 Windows PowerShell 驱动器,用于提供对经常查看的注册表项的快速访问。该命令创建一个名为 MyCompany 的驱动器,该驱动器映射到 HKLM\Software\MyCompany 注册表项。
该命令使用 Name 参数指定该驱动器的名称,使用 PSProvider 参数指定 Windows PowerShell Registry 提供程序,使用 Root 参数指定注册表项。
该命令完成后,MyCompany 项的内容即会显示在 MyCompany: 驱动器中。要查看这些内容,请键入:“dir MyCompany:”。
示例 4
C:\PS>new-psdrive -name PsDrive -psprovider FileSystem -root \\Server01\Public
C:\PS> $drive = new-object -com wscript.network
C:\PS> $drive.MapNetworkDrive("X:", "\\Server01\Public")
C PS:\> get-psdrive public, x
Name Provider Root
---- -------- ----
PsDrive FileSystem \\Server01\public
X FileSystem X:\
C:\PS>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()
...
C:\PS> net use
Status Local Remote Network
---------------------------------------------------------------------------
X: \\server01\public Microsoft Windows Network
C:\PS> get-wmiobject win32_logicaldisk | ft deviceid
deviceid
--------
C:
D:
X:
C:\PS> get-wmiobject win32_networkconnection
LocalName RemoteName ConnectionState Status
--------- ---------- --------------- ------
X: \\products\public Disconnected Unavailable
说明
-----------
此示例说明映射到网络共享的 Windows 驱动器与映射到同一网络共享的 Windows PowerShell 驱动器之间的区别。
第一条命令使用 New-PSDrive cmdlet 创建一个名为 PSDrive: 的 Windows PowerShell 驱动器,该驱动器映射到 \\Server01\Public 网络共享。
第二组命令使用 New-Object cmdlet 创建一个 Wscript.Network COM 对象,然后使用其 MapNetworkDrive 方法将 \\Server01\Public 网络共享映射到本地计算机上的 X: 驱动器。
现在,可以检查这两个驱动器。执行 Get-PSDrive 驱动器命令后,这两个驱动器看起来似乎相同,但网络共享名称仅显示在 PSDrive: 驱动器的根目录中。
将这两个驱动器对象发送给 Get-Member 后,显示它们具有相同的对象类型 System.Management.Automation.PSDriveInfo。
但是,执行“net use”命令、对 Win32_LogicalDisk 类执行 Get-WmiObject 命令并对 Win32_NetworkConnection 类执行 Get-WmiObject 命令后,发现只有 X: 驱动器是使用 Wscript.Network 对象创建的。这是因为 Windows PowerShell 驱动器仅对 Windows PowerShell 是已知的。
如果关闭 Windows PowerShell 会话然后再打开一个新的会话,则 PSDrive: 驱动器将消失,而 X: 驱动器仍将保留。
因此,在决定使用哪一方法映射网络驱动器时,请考虑将如何使用驱动器,是否需要保留它,以及对 Windows 的其他功能而言,是否需要驱动器保持可见。