我正在尝试编写一个简单的 powershell 脚本,将域用户添加到 Windows 计算机上的本地管理员组,然后在 30 分钟后将其删除。这是我目前所做的。
Param(
[string]$machineName,
[string]$group,
[string]$user
)
$objUser = [ADSI]("WinNT://$user")
$objGroup = [ADSI]("WinNT://$machineName/$group")
$objGroup.PSBase.Invoke("Add",$objUser.PSBase.Path)
sleep 1800
$objGroup.PSBase.Invoke("Remove",$objUser.PSBase.Path)
此脚本使用三个参数调用,效果很好。用户被插入到组中,30 分钟后被移除。
我所需要的最后帮助是强制 Windows 意识到用户在 30 分钟后不再是管理员......
目前,用户必须注销并重新登录才能获得管理员权限,我对此没有异议,但我不希望他们能够在 30 分钟后保留权限。我该如何强制实现这一点?即使从组中移除后,他们仍然可以执行管理任务,直到他们注销。
提前致谢。
答案1
我认为,如果没有某种注销事件,您想要做的事情在技术上是不可能实现的。只要他们有一个最初在作为组成员时创建的活动会话/进程,该会话/进程的上下文将继续成为该组的成员,直到它终止。这与他们需要注销/登录以“激活”组成员身份的原因相同。
现在,有很多方法可以在预定时间强制注销。但我认为这是在不修改或增强 Windows 安全子系统(例如使用第三方产品)的情况下所能达到的最接近的方法。
答案2
您可以强制用户在 30 分钟时注销。Win32Shutdown
与标志 4 一起使用,以强制注销。
这是强制用户在规定时间之后不具有权限的唯一方法。
此外,如果您可以向用户显示一个计时器,告诉他们还剩下多少时间,这将对他们很有用,以便他们可以保存正在做的事情并且不会搞乱任何事情。