我在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
如何以管理员身份访问网络驱动器?
答案 0 :(得分:74)
最后修复只是在以管理员身份运行时重新映射驱动器号:
net use Z: "\\vmware-host\Shared Folders"
不必从同一个PowerShell实例(或者根本不是PowerShell)完成 - 这只是整个登录会话需要完成的事情。
答案 1 :(得分:8)
在我的情况下,我能够简单地使用UNC路径而不是驱动器映射,它工作正常。
因此,根据您的示例,我只使用“\\ vmware-host \ Shared Folder”作为路径而不是使用映射驱动器Z:\。
答案 2 :(得分:5)
让我年龄找到的另一个解决方法是从计划任务运行net use
作为NT AUTHORITY \ SYSTEM 帐户。显然是drives mapped under this account show up for all users and all elevation levels。
我已经对此进行了测试,它甚至可以在NFS共享上运行(这可能有点挑剔)。只需创建一个在系统启动时运行的计划任务集,并指定常用命令:
net use Z: \\server\share /persistent:no
使用/persistent:yes
运行一次可能会有效,但我没有尝试过。当然,“只是再次映射”也可以,但是在不同的上下文中运行的计划任务仍然无法看到该驱动器。缺点是所有真实用户都会看到它,因此多用户设置不太好。
答案 3 :(得分:3)
我使用以下hacky解决方案重新创建&#34;缺少&#34;当Powershell以提升模式运行时,在profile.ps1中进行PSD驱动。
# 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
}
}
}
答案 4 :(得分:0)
如何将新的 psdrive 映射到访问该数据?当您在PowerShell中编写脚本或访问网络数据存储时,PSDrives的工作效果也不如系统映射驱动器。
有关使用 New-PSDrive cmdlet的说明,请访问:Technet:New-PSDrive
如果您不想每次都将新的psdrive添加到管理员和用户帐户的配置文件中,那么每次打开PowerShell时它都会自动生成。
〜丹
答案 5 :(得分:0)
从Vista开始,这似乎是微软的一个已知问题 Microsoft Knowled base article具有不安全注册表修复程序。
我们目前正在评估这种方法,因为我们的一些人感觉机器可能在此之后无法启动; - )
答案 6 :(得分:0)
没有其他答案对我有用;但是@TimothyLeeRussell的answer为我指明了正确的方向。
就我而言,我在网络驱动器上有一个.bat
文件。当我以管理员身份运行它时,它只会闪烁一个命令提示符窗口,并立即消失;当我从提升的命令提示符下运行文件内容时,它工作正常。
最后,我意识到我尝试从映射的网络驱动器运行.bat
文件。我将文件的执行更改为使用UNC路径,并且可以正常工作。