Skip to content

Latest commit

Β 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PVS-RADAR: Provisioning Services Replication Analysis & Disk Assessment Reporter

A comprehensive PowerShell monitoring solution for Citrix Provisioning Services (PVS) that provides deep analysis of vDisk replication status and load balancing configuration across your PVS farm.

🎯 Overview

PVS-RADAR (Provisioning Services Replication Analysis & Disk Assessment Reporter) is a PowerShell based monitoring tool that provides detailed analysis and reporting of vDisk replication status at the version level. It helps identify potential high availability risks, ensures optimal load balancing configuration, and provides actionable recommendations for maintaining robust PVS farm health.

✨ Key Features

  • Version-Level Replication Monitoring: Checks replication status for each individual vDisk version (not just the vDisk as a whole)
  • Active Version Focus: Only monitors versions in production/test mode (Access=0), ignoring maintenance mode versions
  • Load Balancing Analysis: Identifies vDisks ready for load balancing vs. those locked to single servers
  • Multiple Output Formats: Console output, structured JSON reports, and Windows EventLog integration
  • Comprehensive Logging: Daily log files with detailed operation tracking
  • Customizable Thresholds: Configurable minimum server and connection requirements
  • Risk Assessment: Identifies high-risk configurations before they cause service disruptions

πŸ”§ Requirements

  • Citrix PVS Console: Must be installed on the machine running the script
  • PowerShell: Version 5.1 or later
  • Permissions:
    • PVS farm administrator rights or read access to PVS database
    • Local administrator rights (for EventLog source registration)
  • Network Access: Connectivity to PVS servers (and subsequentially their database)

πŸ“¦ Installation

  1. Clone this repository or download the script:
git clone https://github.com/MathiasK-SVA/pvs-radar.git
cd pvs-radar
  1. Ensure the Citrix PVS Console is installed on your system

  2. Verify PowerShell execution policy allows script execution:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

πŸš€ Usage

Basic Analysis

.\PVS-RADAR.ps1 -PvsServer "PVS01" -SiteName "Production"

Comprehensive Analysis with All Features

.\PVS-RADAR.ps1 `
    -PvsServer "PVS01" `
    -SiteName "Production" `
    -WriteToEventLog `
    -OutputJson "C:\Reports\PVS-Status-$(Get-Date -Format 'yyyyMMdd-HHmm').json" `
    -ShowDetails `
    -MinimumServers 3 `
    -MinConnections 5 `
    -LogPath "C:\Logs\PVS"

Analysis with Custom Thresholds

