New-PSDrive

建立與項目數據存放區中位置相關聯的暫存和永續性磁碟驅動器。

Syntax

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

Description

Cmdlet New-PSDrive 會建立暫存和持續性磁碟驅動器,這些磁碟驅動器會對應至或與數據存放區中的位置相關聯,例如網路驅動器機、本機計算機上的目錄或登錄機碼,以及與遠端電腦上文件系統位置相關聯的永續性 Windows 對應網路驅動器機。

暫存磁碟驅動器只存在於目前的PowerShell工作階段和您在目前工作階段中建立的工作階段中。 它們可以具有任何在PowerShell中有效的名稱,而且可以對應至任何本機或遠端資源。 您可以使用暫存 PowerShell 磁碟驅動器來存取相關聯數據存放區中的數據,就像使用任何對應的網路驅動器機一樣。 您可以使用 將位置變更為磁碟驅動器,Set-Location並使用 或Get-ChildItem存取磁碟驅動器Get-Item的內容。

因為只有 PowerShell 才知道暫存磁碟驅動器,因此您無法使用 檔案總管、Windows Management Instrumentation (WMI)、元件物件模型(COM)、Microsoft .NET Framework 或之類的net use工具加以存取。

PowerShell 3.0 中已新增 New-PSDrive 下列功能:

  • 對應的網路驅動器機。 您可以使用的 New-PSDrive Persist 參數來建立 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 否則,當您建立新的文件系統磁碟驅動器時, 認證 無效。

某些程式代碼範例會使用曲線來減少行長並改善可讀性。 如需詳細資訊,請參閱 about_Splatting

注意

除非您使用 Scope 參數,否則 PSDrive 會在執行命令的範圍 New-PSDrive 中建立。

範例

範例 1:建立對應至網路共用的暫存磁碟驅動器

此範例會建立對應至網路共用的暫存 PowerShell 磁碟驅動器。

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

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

New-PSDrive會使用 Name 參數來指定名為 PublicPowerShell 磁碟驅動器,並使用 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

展開會建立參數索引鍵和值。 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 參數來指定名為 MyCompanyPowerShell 磁碟驅動器,並使用 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 使用數個參數建立對應的網路驅動器機。 名稱 會指定 Windows 接受的 S 驅動器號。 和 Root\\Server01\Scripts 定義為遠端電腦上的位置。 保存 會建立儲存在本機電腦上的 Windows 對應網路驅動器機。 PSProviderFileSystem 指定提供者。 認證$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 參數在全域範圍中建立磁碟驅動器。

參數

-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 路徑時,您可以使用認證來建立文件系統磁碟驅動器。

輸入用戶名稱,例如User01或Domain01\User01,或輸入 Cmdlet 所產生的 Get-Credential 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

磁碟驅動器的名稱必須是字母,例如 DE。 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

指定磁碟驅動器的範圍。 此參數可接受的值為: GlobalLocalScript,或相對於目前範圍的數位。 範圍數位 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

此 Cmdlet 會傳 回代表所建立磁碟驅動器的 PSDriveInfo 物件。

備註

Windows PowerShell 包含下列的 New-PSDrive別名:

  • mount
  • ndr

New-PSDrive 是設計來使用任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請使用 Get-PSProvider。 如需提供者的詳細資訊,請參閱 about_Providers

對應的網路驅動器機專屬於用戶帳戶。 使用其他使用者的認證在提升許可權的會話或會話中建立的對應磁碟驅動器,不會顯示在使用不同認證啟動的會話中。