Add-Type @" using System; using System.Runtime.InteropServices; public class ScreenCapture { [DllImport("user32.dll")] public static extern IntPtr GetDC(IntPtr hwnd); [DllImport("gdi32.dll")] public static extern int GetDeviceCaps(IntPtr hdc, int nIndex); [DllImport("user32.dll")] public static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc); public static int GetScreenWidth() { IntPtr desktop = GetDC(IntPtr.Zero); int width = GetDeviceCaps(desktop, 118); ReleaseDC(IntPtr.Zero, desktop); return width; } public static int GetScreenHeight() { IntPtr desktop = GetDC(IntPtr.Zero); int height = GetDeviceCaps(desktop, 117); ReleaseDC(IntPtr.Zero, desktop); return height; } } "@ Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing function Take-FullScreenshot { # Create directory if it doesn't exist $dirPath = "C:\Scripts\Screens" if (-not (Test-Path $dirPath)) { New-Item -ItemType Directory -Path $dirPath -Force | Out-Null } # Clean up any existing screenshots in the directory Get-ChildItem -Path $dirPath -Filter "*.png" | Remove-Item -Force # Get timestamp and set output path $timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss" $outputPath = Join-Path $dirPath "screen_$timestamp.png" # Get actual screen resolution $width = [ScreenCapture]::GetScreenWidth() $height = [ScreenCapture]::GetScreenHeight() $bitmap = New-Object System.Drawing.Bitmap($width, $height) $graphics = [System.Drawing.Graphics]::FromImage($bitmap) # Set high quality $graphics.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic $graphics.PixelOffsetMode = [System.Drawing.Drawing2D.PixelOffsetMode]::HighQuality $graphics.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::HighQuality # Capture screen $graphics.CopyFromScreen(0, 0, 0, 0, $bitmap.Size) # Save screenshot $bitmap.Save($outputPath, [System.Drawing.Imaging.ImageFormat]::Png) $graphics.Dispose() $bitmap.Dispose() } while ($true) { # Run the screenshot function Take-FullScreenshot # Wait 5 minutes Start-Sleep -Seconds 300 }