当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 新PSDrive(Microsoft.PowerShell.管理)

作者:精品下载站 日期:2024-12-14 02:11:42 浏览:15 分类:玩电脑

新PSDrive(Microsoft.PowerShell.管理)


新PSDrive

模块 :Microsoft.PowerShell.Management

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

句法

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,并且希望驱动器无限期地保留,则必须对脚本进行点源化。为了获得最佳结果,要强制新驱动器无限期保留,请将范围参数添加到命令中,并将其值设置为全局。有关点源的更多信息,请参阅 about_Scripts。
  • 外部驱动器。当外部驱动器连接到计算机时,PowerShell 会自动将 PSDrive 添加到代表新驱动器的文件系统中。您不必重新启动 PowerShell。同样,当外部驱动器与计算机断开连接时,PowerShell 会自动删除代表已删除驱动器的 PSDrive
  • 通用命名约定 (UNC) 路径的凭据。

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

一些代码示例使用展开来减少行长度并提高可读性。有关详细信息,请参阅 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 文件系统提供者。 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

泼溅创建参数键和值。 Name 参数指定驱动器名称 MyDocsPSProvider 参数指定 PowerShell FileSystem 提供程序。 Root 指定本地计算机的目录。 描述参数描述了驱动器的用途。 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 注册表提供商。 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

笔记

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

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

New-PSDrive 使用多个参数创建映射的网络驱动器。 名称指定Windows接受的S驱动器号。 Root\Server01\Scripts 定义为远程计算机上的位置。 保留创建保存在本地计算机上的 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

要确保驱动器在脚本外部可用,您必须使用范围参数在全局范围中创建驱动器。

参数

-Confirm

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

类型 :

SwitchParameter

别名:

cf

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Credential

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

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

输入用户名,例如 User01Domain01\User01,或输入由 Get-Credential cmdlet。如果您键入用户名,系统会提示您输入密码。

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

笔记

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

类型 :

PS凭证

位置:

命名

默认值:

当前用户

必需的:

False

接受管道输入:

True

接受通配符:

False

-Description

指定驱动器的简短文本描述。输入任意字符串。

要查看所有会话驱动器的描述,Get-PSDrive |格式-表名称、描述

要查看特定驱动器的描述,请键入 (Get-PSDrive ).Description

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-Name

指定新驱动器的名称。对于持久映射网络驱动器,请使用驱动器号。对于临时 PowerShell 驱动器,您不受驱动器号的限制,可以使用任何有效的字符串。

类型 :

String

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Persist

指示此 cmdlet 创建 Windows 映射网络驱动器。 Persist 参数仅在 Windows 上可用。

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

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

驱动器的名称必须是字母,例如 DERoot 参数的值必须是另一台计算机的 UNC 路径。 PSProvider 参数的值必须是FileSystem

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

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

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

True

接受通配符:

False

-PSProvider

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

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

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

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

类型 :

String

位置:

1

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Root

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

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

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

类型 :

String

位置:

2

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Scope

指定驱动器的范围。此参数可接受的值为:全局本地脚本,或相对于当前范围的数字。范围编号 0 到范围数量。当前作用域编号为 0,其父作用域编号为 1。有关详细信息,请参阅 about_Scopes。

类型 :

String

位置:

命名

默认值:

当地的

必需的:

False

接受管道输入:

True

接受通配符:

False

-WhatIf

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

类型 :

SwitchParameter

别名:

wi

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

您无法将对象通过管道传输到此 cmdlet

输出

PSDriveInfo

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

笔记

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

  • 所有平台:

      ndr
  • Windows:

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

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

      您需要 登录账户 后才能发表评论

      取消回复欢迎 发表评论:

      关灯