Windows-Server-2012

在 PowerShell 中訪問已映射的網路驅動器

  • February 5, 2021

我正在 VMWare Workstation 中執行 Windows Server 2012 安裝。我啟用了共享文件夾,因此驅動器Z:映射到\\vmware-host. 我可以在資源管理器中正確訪問此驅動器(我可以Z:在“正常”`cmd 中訪問)並且可以正確打開文件。

我打開 PowerShell 並嘗試這樣做cd Z:,但出現以下錯誤:

cd : 找不到路徑’Z:',因為它不存在。

為什麼 PowerShell 找不到已經映射的網路驅動器?

我用Google搜尋了一下,找到了New-PSDrive命令。我執行了以下內容:

New-PSDrive -Name 'Z' -PSProvider FileSystem -Root 'Z:\'

但我仍然得到與上面相同的錯誤。我需要做什麼才能訪問 PowerShell 中的 VMWare 共享文件夾。

您需要使您正在執行的使用者可以使用驅動器映射Powershell。您可以執行以下操作來為該使用者提供相同的驅動器映射:

net use Z: "\\vmware-host\Shared Folders"

請參閱以下 SO 問題:Cannot access network drive in PowerShell running as administrator

您是以管理員身份還是目前使用者身份啟動此 PowerShell 控制台?

如果您從非提升的命令提示符執行它,那麼它應該會看到所有本地映射的網路驅動器。我現在的情況和你一樣,並且已經x:映射到\\vmware-host\[folder],並且Get-PSDrive -PSProvider FileSystem顯示了我所有本地映射的驅動器。

但是,如果我以管理員身份啟動此控制台,它看不到我的任何本地映射驅動器,因為對於提升的命令提示符,使用不同的(第二個)安全上下文來載入不共享網路連接的應用程序。

好消息是您基本上只需要在管理員控制台中映射驅動器一次,它將保持在該安全上下文中(我認為直到重新啟動)。

如果要自動執行此操作,則應在啟動 powershell 會話時閱讀自動載入腳本。基本上,如果您在My Documents被呼叫的文件夾中創建一個文件夾,WindowsPowerShell並在其中創建一個Microsoft.PowerShell_profile.ps1文件,則每次啟動新的 powershell 控制台時都會觸發。您可以在此處添加net use命令,或添加您編寫的要使用的自定義函式。

例如,我有一個可以將管理控制台的游標變為紅色,並且有一個函式,我可以輕鬆呼叫它來簽署我的 PS1 腳本。

引用自:https://serverfault.com/questions/673349