en-US/about_PsPatchMyPC.help.txt

TOPIC
    about_PsPatchMyPC
 
SHORT DESCRIPTION
    Enterprise application patching module with winget integration, progressive
    deferrals, and orchestrator-agnostic deployment support.
 
LONG DESCRIPTION
    PsPatchMyPC is a PowerShell module that provides enterprise-grade application
    patching capabilities by integrating with the Windows Package Manager (winget).
     
    Key features include:
     
    * Automatic winget installation and configuration
    * Progressive deferral system inspired by macadmins Nudge
    * WPF notification dialogs with countdown timers
    * BurntToast integration for toast notifications
    * Dual logging (CMTrace format files + Windows Event Log)
    * Registry-based state persistence
    * Scheduled task management (SYSTEM and User contexts)
    * Enterprise application catalog with per-app configuration
    * Compliance reporting for Intune, FleetDM, and SCCM
 
GETTING STARTED
    # Import the module
    Import-Module PsPatchMyPC
     
    # Initialize winget (auto-installs if needed)
    Initialize-Winget
     
    # Check for available updates
    Get-PatchStatus
     
    # Run a patch cycle
    Start-PatchCycle -Interactive
     
    # Register scheduled tasks
    Register-PatchSchedule
 
DEFERRAL SYSTEM
    PsPatchMyPC implements a Nudge-inspired progressive deferral system:
     
    Phase | Hours to Deadline | Refresh Interval | Deferral Options
    ------------|-------------------|------------------|------------------
    Initial | > 72 | 5 hours | 1hr, 4hr, Tomorrow, Custom
    Approaching | 24-72 | 100 minutes | 1hr, 4hr, Tomorrow
    Imminent | 1-24 | 10 minutes | 1hr, 4hr
    Elapsed | < 0 (past due) | 5 minutes | 1hr only (aggressive)
     
    When a new version is detected, deferral counts reset automatically.
 
CONFIGURATION
    Module configuration is stored in:
    * Module manifest: Default settings
    * config.psd1: Customizable settings
    * applications.json: Managed application catalog
     
    Environment variables for override:
    * PSPMPC_LOG_PATH - Custom log directory
    * PSPMPC_CONFIG_PATH - Custom config location
    * PSPMPC_EVENT_LOG - Enable/disable Event Log (true/false)
    * PSPMPC_WINGET_SOURCE - Private winget source URL
 
ORCHESTRATOR INTEGRATION
    PsPatchMyPC is designed to work with any orchestrator:
     
    Intune:
        Deploy via Win32 app or Proactive Remediation
        Detection script: Get-PatchCompliance returns exit 0/1
         
    FleetDM:
        Deploy via Fleet scripts
        Compliance JSON at C:\ProgramData\FleetDM\patch_status.json
         
    SCCM/MECM:
        Deploy via Task Sequence or Application
        CMTrace-compatible logs at C:\ProgramData\PsPatchMyPC\Logs
         
    Ansible/Chef:
        Call module functions via PowerShell scripts
        Export-PatchReport for compliance data
 
LOGGING
    Logs are written to two locations:
     
    1. CMTrace-compatible files:
       C:\ProgramData\PsPatchMyPC\Logs\PsPatchMyPC_YYYYMMDD.log
        
    2. Windows Event Log:
       Application and Services Logs > PsPatchMyPC
       Event IDs: 1000 (Info), 2000 (Warning), 3000 (Error)
 
EXAMPLES
    # Check current patch status
    Get-PatchStatus -ManagedOnly
     
    # Run silent patch cycle
    Start-PatchCycle -NoReboot
     
    # Show notification dialog
    Show-PatchNotification -Type Dialog
     
    # Export compliance report
    Export-PatchReport -Path "C:\Reports\status.json"
     
    # Add application to catalog
    Add-ManagedApplication -Id 'CustomApp.Package' -Name 'Custom App'
 
SEE ALSO
    Get-PatchStatus
    Start-PatchCycle
    Initialize-Winget
    Register-PatchSchedule
    Export-PatchReport
 
KEYWORDS
    Patching, Winget, Enterprise, Updates, Intune, FleetDM, SCCM, Notifications