有没有办法在Powershell中切换用户以运行没有密码提示的命令?

时间:2019-11-22 14:22:38

标签: powershell

我想使用Powershell代码注销远程计算机上的用户:

$session = ((quser /server:$system | Where-Object { $_ -match $user }) -split ' +')[2]
logoff $session /server:$system

当前这些命令是由帐户执行的:NT AUTHORITY \ SYSTEM,但是我想使用其他用户来执行命令。

我尝试使用:

runas /user:administrator /savecred "quser /SERVER:$server"

,但提示输入密码,我想自动执行脚本。有什么方法可以切换用户而不必通过终端传递密码?

1 个答案:

答案 0 :(得分:2)

首先让我说,出于许多安全原因,这不是一个好主意,其中之一是,如果有人可以访问您的脚本,则可以访问您的密码。无论如何,您不可能做的事,但是您可以实现一个解决方法。

如果您知道密码,则可以“伪造”用户在提示中键入该密码,而不是“运行不带密码提示的命令”,这不会抑制该提示,但会像实际在用户上键入该密码一样写入密码键盘。

要实现此目的,您可以使用SendKeys函数,它实际上是在伪造按键。 想法是等待密码提示显示,然后通过伪造按键来发送密码字符。

作为示例,它将发送键Hi,然后按enter好像有人在键入一样。

#Write some text
[System.Windows.Forms.SendKeys]::SendWait("Hi")
#Press on Enter
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")

不幸的是,我的知识到此为止,因为我从未真正成功地使用过它,而是始终依靠手动输入。