PowerShell檢測並添加用戶權限

    當系統的管理員製做了域策略,修改了本地管理員組的成員時,通常狀況下咱們是沒法添加用戶權限的,即便添加權限,因爲組策略登陸時應用和90分鐘另加30分鐘的隨機值自動刷新組策略,你的修改仍舊會被覆蓋。
    咱們的思路是,客戶端的本地計算機策略有一個啓動腳本設置,運行這個啓動腳本的帳戶是SYSTEM,也就是說這裏的運行權限沒有問題。對於組策略自動更新時間,咱們在腳本作循環檢測,當帳戶權限被刪除時,自動添加。
    另外一個問題是,PowerShell腳本功能過於強大,微軟爲了安全,默認狀況下是不容許運行任何PowerShell腳本的。此時咱們必須修改本機的組策略的PowerShell腳本運行策略。shell

    

    另外:腳本執行中,若是有安全軟件運行,可能會有阻止添加帳戶的提示,請手動放行。安全

        使用本地管理員登陸
    具體的操做方法:
1.打開本地組策略管理器。
2.修改PowerShell的執行策略。
   計算機>管理模板>Windows組建>Windows PowerShell>啓用腳本執行。
3.添加 計算機的啓動PowerShell腳本。ide

    如下是PowerShell腳本的具體內容。對象

    # 恢復Powershell的默認執行策略,默認不容許執行任何腳本
# Set-executionpolicy   default  -force
#設置Powershell的執行策略爲,能夠執行任何腳本進程

    #PowerShell的執行策略請手動運行,或在組策略中運行。
#計算機>管理模板>Windows組建>Windows PowerShell>啓用腳本執行。
#Set-ExecutionPolicy  RemoteSigned -forceit

    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'`""io

         #根據返回的結果,肯定是否須要添加權限。
     if($wmi -eq $null)
     {
        net localgroup /add  Administrators "Domain Users"
        Echo "已完成管理員權限的添加,請註銷後從新登錄使用!"
      }
 }模板

     
 
 #死循環,重複檢測。若須要退出,請結束powershell進程。
 while(1)
 {
      Add_LocalAdmin_Limit
      Echo "OK"
      #延遲3000秒,防止組策略刷新。
      Sleep 3000
 }
 
 
class