我想使用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"
,但提示输入密码,我想自动执行脚本。有什么方法可以切换用户而不必通过终端传递密码?
答案 0 :(得分:2)
首先让我说,出于许多安全原因,这不是一个好主意,其中之一是,如果有人可以访问您的脚本,则可以访问您的密码。无论如何,您不可能做的事,但是您可以实现一个解决方法。
如果您知道密码,则可以“伪造”用户在提示中键入该密码,而不是“运行不带密码提示的命令”,这不会抑制该提示,但会像实际在用户上键入该密码一样写入密码键盘。
要实现此目的,您可以使用SendKeys
函数,它实际上是在伪造按键。
想法是等待密码提示显示,然后通过伪造按键来发送密码字符。
作为示例,它将发送键H
和i
,然后按enter
好像有人在键入一样。
#Write some text
[System.Windows.Forms.SendKeys]::SendWait("Hi")
#Press on Enter
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
不幸的是,我的知识到此为止,因为我从未真正成功地使用过它,而是始终依靠手动输入。