runas.exe 和 Start-Process -Credential 的区别

Geo*_*uer 10 powershell active-directory

我正在尝试在客户端网络上的 vpn 上设置一些脚本。该客户端通常会在其网络上分配一个 ActiveDirectory 帐户,并使用它来管理权限(例如,对数据库)。好吧,这是有道理的。

但有一点让我感到困惑:

start-process runas.exe "/user:CLIENTDOMAIN\George.Mauer /netonly W:\tools\LINQPad4\LINQPad.exe
Run Code Online (Sandbox Code Playgroud)

查询密码并运行良好(我可以访问数据库)

Start-Process W:\tools\LINQPad4\LINQPad.exe -Credential (Get-Credential)
Run Code Online (Sandbox Code Playgroud)

CLIENTDOMAIN\George.Mauer在弹出提示中输入和我的密码总是会导致错误

Start-Process : This command cannot be run due to the error: The user name or password is incorrect.
Run Code Online (Sandbox Code Playgroud)

这些不是一回事吗?runas和 和有-Credential什么区别?还有一个次要问题 - 我如何Start-Job使用我的CLIENTDOMAIN\George.Mauer凭证?

And*_*ndi 8

/netonly 以当前用户身份运行该进程,并且仅使用其他凭据建立网络连接。

Start-Process将使用其他凭据运行该进程(及其所有网络连接)。没有办法/NETONLYStart-Process.

您必须调用/调用 Win32 API 才能实现 /NETONLY 功能。如果您准备进行练习,这是您需要使用的 API LOGON_NETCREDENTIALS_ONLY

http://www.pinvoke.net/default.aspx/advapi32/createprocesswithlogonw.html

更多资源:

以不同的用户身份运行作业:

Start-Job -ScriptBlock {whoami} -Credential (get-credential) | Wait-Job | Receive-Job
Run Code Online (Sandbox Code Playgroud)

  • 值得庆幸的是,有人花时间实现了这一点并发布为 PowerShell Gallery 模块:https://github.com/gfody/PowershellModules/tree/master/RunAs (2认同)