Windows Gpupdate 'link' -
:: Log file set LOGFILE=%USERPROFILE%\Desktop\GPUpdate_Log_%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%_%TIME:~0,2%%TIME:~3,2%.txt set LOGFILE=%LOGFILE: =0%
echo. echo [DONE] Log saved to: %LOGFILE% pause exit /b 0 More flexible, supports remote computers. Save as Invoke-GPUpdate.ps1 . windows gpupdate
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss" $logFile = "$env:TEMP\GPUpdate_$ComputerName`_$timestamp.log" echo [%DATE% %TIME%] Failed with code %errorLevel% >>
if %errorLevel% equ 0 ( echo [SUCCESS] Policy update completed. echo [%DATE% %TIME%] Success >> "%LOGFILE%" ) else ( echo [FAILED] Error code %errorLevel%. Check log. echo [%DATE% %TIME%] Failed with code %errorLevel% >> "%LOGFILE%" ) windows gpupdate
echo [%DATE% %TIME%] Starting GPUpdate >> "%LOGFILE%"
:: Offer to reboot/logoff if "%PENDING%"=="REBOOT" ( echo. choice /c YN /m "Reboot now? " if errorlevel 1 shutdown /r /t 30 /c "GPUpdate requires reboot" exit /b 0 ) if "%PENDING%"=="LOGOFF" ( echo. choice /c YN /m "Logoff now? " if errorlevel 1 shutdown /l exit /b 0 )
if ($ComputerName -eq $env:COMPUTERNAME) Write-Host "Running gpupdate locally..." -ForegroundColor Cyan $params = if ($Force) "/force" else "" $result = Start-Process -Wait -NoNewWindow -FilePath "gpupdate.exe" -ArgumentList $params -PassThru $exitCode = $result.ExitCode else Write-Host "Running gpupdate on $ComputerName..." -ForegroundColor Cyan $scriptBlock = param($forceFlag) if ($forceFlag) gpupdate /force else gpupdate