【发布时间】:2019-11-22 14:22:38
【问题描述】:
我想使用 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"
但它提示输入密码,我想自动执行脚本。有什么方法可以切换用户而无需通过终端传递密码?
【问题讨论】:
-
如果你能做到这一点,那将是一个重大的安全漏洞。任何恶意软件都可以做同样的事情,绕过为管理员提供适当的凭据。这有意义吗? 哎呀,让我们只允许在没有密码的情况下完成需要管理员权限的事情。这不会有什么问题,不是吗?
-
@KenWhite 完全同意你的看法。有什么方法可以传递凭据,从用户那里获取帐户名和密码,我相信我们不能将凭据直接传递到命令中,即 runas /user:administrator "quser /SERVER:$server" -Credential $Cred
-
你试过使用
Invoke-Command -Credential $(Import-Clixml $CredentialFilepath) -ScriptBlock {quser.exe} -ComputerName $server吗? -
@GuentherSchmitz 我试过使用这个命令,它是从 NT AUTHORITY\SYSTEM 用户执行命令,而不是从输入的凭据。我已经使用“[System.Security.Principal.WindowsIdentity]::GetCurrent().Name”命令检查了用户,它仍然返回 NT AUTHORITY\SYSTEM 用户。
标签: powershell