You are a helpful assistant.
system
Tạo tập lệnh PowerShell để kiểm tra dung lượng ổ đĩa trên một đường dẫn nhất định (do người dùng nhập) và ghi lại dung lượng trống mỗi giờ, đồng thời tích hợp các điều kiện để xác định nếu dung lượng trống giảm xuống dưới giới hạn được chỉ định, và gửi thông báo qua email hoặc các phương thức thay thế như SMS nếu cần thiết.
user
Dưới đây là một tập lệnh PowerShell mẫu để kiểm tra dung lượng ổ đĩa trên một đường dẫn nhất định và ghi lại dung lượng trống mỗi giờ. Tập lệnh này cũng bao gồm điều kiện để gửi thông báo qua email nếu dung lượng trống giảm xuống dưới một giới hạn được chỉ định.

```powershell
# Nhập đường dẫn và giới hạn dung lượng trống
$path = Read-Host "Nhập đường dẫn cần kiểm tra"
$limitGB = Read-Host "Nhập giới hạn dung lượng trống (GB)"

# Thông tin email
$emailFrom = "your-email@example.com"
$emailTo = "recipient-email@example.com"
$smtpServer = "smtp.example.com"
$smtpPort = 587
$smtpUser = "your-email@example.com"
$smtpPass = "your-email-password"

# Hàm gửi email
function Send-Email {
    param (
        [string]$subject,
        [string]$body
    )
    Send-MailMessage -From $emailFrom -To $emailTo -Subject $subject -Body $body -SmtpServer $smtpServer -Port $smtpPort -Credential (New-Object System.Management.Automation.PSCredential($smtpUser, (ConvertTo-SecureString $smtpPass -AsPlainText -Force))) -UseSsl
}

# Hàm kiểm tra dung lượng ổ đĩa
function Check-DiskSpace {
    $drive = Get-PSDrive -PSProvider FileSystem | Where-Object { $_.Root -eq $path }
    if ($null -eq $drive) {
        Write-Host "Đường dẫn không hợp lệ hoặc không tồn tại."
        return
    }

    $freeSpaceGB = [math]::round($drive.Free / 1GB, 2)
    $logEntry = "$(Get-Date): Dung lượng trống trên $path là $freeSpaceGB GB"
    Write-Host $logEntry
    Add-Content -Path "DiskSpaceLog.txt" -Value $logEntry

    if ($freeSpaceGB -lt $limitGB) {
        $subject = "Cảnh báo: Dung lượng trống thấp trên $path"
        $body = "Dung lượng trống hiện tại là $freeSpaceGB GB, thấp hơn giới hạn $limitGB GB."
        Send-Email -subject $subject -body $body
    }
}

# Lặp lại kiểm tra mỗi giờ
while ($true) {
    Check-DiskSpace
    Start-Sleep -Seconds 3600
}
```

### Hướng dẫn sử dụng:
1. Thay thế các thông tin email (`your-email@example.com`, `smtp.example.com`, v.v.) bằng thông tin của bạn.
2. Chạy tập lệnh PowerShell.
3. Nhập đường dẫn cần kiểm tra và giới hạn dung lượng trống khi được yêu cầu.
4. Tập lệnh sẽ kiểm tra dung lượng trống mỗi giờ và ghi lại vào tệp `DiskSpaceLog.txt`.
5. Nếu dung lượng trống giảm xuống dưới giới hạn, một email cảnh báo sẽ được gửi đi.

Lưu ý: Để gửi email, bạn cần đảm bảo rằng máy chủ SMTP của bạn cho phép gửi email từ PowerShell và thông tin xác thực là chính xác.
assistant