Skip to content

Commit f98276b

Browse files
committed
feat: enhance repository with additional tools and security features
1 parent 3f8a978 commit f98276b

6 files changed

Lines changed: 345 additions & 85 deletions

File tree

.ultra-secure-status

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# ULTRA SECURE VERIFIED COMMITS ✅
2+
Repository: vmware-tools-no-reboot
3+
Security Level: MAXIMUM
4+
5+
## Contributors Verification Status:
6+
✅ uldyssian-sh: GPG verified commits (registered key)
7+
✅ dependabot[bot]: GitHub native verified commits
8+
✅ actions-user: GitHub native verified commits
9+
10+
## Security Features:
11+
- Zero sensitive data in workflows
12+
- No GPG keys in GitHub Secrets
13+
- GitHub native verification only
14+
- Ultra secure contributors setup
15+
16+
Status: ALL CONTRIBUTORS VERIFIED ✅
17+
Updated: January 3, 2026

.workflow-trigger

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Workflow Trigger
2+
Repository: vmware-tools-no-reboot
3+
Triggered: January 3, 2026
4+
Purpose: Activate actions-user contributor
5+
6+
This file triggers the contributors workflow to activate actions-user.
7+
After workflow runs, actions-user will appear in contributors list.

README.md

Lines changed: 84 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# VMware Tools No-Reboot Upgrade PowerCLI Solution
1+
# VMware Tools Conditional No-Reboot Upgrade PowerCLI Solution
22

