PowerShell

PowerShell 도메인의 모든 컴퓨터에 GPUpdate 즉시 실행

delmaster 2016. 4. 20. 18:00

PowerShell을 이용하여 도메인의 모든 컴퓨터의 정책을 새로 고침 하기 위해 invoke-gpupdate 명령을 즉시 실행하는 내용입니다.

관리자 권한으로 실행되어야 하기에 실행시 스크립트 실행권한을 체크하고 관리자 권한이 아닐경우 '현재 실행은 종료되며, 관리자 권한으로 자동 재실행됩니다.' 라는 메세지를 출력합니다.

그렇기에 파워쉘을 관리자 권한으로 실행 후 경로 찾아가서 실행하실 필요없이. 그냥 우클릭해서 'PowerShell에서 실행' 버튼 누르시면 알아서 관리자로 전환되어 집니다.

 

스크립트내의 핵심 명령어인 invoke-gpupdate 명령이 정상 동작하기 위해서 대상 컴퓨터들에 아래 두가지의 방화벽 인바운드 오픈 작업이 필요합니다.

'원격 예약된 작업 관리(RPC)'
'원격 예약된 작업관리 (RPC-EPMAP)'

 

아래는 스크립트 파일과 내용입니다.

붉은색 부분의 도메인만 적절하게 변경해서 사용하면 되겠습니다.

 

 

<#
내용 : delmaster.net 도메인의 모든 컴퓨터에 그룹정책 업데이트 명령을 즉시 실행
작성자 : 이성환
작성일 : 2016.04.15
업데이트 : 2016.04.20
  관리자권한으로 자동 실행되게 변경
#>

Function Permit-Check
 {
   Param( [Security.Principal.WindowsBuiltinRole]$Role )
   $CurrentUser = [Security.Principal.WindowsPrincipal]

([Security.Principal.WindowsIdentity]::GetCurrent())
   $CurrentUser.IsInRole($Role)
 }

$User = Permit-Check "administrator"

if($User -eq "True")
{
 Write-Host "업데이트 명령 전송 작업중..."
 Get-ADComputer -filter * -Searchbase "DC=delmaster,DC=net" | foreach {Invoke-GPUpdate -computer

$_.name -force -RandomDelayInMinutes 0}
 write-Host "모든 서버에 업데이트 명령 전송 완료" -ForegroundColor Yellow
 pause
}
else

 Write-Host "관리자 권한으로 실행되지 않았습니다." -ForegroundColor Yellow
 write-Host "현재 실행은 종료되며, 관리자 권한으로 자동 재실행 됩니다." -ForegroundColor Yellow
 sleep(1)
 Start-Process -Verb "Runas" -File PowerShell.exe -Argument "-STA -noprofile -file

$($myinvocation.mycommand.definition)"
}