我想以域用户身份启动 PowerShell ISE 会话。如果我输入:
runas.exe /netonly /user:domain.local\username "powershell ise"
系统提示我输入密码,ISE 环境启动。但是,运行时whoami
出现以下输出:
win-machine\user
这是我登录的本地机器和用户。
熟悉一些 Linux 和sudo
用法后,我的目的是执行等效的用户更改并domain.local\username
通过 shell 以特权进行 Active Directory 查询。我该如何实现这一点?
编辑:请注意,我无法从主机加入域。
答案1
发生这种情况是因为这明确地符合您的要求。
我建议你了解一下该/netonly
开关的作用:http://www.pseale.com/pretend-youre-on-the-domain-with-runas-netonly
为什么会发生这种情况
基本上普通的 runas
将在指定用户下运行程序,就像sudo -u
在 Linux 中一样。这意味着所有本地和远程操作都在指定用户下进行。
但是,当你通过开关时/netonly
,事情就变得奇怪了。runas
最终在当前登录用户,但任何网络请求(大概是任何执行 Kerberos/NTLM/SPNEGO 身份验证的请求)都使用指定的用户。
whoami
只检查当地的用户。由于您指定了/netonly
,因此它不会改变,并且您将拥有当前登录用户的所有权限,您将使用当前用户的配置文件进行任何设置等。直到您向联网计算机发出请求,此时您将模拟您在命令中指定的用户runas
。
如果这是您想要的,那就太好了!如果不是,并且如果您确实希望程序在指定用户下完全运行,即使在本地计算机上,也可以/netonly
从命令中删除开关。
验证用户
不幸的是,似乎没有一个简单的命令来whoami
检查在使用时以哪个用户身份远程运行/netonly
。
如果您启用了某种形式的命令远程处理,则可以使用它们。如果没有它们,我能想到的最简单的方法是连接到网络共享并从另一端检查您连接到哪个共享。
从计算机 1:
runas /netonly /user:DOMAIN\TestUser2 powershell
在 powershell 实例中:
net use \\computer2
这将使用远程/用户连接到IPC$
共享。稍后您可以使用 撤消此操作。computer2
netonly
net use /delete \\computer2
从计算机2:
net share IPC$
这将为您提供一个已连接用户的列表,其中应该包括您runas
想要的用户:
Share name IPC$
Path
Remark Remote IPC
Maximum users No limit
Users TestUser2
Caching Manual caching of documents
Permission Everyone, FULL
The command completed successfully.
答案2
您运行的命令是正确的,我几乎每天都使用它。
使用该命令进入 PowerShell ISE 后,您应该能够 Enter-PSSession 或 cd \computername\share
我通常会更改当前屏幕的窗口标题,以帮助我记住我指定的 /netonly 域和帐户
$host.UI.RawUI.WindowTitle = "remotedomain-otheraccount"