복사 방지 스크립트

2012년 12월 3일 월요일

[PS] Active Directory 가입된 PC에게 정책적용 명령어 한꺼번에 실행(GPupdate.exe /Force)

보통 회사에서 정책을 변경 한 후, 직원들에게 적용 시킬때,
일일이 부서 및 직원들에게 GPupdate.exe /Force 명령어를 실행도록 부탁 하는것은 현실적으로 무리한 일이다.

이때, Window Remote Management 서비스를 이용하여 PowerShell 명령어를 사용함으로써,

수십대, 수백대의 컴퓨터에 명령어를 강제집행(?) 할 수 있다.

앞서 WinRM 서비스를 참고 한 뒤,

다음과 같이 명령어를 실행~!!
  • Get-Adcomputer -Filter * | ForEach-Object {Invoke-Command -Computername $_.DnsHostname -Scriptblock {gpupdate.exe /force}}
         ※ 여기서 computername에 Name 또는 DnsHostname을 모두 사용할 수 있다.
             ForEach-Object {Invoke-Command -Computername $_.DnsHostname -Scriptblock  
             {gpupdate.exe /force}} 를 알아두어야 한다.

ForEach는 처리 속도면에서 좀 느리다. 좀 더 빨리 처리하기 위해서는 아래와 같이 하면 좋다. 
  • Invoke-Command -ComputerName (Get-ADComputer -Filter * | Select-Object -ExpandProperty Name) {gpupdate.exe /force}
위의 두 명령어에 대하여 앞에 Measure-Command { }을 해서 TotalMilliseconds를 보면 처리 속도를 확인할 수 있다.
  • Measure-Command {Get-Adcomputer -Filter * | ForEach-Object {Invoke-Command -Computername $_.DnsHostname -Scriptblock {gpupdate.exe /force}}}
 
  • Measure-Command {Invoke-Command -ComputerName (Get-ADComputer -Filter * | Select-Object -ExpandProperty Name) {gpupdate.exe /force}}
한가지 더, 위의 명령어들은 DC내 모든 PC를 통합하여 설정을 내린다.
이때, DC로 등록되어진 본 서버에게도 명령어가 내려가므로 에러 표시가 나올 수 있다.
원하는 개체에(예:부서)만 해당명령어를 내리고 싶을땐, 아래와 같이 해준다.
  • ICM -Computer (Get-ADComputer -Filter * -SerchBase "OU=abc, DC=xyz, DC=COM" | Select-Object -ExpandProperty Name) {GPupdate.exe /Force}

자료 참고:
http://powershell.kr/ 이용식 강사님

댓글 없음:

댓글 쓰기