PowerShell 以其他用户身份打开共享文件夹

PowerShell Open a shared folder as another user

我在 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 时,它才会打开资源管理器或吐出错误。

感谢您的帮助。

自 Vista 起,Windows 不允许浏览器 window 由与当前用户不同的用户打开。 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$