Why Automate Reports?
Save hours every week by automating routine reports. This tutorial shows you how to schedule PowerShell scripts to run daily and email results.
Step 1: Create Your Report Script
Save this as DailyReport.ps1:
# Get system information
$ComputerInfo = Get-ComputerInfo | Select-Object CsName, OsName, OsVersion
$DiskInfo = Get-PSDrive -PSProvider FileSystem | Where-Object {$_.Used -gt 0}
# Generate HTML report
$Report = @"
<h1>Daily Server Report</h1>
<h2>Computer: $($ComputerInfo.CsName)</h2>
<p>OS: $($ComputerInfo.OsName) - $($ComputerInfo.OsVersion)</p>
<h2>Disk Usage</h2>
"@
foreach ($Disk in $DiskInfo) {
    $Report += "<p>Drive $($Disk.Name): $([math]::Round($Disk.Used/1GB, 2)) GB used</p>"
}
# Email the report
Send-MailMessage -From "reports@company.com" -To "admin@company.com" -Subject "Daily Report" -Body $Report -BodyAsHtml -SmtpServer "smtp.office365.com" -Credential $Cred
Step 2: Create Scheduled Task
- Open Task Scheduler
 - Click "Create Task"
 - Name: "Daily PowerShell Report"
 - Trigger: Daily at 8:00 AM
 - Action: Start a program ? 
powershell.exe - Arguments: 
-ExecutionPolicy Bypass -File "C:\Scripts\DailyReport.ps1" 
Pro Tip: Store Credentials Securely
Never hardcode passwords. Use Windows Credential Manager or export credentials:
$Cred = Get-Credential
$Cred | Export-Clixml -Path "C:\SecureCreds.xml"            
💬 Comments (0)
💬 Join the conversation!
Login or create a free account to comment and get IT tips delivered to your inbox.