73

我在 Windows 7 x64 虚拟机中运行 PowerShell。我在主机上有一个共享文件夹映射为网络驱动器 (Z:)。当我正常运行 PS 时,我可以正常访问该驱动器,但如果我“以管理员身份”运行它,它会告诉我:

Set-Location : Cannot find drive. A drive with the name 'Z' does not exist.
At line:1 char:13
+ Set-Location <<<<  Z:
    + CategoryInfo          : ObjectNotFound: (Z:String) [Set-Location], DriveNotFoundException
    + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

如何以管理员身份访问网络驱动器?

4

7 回答 7

105

最后,修复只是在以管理员身份运行时重新映射驱动器号:

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

它不必从同一个 PowerShell 实例(或完全从 PowerShell)中完成 - 它只是需要在整个登录会话中完成一次。

于 2011-01-23T23:17:08.707 回答
11

就我而言,我能够简单地使用 UNC 路径而不是驱动器映射,并且效果很好。

因此,根据您的示例,我没有使用映射驱动器 Z:\,而是使用“\\vmware-host\Shared Folder”作为路径。

于 2012-10-24T16:05:53.220 回答
6

我花了很长时间才找到的另一种解决方法是net use从计划任务作为 NT AUTHORITY\SYSTEM帐户运行。显然,在此帐户下映射的驱动器会为所有用户和所有海拔级别显示

我已经对此进行了测试,它甚至适用于 NFS 共享(可能有点挑剔)。只需创建一个计划任务集以在系统启动时运行,并指定常用命令:

net use Z: \\server\share /persistent:no

它可能只运行一次/persistent:yes,但我没有尝试过。当然,“再次映射它”也可以,但是该驱动器对于在不同上下文中运行的计划任务仍然不可见。缺点是所有真实用户也会看到它,因此对于多用户设置不太好。

于 2014-10-27T01:21:14.703 回答
3

我正在使用以下 hacky 解决方案,当 Powershell 在提升模式下运行时,我在 profile.ps1 中重新创建“丢失”的 PSDrive。

要旨

# Reconnect PSDrives for network connections when running with elevated privileges
$elevated = (([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
if( $elevated ) {
    net use | ?{ $_ -match ":\s+\\\\"  -and !$_.StartsWith("Unavailable") } | %{
        $tokens = $_.split(":")
        $psdrivename = $tokens[0][$tokens[0].length-1]
        $path = $tokens[1].trim().split(" ")[0].trim()

        if( !(get-psdrive | ?{ $_.Name -eq $psdrivename } )) {
            write-host ( "Restoring PSDrive for {0}: {1}" -f $psdrivename, $path )
            new-psdrive $psdrivename FileSystem $path | out-null
        }
    }
}  
于 2015-03-31T16:33:19.983 回答
0

映射一个新的psdrive以访问该数据怎么样?当您在 powershell 中编写脚本或访问网络数据存储时,PSDrives 的工作效果与系统映射驱动器一样好。

使用New-PSDrive cmdlet 的说明在这里:Technet:New-PSDrive

如果您不想每次都创建一个新的 psdrive,您可以将其添加到管理员和您的用户帐户的配置文件中,并且每次打开 powershell 时它都会自动可用。

~丹

于 2011-01-21T14:48:26.503 回答
0

自 Vista 以来,这似乎是 Microsoft 的一个已知问题。带有不安全注册表修复 的
Microsoft Knowled 基础文章。

我们目前正在评估这种方法,因为我们的一些人认为机器可能在此之后无法启动;-)

于 2013-05-29T15:38:01.237 回答
0

其他答案都不适合我。但@TimothyLeeRussell 的回答为我指明了正确的方向。

就我而言,我有一个.bat文件位于网络驱动器上。当我以管理员身份运行它时,它只会闪烁一个命令提示符窗口并立即消失;当我从提升的命令提示符运行文件内容时,它运行良好。

最后我意识到我尝试.bat从映射的网络驱动器运行文件。我更改了文件的执行以使用 UNC 路径并且它有效。

于 2019-01-31T14:26:54.977 回答