33
[![PowerCLI](https://img.shields.io/badge/PowerCLI-Compatible-blue.svg)](https://github.com/uldyssian-sh/vmware-tools-no-reboot)
44
[![VMware](https://img.shields.io/badge/VMware-vSphere-green.svg)](https://github.com/uldyssian-sh/vmware-tools-no-reboot)
@@ -9,31 +9,30 @@
99

1010
## 📋 Overview
1111

12-
This PowerCLI solution provides enterprise-grade automation for upgrading VMware Tools without requiring virtual machine reboots. The script implements advanced techniques to perform in-place VMware Tools upgrades while VMs remain powered on, minimizing downtime and maintaining business continuity.
12+
This PowerCLI solution provides intelligent conditional upgrading of VMware Tools without requiring virtual machine reboots. The script performs comprehensive validation before upgrading, ensuring that upgrades only occur when necessary and safe, while maintaining zero downtime for your virtual infrastructure.
1313

14-
> **Latest Update**: Repository includes comprehensive no-reboot upgrade strategies, service management, and enterprise-grade monitoring capabilities.
14+
> **Based on**: Medium article methodology for conditional no-reboot VMware Tools upgrades with comprehensive state validation.
1515
1616
![VMware Tools No-Reboot Upgrade Process](https://miro.medium.com/v2/resize:fit:720/format:webp/1*Fah91BFN4VYkjqjzvVIS7g.jpeg)
1717

18-
*Enterprise PowerCLI solution for zero-downtime VMware Tools upgrades*
18+
*Intelligent conditional upgrade solution for VMware Tools without reboots*
1919

2020
## 🎯 Key Features
2121

22-
- **Zero Downtime**: Upgrade VMware Tools without VM reboots
23-
- **Service Management**: Intelligent VMware Tools service handling
24-
- **Bulk Operations**: Process multiple VMs simultaneously with controlled batching
25-
- **Safety Validation**: Pre-upgrade compatibility checks and post-upgrade verification
26-
- **Rollback Capability**: Automatic rollback on upgrade failures
27-
- **Enterprise Ready**: Production-grade solution with comprehensive logging and monitoring
22+
- **Conditional Upgrade Logic**: Upgrades only when VMware Tools need updating and conditions are met
23+
- **Comprehensive State Validation**: Checks ToolsVersionStatus2, ToolsStatus, and ToolsRunningStatus
24+
- **Zero Downtime**: No VM reboots required during upgrade process
25+
- **Intelligent Pre-Checks**: Validates Tools are running, installed, and upgradeable
26+
- **Before/After Comparison**: Detailed state reporting and success validation
27+
- **Enterprise Ready**: Professional error handling and credential management
2828

2929
## 🚀 Quick Start
3030

3131
### Prerequisites
3232

33-
- **PowerCLI**: VMware PowerCLI module installed and loaded
33+
- **PowerCLI**: VMware PowerCLI module must be already loaded in session
3434
- **vCenter Access**: Administrative privileges on target vCenter Server
35-
- **PowerShell**: PowerShell 5.1 or later (Windows PowerShell or PowerShell Core)
36-
- **VM Requirements**: VMs must be powered on with VMware Tools already installed
35+
- **VM Requirements**: VM must be powered on with VMware Tools running
3736

3837
### Installation
3938

@@ -42,114 +41,114 @@ This PowerCLI solution provides enterprise-grade automation for upgrading VMware
4241
git clone https://github.com/uldyssian-sh/vmware-tools-no-reboot.git
4342
cd vmware-tools-no-reboot
4443
45-
# Install required PowerShell modules
46-
.\requirements.psd1 # Run the installation script
47-
48-
# Configure execution policy (if needed)
49-
.\scripts\Set-ExecutionPolicy-Helper.ps1
50-
51-
# Run the no-reboot upgrade script
44+
# Run the conditional upgrade script
5245
.\scripts\Upgrade-VMTools-NoReboot.ps1
5346
```
5447

5548
## 📖 Usage Guide
5649

5750
### Basic Usage
5851

59-
1. **Run Pre-Upgrade Validation** (recommended first step):
52+
1. **Interactive Mode** (recommended):
6053
```powershell
61-
.\Upgrade-VMTools-NoReboot.ps1 -ValidationOnly
62-
# Checks VM compatibility and current Tools status
54+
.\Upgrade-VMTools-NoReboot.ps1
55+
# Script will prompt for vCenter and VM name
6356
```
6457

65-
2. **Perform No-Reboot Upgrade** (single VM):
58+
2. **Parameter Mode**:
6659
```powershell
67-
.\Upgrade-VMTools-NoReboot.ps1 -VMName "VM-001" -NoReboot
60+
.\Upgrade-VMTools-NoReboot.ps1 -vCenter "vcenter.example.com" -VMName "VM-001"
6861
```
6962

70-
3. **Bulk No-Reboot Upgrade** (multiple VMs):
63+
3. **With Credentials**:
7164
```powershell
72-
.\Upgrade-VMTools-NoReboot.ps1 -Cluster "Production-Cluster" -NoReboot -BatchSize 5
65+
$cred = Get-Credential
66+
.\Upgrade-VMTools-NoReboot.ps1 -vCenter "vcenter.example.com" -VMName "VM-001" -Credential $cred
7367
```
7468

75-
### Interactive Prompts
69+
### Upgrade Conditions
7670

77-
The script will prompt for:
78-
- **vCenter Server**: FQDN or IP address of your vCenter Server
79-
- **Credentials**: vCenter administrator credentials
80-
- **Target Selection**: VM names, clusters, or datacenters
81-
- **Upgrade Strategy**: No-reboot method selection
82-
- **Confirmation**: Final confirmation before starting upgrades
71+
The script performs conditional upgrades only when ALL conditions are met:
72+
73+
1. **VMware Tools Running**: ToolsRunningStatus must be "guestToolsRunning"
74+
2. **Upgrade Needed**: ToolsVersionStatus2 or ToolsStatus must be "guestToolsNeedUpgrade" or "guestToolsSupportedOld"
75+
3. **Tools Installed**: Tools must not be in "guestToolsNotInstalled" or "toolsNotInstalled" state
8376

8477
### Sample Output
8578

8679
```
87-
=== VMware Tools No-Reboot Upgrade ===
80+
=== VMware Tools Conditional Upgrade (No Reboot) ===
8881
8982
Enter vCenter FQDN or IP: vcenter.example.com
90-
Target: Production-Cluster
91-
Strategy: No-Reboot Upgrade
92-
93-
=== PRE-UPGRADE VALIDATION ===
94-
VMName PowerState ToolsVersion ToolsStatus NoRebootCapable
95-
------ ---------- ------------ ----------- ---------------
96-
VM-001 PoweredOn 12.1.5 toolsOk Yes
97-
VM-002 PoweredOn 11.3.5 toolsOld Yes
98-
VM-003 PoweredOn 12.0.0 toolsOld Yes
99-
100-
Compatible VMs for no-reboot upgrade: 3
101-
102-
=== UPGRADE EXECUTION ===
103-
[VM-001] Starting no-reboot upgrade...
104-
[VM-001] Stopping VMware Tools service...
105-
[VM-001] Installing new Tools version...
106-
[VM-001] Starting VMware Tools service...
107-
[VM-001] Validating upgrade success...
108-
[VM-001] ✅ Upgrade completed successfully (12.1.5 → 12.2.0)
109-
110-
Total upgraded: 3/3 VMs
111-
Average upgrade time: 45 seconds per VM
112-
Zero reboots required ✅
83+
Login to vCenter...
84+
Connected to vcenter.example.com
85+
86+
Enter the VM NAME for VMware Tools upgrade: VM-001
87+
VM found: VM-001
88+
89+
=== Current VMware Tools State ===
90+
VMName ToolsVersion ToolsVersionStatus2 ToolsStatus ToolsRunningStatus
91+
------ ------------ ------------------- ----------- ------------------
92+
VM-001 12.1.5 guestToolsNeedUpgrade guestToolsSupportedOld guestToolsRunning
93+
94+
Checking upgrade conditions...
95+
✔ All conditions OK. Proceeding with VMware Tools upgrade (No Reboot)...
96+
97+
Starting VMware Tools upgrade...
98+
Update-Tools command executed.
99+
100+
Waiting 10 seconds for VMware Tools status to refresh...
101+
102+
=== VMware Tools State AFTER Upgrade ===
103+
VMName OldVersion NewVersion ToolsVersionStatus2 ToolsStatus ToolsRunningStatus
104+
------ ---------- ---------- ------------------- ----------- ------------------
105+
VM-001 12.1.5 12.2.0 guestToolsCurrent guestToolsCurrent guestToolsRunning
106+
107+
✔ VMware Tools upgrade SUCCESSFUL (no reboot triggered by script).
113108
```
114109

115110
## 🔧 Technical Details
116111

117-
### No-Reboot Upgrade Process
112+
### Conditional Upgrade Process
118113

119-
1. **Pre-Validation Phase**:
120-
- Check VM power state and Tools status
121-
- Verify no-reboot upgrade compatibility
122-
- Validate sufficient disk space and resources
114+
1. **PowerCLI Validation**: Checks if Connect-VIServer is available (assumes PowerCLI already loaded)
115+
2. **vCenter Connection**: Establishes secure connection with credential validation
116+
3. **VM Discovery**: Locates target VM and validates existence
117+
4. **State Assessment**: Comprehensive VMware Tools state evaluation
118+
5. **Condition Validation**: Verifies all upgrade prerequisites are met
119+
6. **Upgrade Execution**: Performs no-reboot upgrade using Update-Tools -NoReboot
120+
7. **Post-Upgrade Validation**: Confirms successful upgrade and state changes
123121

124-
2. **Service Management Phase**:
125-
- Gracefully stop VMware Tools services
126-
- Preserve service configurations and settings
127-
- Maintain network connectivity during upgrade
122+
### VMware Tools State Validation
128123

129-
3. **Upgrade Execution Phase**:
130-
- Download and install new Tools version
131-
- Update drivers and components in-place
132-
- Preserve VM customizations and settings
124+
The script evaluates multiple VMware Tools status fields:
133125

134-
4. **Post-Upgrade Validation**:
135-
- Restart VMware Tools services
136-
- Verify all components are functional
137-
- Validate network and storage connectivity
126+
- **ToolsVersion**: Current installed version number
127+
- **ToolsVersionStatus2**: Detailed version status (guestToolsCurrent, guestToolsNeedUpgrade, guestToolsSupportedOld)
128+
- **ToolsStatus**: General Tools status (guestToolsCurrent, guestToolsSupportedOld, toolsNotInstalled)
129+
- **ToolsRunningStatus**: Service running state (guestToolsRunning, guestToolsNotRunning)
138130

139-
### Supported Upgrade Scenarios
131+
### Upgrade Conditions Logic
140132

141-
- **Minor Version Upgrades**: 12.1.x → 12.2.x (No reboot required)
142-
- **Patch Updates**: 12.1.5 → 12.1.10 (No reboot required)
143-
- **Service Pack Updates**: With compatible drivers (No reboot required)
144-
- **Major Version Upgrades**: 11.x → 12.x (Reboot may be required for some components)
133+
```powershell
134+
# Condition 1: Tools must be running
135+
$currentRunningStatus -eq "guestToolsRunning"
136+
137+
# Condition 2: Upgrade needed
138+
$upgradeStates = @("guestToolsNeedUpgrade", "guestToolsSupportedOld")
139+
$currentStatus2 -in $upgradeStates -or $currentToolsStatus -in $upgradeStates
140+
141+
# Condition 3: Tools installed
142+
$currentStatus2 -ne "guestToolsNotInstalled" -and $currentToolsStatus -ne "toolsNotInstalled"
143+
```
145144

146145
### Safety Features
147146

148-
- **Compatibility Checking**: Pre-upgrade validation of VM and Tools compatibility
149-
- **Service Preservation**: Maintains all VMware Tools service configurations
150-
- **Automatic Rollback**: Reverts changes if upgrade fails
151-
- **Health Monitoring**: Continuous monitoring during upgrade process
152-
- **Batch Processing**: Controlled batch execution to prevent resource exhaustion
147+
- **Pre-Condition Validation**: Comprehensive state checking before upgrade
148+
- **Error Handling**: Graceful error handling with detailed messages
149+
- **Connection Management**: Proper vCenter connection lifecycle
150+
- **State Comparison**: Before/after upgrade state validation
151+
- **Success Verification**: Multi-factor upgrade success evaluation
153152

154153
## 📁 Repository Structure
155154

security/Security-Validation.ps1

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<#
2+
.SYNOPSIS
3+
Security Validation for VMware Tools Upgrade Operations
4+
5+
.DESCRIPTION
6+
Validates security requirements and configurations before performing
7+
VMware Tools upgrades in enterprise environments.
8+
9+
.NOTES
10+
Author: uldyssian-sh
11+
Version: 1.0.0
12+
#>
13+
14+
function Test-SecurityRequirements {
15+
param(
16+
[string]$vCenter,
17+
[PSCredential]$Credential
18+
)
19+
20+
Write-Host "=== Security Validation ===" -ForegroundColor Cyan
21+
22+
$securityChecks = @()
23+
24+
# Check 1: Credential validation
25+
if ($Credential) {
26+
$securityChecks += [PSCustomObject]@{
27+
Check = "Credential Provided"
28+
Status = "✅ PASS"
29+
Details = "Secure credential object provided"
30+
}
31+
} else {
32+
$securityChecks += [PSCustomObject]@{
33+
Check = "Credential Provided"
34+
Status = "❌ FAIL"
35+
Details = "No credential provided - security risk"
36+
}
37+
}
38+
39+
# Check 2: vCenter HTTPS validation
40+
if ($vCenter -match "^https://") {
41+
$securityChecks += [PSCustomObject]@{
42+
Check = "HTTPS Connection"
43+
Status = "✅ PASS"
44+
Details = "HTTPS protocol specified"
45+
}
46+
} else {
47+
$securityChecks += [PSCustomObject]@{
48+
Check = "HTTPS Connection"
49+
Status = "⚠️ WARNING"
50+
Details = "Consider using HTTPS for secure connections"
51+
}
52+
}
53+
54+
# Check 3: PowerCLI security settings
55+
$ceipSetting = Get-PowerCLIConfiguration -Scope User | Select-Object -ExpandProperty ParticipateInCEIP
56+
$securityChecks += [PSCustomObject]@{
57+
Check = "CEIP Participation"
58+
Status = if ($ceipSetting -eq $false) { "✅ PASS" } else { "⚠️ WARNING" }
59+
Details = "CEIP: $ceipSetting"
60+
}
61+
62+
# Display results
63+
$securityChecks | Format-Table -AutoSize
64+
65+
$failedChecks = ($securityChecks | Where-Object { $_.Status -like "*FAIL*" }).Count
66+
$warningChecks = ($securityChecks | Where-Object { $_.Status -like "*WARNING*" }).Count
67+
68+
Write-Host ""
69+
if ($failedChecks -eq 0) {
70+
Write-Host "✅ Security validation passed with $warningChecks warnings" -ForegroundColor Green
71+
return $true
72+
} else {
73+
Write-Host "❌ Security validation failed with $failedChecks critical issues" -ForegroundColor Red
74+
return $false
75+
}
76+
}
77+
78+
# Export function
79+
Export-ModuleMember -Function Test-SecurityRequirements

0 commit comments

Comments
 (0)