无法以pipe理员身份访问PowerShell中的networking驱动器

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

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 

如何以pipe理员身份访问networking驱动器?

6 Solutions collect form web for “无法以pipe理员身份访问PowerShell中的networking驱动器”

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

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

它不必从相同的PowerShell实例(或从PowerShell)完成 – 这只是在整个login会话中需要完成一次。

在我的情况下,我能够简单地使用UNCpath而不是驱动器映射,它工作正常。

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

花了我很长时间才发现的另一个解决方法是从计划的任务运行net use 作为NT AUTHORITY \ SYSTEM帐户。 显然这个帐户下映射的驱动器显示所有用户和所有高程级别 。

我已经testing了这个,它甚至可以在NFS共享(可以有点挑剔)。 只需创build一个在系统启动时运行的计划任务,并指定通常的命令:

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

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

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

要旨

 # 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 } } } 

如何映射新的psdrive来访问数据? 当您正在编写脚本或在PowerShell中访问networking数据存储时,PSDrives如果不比系统映射的驱动器更好地工作。

使用New-PSDrive cmdlet的说明如下: Technet:New-PSDrive

如果您不想在每次将其添加到pipe理员和用户帐户的configuration文件时都必须创build一个新的psdrive,并且每次打开powershell时它都将自动可用。

〜丹

从Vista以来,似乎是微软已知的一个问题。
Microsoft知识库文章与不安全的registry修复程序。

我们目前正在评估这种方法,因为我们的一些人有这样的感觉,机器可能无法启动;-)