.\PVS-RADAR.ps1 `
    -PvsServer "PVS01" `
    -SiteName "Production" `
    -MinimumServers 2 `
    -MinConnections 10 `
    -ShowDetails

πŸ“‹ Parameters

Parameter Type Required Default Description
PvsServer String βœ… - PVS server to connect to
SiteName String βœ… - PVS site name to monitor
MinimumServers Int ❌ 2 Minimum servers required for safe load balancing
MinConnections Int ❌ 0 Minimum active connections to include vDisk in analysis
ShowDetails Switch ❌ - Show detailed version-level information
WriteToEventLog Switch ❌ - Create Windows EventLog entries for replication issues
OutputJson String ❌ - Full path for JSON report output
LogPath String ❌ $env:TEMP Directory for daily log files
Username String ❌ - PVS connection username (if not using current credentials)
Domain String ❌ - Domain for PVS connection
Password String ❌ - Password for PVS connection

πŸ“Š Output Formats

1. Console Output

Real-time status information with color-coded status indicators:

  • [OK]: Properly configured and replicated
  • [WARN]: Load balanced but has replication risks
  • [READY]: Well replicated but could enable load balancing
  • [PROBLEM]: Single server with replication issues

2. JSON Report (-OutputJson)

Structured data export containing comprehensive analysis results:

{
  "ScriptInfo": {
    "ScriptName": "PVS-RADAR",
    "ScriptFullName": "Provisioning Services Replication Analysis & Disk Assessment Reporter",
    "Version": "2.0",
    "RunTime": "2025-01-15 14:30:00",
    "PvsServer": "PVS01",
    "SiteName": "Production"
  },
  "Servers": [...],
  "VDisks": [
    {
      "Name": "WIN10-Image",
      "TotalConnections": 25,
      "ActiveVersions": 2,
      "VersionDetails": [
        {
          "Version": "10",
          "DeviceCount": 15,
          "ReplicationCount": 2,
          "IsReplicationSufficient": true,
          "MissingServers": []
        }
      ]
    }
  ],
  "Summary": {...}
}

3. Windows EventLog (-WriteToEventLog)

  • Source: "PVS-RADAR"
  • Log: Application EventLog
  • Event ID: 2001
  • Type: Warning (for replication issues)

Sample EventLog entry:

PVS-RADAR: vDisk Replication Issue Detected

vDisk Name: WIN10-Image
Version: 10
Missing from servers: PVS03, PVS04

This vDisk version is not sufficiently replicated across the PVS farm.

Generated by PVS-RADAR (Provisioning Services Replication Analysis & Disk Assessment Reporter)

4. Daily Log Files

Located in specified LogPath with format: PVS-RADAR-YYYY-MM-DD.log

[2025-01-15 14:30:15] [INFO] PVS-RADAR started - Server: PVS01, Site: Production
[2025-01-15 14:30:16] [INFO] Found 4 servers in site 'Production'
[2025-01-15 14:30:20] [WARN] Issue detected - vDisk: WIN10-Image, Status: [WARN]

πŸ” What PVS-RADAR Monitors

Version-Level Analysis

  • Replication Status: Checks if each version exists on minimum required servers
  • Sync State: Verifies versions are up-to-date (State=0) on each server
  • Device Connections: Counts active connections per version
  • Access Mode: Only considers production/test versions (Access=0)

Load Balancing Assessment

  • Current Configuration: Identifies load-balanced vs. single-server assignments
  • Readiness Analysis: Determines which vDisks can safely enable load balancing
  • Risk Identification: Highlights load-balanced vDisks with replication gaps

Health Indicators

  • βœ… Healthy: Load balanced + all versions well replicated
  • ⚠️ At Risk: Load balanced but some versions under-replicated
  • 🟑 Ready: Single server but all versions well replicated
  • πŸ”΄ Problem: Single server + replication issues

πŸ₯ Monitoring Integration

SCOM/Nagios Integration

Use the JSON output and exit codes for monitoring system integration:

$result = .\PVS-RADAR.ps1 -PvsServer "PVS01" -SiteName "Production" -OutputJson "status.json"
if ($LASTEXITCODE -eq 0) { 
    # Process JSON for metrics
    $data = Get-Content "status.json" | ConvertFrom-Json
    # Send metrics to monitoring system
}

Scheduled Analysis

Create a scheduled task for regular analysis:

# Example scheduled task command
"C:\Scripts\PVS-RADAR.ps1" -PvsServer "PVS01" -SiteName "Production" -WriteToEventLog -OutputJson "\\MonitoringShare\PVS\status-$(Get-Date -Format 'yyyyMMdd-HHmm').json"

πŸ› Troubleshooting

Common Issues

"PVS Snap-In not found"

  • Ensure Citrix PVS Console is installed
  • Verify the DLL path: $env:ProgramFiles\Citrix\Provisioning Services Console\Citrix.PVS.SnapIn.dll

"Access Denied" errors

  • Run PowerShell as Administrator (for EventLog source registration)
  • Verify PVS permissions for the user account

"No servers found in site"

  • Verify site name spelling and case sensitivity
  • Ensure connectivity to PVS database server

EventLog registration fails

  • Requires local administrator rights
  • EventLog entries will be skipped if registration fails

Debug Mode

Enable verbose output for troubleshooting:

.\PVS-RADAR.ps1 -PvsServer "PVS01" -SiteName "Production" -Verbose

πŸ“ˆ Best Practices

  1. Regular Analysis: Run at least daily to catch replication issues early
  2. Threshold Tuning: Adjust MinimumServers based on your farm size and SLA requirements
  3. Automated Alerting: Use EventLog integration with monitoring systems
  4. Trend Analysis: Archive JSON reports to track replication health over time
  5. Maintenance Windows: Schedule during low-usage periods for comprehensive ShowDetails runs

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/improvement)
  3. Commit your changes (git commit -am 'Add new feature')
  4. Push to the branch (git push origin feature/improvement)
  5. Create a Pull Request

Development Guidelines

  • Follow PowerShell best practices and style guidelines
  • Add appropriate error handling and logging
  • Update documentation for new features
  • Test with multiple PVS farm configurations

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Citrix Systems for the PVS PowerShell SDK
  • Community contributors who provided testing and feedback

πŸ“ž Support


⚠️ Disclaimer: PVS-RADAR is provided as-is for monitoring and analysis purposes only. It does not make any changes to your PVS configuration. Always test in a non-production environment first.

About

PowerShell-based monitoring tool for Citrix Provisioning Services (PVS) environments with comprehensive vDisk replication analysis

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages