973114 发表于 2018-9-2 10:07:44

PowerShell检测并添加用户权限

  当系统的管理员制作了域策略,修改了本地管理员组的成员时,一般情况下我们是无法添加用户权限的,即使添加权限,由于组策略登录时应用和90分钟另加30分钟的随机值自动刷新组策略,你的修改仍旧会被覆盖。
  我们的思路是,客户端的本地计算机策略有一个启动脚本设置,运行这个启动脚本的账户是SYSTEM,也就是说这里的运行权限没有问题。对于组策略自动更新时间,我们在脚本做循环检测,当账户权限被删除时,自动添加。
  另一个问题是,PowerShell脚本功能过于强大,微软为了安全,默认情况下是不允许运行任何PowerShell脚本的。此时我们必须修改本机的组策略的PowerShell脚本运行策略。
  另外:脚本执行中,如果有安全软件运行,可能会有阻止添加账户的提示,请手动放行。
  使用本地管理员登录
  具体的操作方法:
  1.打开本地组策略管理器。
  2.修改PowerShell的执行策略。
  计算机>管理模板>Windows组建>Windows PowerShell>启用脚本执行。
  3.添加 计算机的启动PowerShell脚本。
  以下是PowerShell脚本的具体内容。
  # 恢复Powershell的默认执行策略,默认不允许执行任何脚本
  # Set-executionpolicy   default-force
  #设置Powershell的执行策略为,可以执行任何脚本
  #PowerShell的执行策略请手动运行,或在组策略中运行。
  #计算机>管理模板>Windows组建>Windows PowerShell>启用脚本执行。
  #Set-ExecutionPolicyRemoteSigned -force
  Function Add_LocalAdmin_Limit()
  {
  #查询Domain Users组是不是本地Administrators组的成员,如果查询到则返回一个WMI对象,查询不到返回一个Null。
  $wmi=Get-WmiObject -Query "SELECT * FROM Win32_GroupUser WHERE   PartComponent=`"Win32_Group.Domain='$env:USERDOMAIN',Name='Domain Users'`" And GroupComponent=`"Win32_Group.Domain='$env:COMPUTERNAME',Name='Administrators'`""
  #根据返回的结果,确定是否需要添加权限。
  if($wmi -eq $null)
  {
  net localgroup /addAdministrators "Domain Users"
  Echo "已完成管理员权限的添加,请注销后重新登陆使用!"
  }
  }
  #死循环,重复检测。若需要退出,请结束powershell进程。
  while(1)
  {
  Add_LocalAdmin_Limit
  Echo "OK"
  #延迟3000秒,防止组策略刷新。
  Sleep 3000
  }

页: [1]
查看完整版本: PowerShell检测并添加用户权限