PowerShell以另一个用户身份打开共享文件夹

时间:2015-05-21 07:53:05

标签: powershell process.start

我在PowerShell Studio中为我们的IT服务台人员编写了一个GUI。此GUI应用程序在Citrix中发布,并使用其管理员凭据打开。在应用程序中,有一个按钮来查询用户主文件夹的活动目录。只能使用提供的管理员凭据打开此文件夹以启动应用程序。

$linklabelTSHomeFolder_Click = {
    Start-Process $linklabelTSHomeFolder.Text
}

这会打开资源管理器,并说无法找到该位置。但是,我怀疑已打开的资源管理器是使用当前凭据打开的,而不是管理员凭据。

在提供正确的凭据进行测试时,我无法让资源管理器打开目标共享:

Start-Process -FilePath 'C:\Windows\explorer.exe' -ArgumentList $linklabelTSHomeFolder.Text -Credential $Credentials
Start-Process -FilePath 'C:\Windows\explorer.exe' -ArgumentList $linklabelTSHomeFolder.Text -Credential $Credentials -Verb runas
Start-Process -FilePath 'C:\Windows\explorer.exe' -ArgumentList $linklabelTSHomeFolder.Text -Credential $Credentials -Verb runas -LoadUserProfile -WorkingDirectory 'C:\Windows\System32'

我已尝试过一切,但我无法打开它。

即使我尝试使用我的普通凭据在PowerShell ISE中的本地工作站上运行它并向CmdLet提供管理员凭据,它也不会显示错误,也不会显示资源管理器。只有当我删除部分-Credential $Credentials时,它才会打开资源管理器或吐出错误。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

自Vista以来,Windows不允许使用与当前用户不同的用户打开资源管理器窗口。 runas功能已被删除。有关详细信息,请参阅here

Shift +右键单击,Run as different user(仅限GUI)仍然有效。

但是,有一种解决方法可以访问另一个用户的共享,但涉及到使用注册表的问题:

$regKey ="HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\advanced"
$user = $env:username
$domain = $env:userdomain
Set-ItemProperty -Path $regKey -Name SeparateProcess -Value 1
net use \\$args\c$ /user:$domain\$user
explorer.exe \\$args\c$