# ========================================== # 1. Setup Variables (Fix for missing vars) # ========================================== $TicketNumber = "INC-12345" # Your Ticket Number $ScriptStartTime = Get-Date # Current DateTime object $LogFile = "C:\Logs\QuestCleanup.log" # Path to your log file $ScriptResult = @{} # Initialize the result hashtable # (Optional) Define Write-Log if it is not available in your environment function global:Write-Log { param( [string]$Message, [string]$Level = "INFO" ) "$Level - $Message" } # ========================================== # 2. Main Script Logic # ========================================== $RestorePointName = "QUEST-CLEANUP-$($TicketNumber -replace '[^A-Za-z0-9]', '')-$($ScriptStartTime.ToString('yyyy-MM-dd'))" try { Write-Log "Creating initial restore point: $RestorePointName" # Requires Admin Rights and System Restore enabled Checkpoint-Computer -Description $RestorePointName -ErrorAction Stop $ScriptResult.restore_point_initial.created = $true $ScriptResult.restore_point_initial.name = $RestorePointName Write-Log "Initial restore point created successfully." } catch { $ErrorMsg = "Failed to create initial restore point: $($_.Exception.Message)" $ScriptResult.restore_point_initial.error = $ErrorMsg Write-Log $ErrorMsg -Level "ERROR" } Write-Log "Initial restore point section completed." # Appends a blank line to the log file "" | Out-File -FilePath $LogFile -Append -Encoding UTF8