New-PSDrive
建立與項目數據存放區中位置相關聯的暫存和永續性磁碟驅動器。
語法
New-PSDrive
[-Name] <String>
[-PSProvider] <String>
[-Root] <String>
[-Description <String>]
[-Scope <String>]
[-Persist]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
New-PSDrive
Cmdlet 會建立暫存和持續性磁碟驅動器,這些磁碟驅動器會對應至或與數據存放區中的位置相關聯,例如網路驅動器機、本機計算機上的目錄或登錄機碼,以及與遠端電腦上文件系統位置相關聯的永續性 Windows 對應網路驅動器機。
暫存磁碟驅動器只存在於目前的PowerShell工作階段和您在目前工作階段中建立的工作階段中。 它們可以具有任何在PowerShell中有效的名稱,而且可以對應至任何本機或遠端資源。 您可以使用暫存 PowerShell 磁碟驅動器來存取相關聯數據存放區中的數據,就像使用任何對應的網路驅動器機一樣。 您可以使用 Set-Location
,將位置變更為磁碟驅動器,並使用 Get-Item
或 Get-ChildItem
存取磁碟驅動器的內容。
因為只有 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 參數來指定名為 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
展開會建立參數索引鍵和值。
Name 參數會指定磁碟驅動器名稱,MyDocs。
PSProvider 參數會指定 PowerShell FileSystem
提供者。
根目錄 指定本機計算機的目錄。
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
使用數個參數建立對應的網路驅動器機。
名稱 指定 Windows 接受的 S
驅動器號。 和 Root 會將 \\Server01\Scripts
定義為遠端電腦上的位置。
保存 會建立儲存在本機電腦上的 Windows 對應網路驅動器機。
PSProvider 指定 FileSystem
提供者。
認證 會使用 $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 之前,提示您進行確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Credential
指定具有執行此動作許可權的用戶帳戶。 預設值為目前的使用者。
由於 PowerShell 3.0,當 Root 參數的值是 UNC 路徑時,您可以使用認證來建立文件系統磁碟驅動器。
輸入使用者名稱,例如 User01 或 Domain01\User01,或輸入 Get-Credential
Cmdlet 所產生的 PSCredential 物件。 如果您輸入使用者名稱,系統會提示您輸入密碼。
認證會儲存在 PSCredential 物件中,密碼會儲存為 secureString 。
注意
如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?。
類型: | PSCredential |
Position: | Named |
預設值: | Current user |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Description
指定磁碟驅動器的簡短文字描述。 輸入任何字串。
若要檢視所有工作階段磁碟驅動器的描述,Get-PSDrive | Format-Table Name, Description
。
若要檢視特定磁碟驅動器的描述,請輸入 (Get-PSDrive <DriveName>).Description
。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Name
指定新磁碟驅動器的名稱。 針對持續性的對應網路驅動器機,請使用驅動器號。 針對暫時的 PowerShell 磁碟驅動器,您不限於驅動器號,請使用任何有效的字串。
類型: | String |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Persist
指出此 Cmdlet 會建立 Windows 對應網路驅動器機。 Persist 參數僅適用於 Windows。
對應的網路驅動器機會儲存在本機電腦上的 Windows 中。 它們是持續性的,而不是會話特定的,而且可以在檔案總管和其他工具中檢視和管理。
當您在本機設定命令範圍時,Persist 參數不會持續建立 PSDrive 超出您執行命令的範圍。 如果您在腳本內執行 New-PSDrive
,而且您希望新磁碟驅動器無限期地保存,則必須以點來源撰寫腳本。 為了獲得最佳結果,若要強制新磁碟驅動器保存,請將 Global 指定為 Scope 參數的值,並在命令中包含 Persist。
磁碟驅動器的名稱必須是字母,例如 D
或 E
。
Root 參數的值必須是不同電腦的 UNC 路徑。
PSProvider 參數的值必須 FileSystem
。
若要中斷 Windows 對應網路驅動器機的連線,請使用 Remove-PSDrive
Cmdlet。 當您中斷 Windows 對應網路驅動器機的連線時,對應會從計算機永久刪除,而不只是從目前的會話中刪除。
對應的網路驅動器機專屬於用戶帳戶。 使用其他使用者的認證在提升許可權的會話或會話中建立的對應磁碟驅動器,不會顯示在使用不同認證啟動的會話中。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-PSProvider
指定支援這種磁碟驅動器的PowerShell提供者。
例如,如果磁碟驅動器與網路共享或檔案系統目錄相關聯,PowerShell 提供者會 FileSystem
。 如果磁碟驅動器與登入機碼相關聯,提供者會 Registry
。
暫存 PowerShell 磁碟驅動器可以與任何 PowerShell 提供者相關聯。 對應的網路驅動器機只能與 FileSystem
提供者相關聯。
若要查看 PowerShell 工作階段中的提供者清單,請使用 Get-PSProvider
Cmdlet。
類型: | String |
Position: | 1 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Root
指定 PowerShell 磁碟驅動器對應的數據存放區位置。
例如,指定網路分享,例如 \\Server01\Public
、本機目錄,例如 C:\Program Files
或登錄機碼,例如 HKLM:\Software\Microsoft
。
暫存 PowerShell 磁碟驅動器可以與任何支援的提供者磁碟驅動器上的本機或遠端位置相關聯。 對應的網路驅動器機只能與遠端電腦上的檔案系統位置相關聯。
類型: | String |
Position: | 2 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Scope
指定磁碟驅動器的範圍。 此參數可接受的值為:Global、Local和 Script,或相對於目前範圍的數位。 範圍數位 0 到範圍數目。 目前的範圍編號為 0,其父系為 1。 如需詳細資訊,請參閱 about_Scopes。
類型: | String |
Position: | Named |
預設值: | Local |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
None
您無法使用管線將物件傳送至此 Cmdlet
輸出
此 Cmdlet 會傳回代表所建立磁碟驅動器 PSDriveInfo 物件。
備註
PowerShell 包含下列 Get-PSDrive
別名:
- 所有平臺:
ndr
- 窗戶:
mount
New-PSDrive
的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請使用 Get-PSProvider
。 如需提供者的詳細資訊,請參閱 about_Providers。
對應的網路驅動器機專屬於用戶帳戶。 使用其他使用者的認證在提升許可權的會話或會話中建立的對應磁碟驅動器,不會顯示在使用不同認證啟動的會話中。