# encoding: ascii
# api: powershell
# title: gpupdate on remote pc's
# description: This script gets all pc’s or servers from a OU and runs GPUpdate /force on these machines.
# version: 1.0
# author: afokkema
# license: CC0
# x-poshcode-id: 1080
# x-archived: 2012-06-15T08:32:44
# x-published: 2009-05-06T08:05:00
#
# - you need the Quest AD cmdlets.
# Source: www.ict-freak.nl
#
###############################################################################
#
# Get all servers from a OU and run GPUpdate /force on this machines.
#
# Version 1.0
#
# (C) 2009 - Arne Fokkema
# www.ict-freak.nl
#
# Install the Quest AD cmdlets first!!
#
###############################################################################
# Requires QAD cmdlets
if ((Get-PSSnapin "Quest.ActiveRoles.ADManagement" `
-ErrorAction SilentlyContinue) -eq $null) {
Add-PSSnapin "Quest.ActiveRoles.ADManagement"
}
$url = "http://live.sysinternals.com/psexec.exe"
$target = "c:\Tools\psexec.exe"
$TempFile = "C:\Machines.txt"
$Domain = Read-Host ("Enter the FQDN of the Domain")
$OU = Read-Host ("Enter the name of the OU")
# Check if psexec does exist
if (test-path $target)
{
write-host "psexec.exe is already installed"
}
else
{
write-host "psexec.exe doesn't exist"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($url, $target);
write-host "psexec.exe is now installed"
}
$Servers = Get-QADComputer -SearchRoot $Domain/$OU | Select Name | out-file $TempFile -force
#Cleanup Textfile
(Get-Content $TempFile) | Foreach-Object {$_ -replace "Name ", ""} | Set-Content $TempFile
(Get-Content $TempFile) | Foreach-Object {$_ -replace "---- ", ""} | Set-Content $TempFile
(Get-Content $TempFile) | Foreach-Object {$_ -replace " ", ""} | Set-Content $TempFile
(Get-Content $TempFile) | where {$_ -ne ""} >$TempFile
$colComputers = Get-Content $TempFile
Foreach ($strComputer in $colComputers){c:\Tools\psexec.exe \\$strComputer gpupdate.exe /target:computer /force}
RM $TempFile