Files
claudetools/projects/msp-tools/toolkit/README.md
Mike Swanson 07816eae46 docs: Add comprehensive project documentation from claude-projects scan
Added:
- PROJECTS_INDEX.md - Master catalog of 7 active projects
- GURURMM_API_ACCESS.md - Complete API documentation and credentials
- clients/dataforth/dos-test-machines/README.md - DOS update system docs
- clients/grabb-durando/website-migration/README.md - Migration procedures
- clients/internal-infrastructure/ix-server-issues-2026-01-13.md - Server issues
- projects/msp-tools/guru-connect/README.md - Remote desktop architecture
- projects/msp-tools/toolkit/README.md - MSP PowerShell tools
- projects/internal/acg-website-2025/README.md - Website rebuild docs
- test_gururmm_api.py - GuruRMM API testing script

Modified:
- credentials.md - Added GuruRMM database and API credentials
- GuruRMM agent integration files (WebSocket transport)

Total: 38,000+ words of comprehensive project documentation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-22 09:58:32 -07:00

524 lines
12 KiB
Markdown

# MSP Toolkit - PowerShell Scripts for MSP Technicians
**Project Type:** Internal Tool / MSP Platform
**Status:** Production
**Technology:** PowerShell
**Deployment:** Web-hosted via azcomputerguru.com
**Access Method:** One-liner execution via `iex (irm ...)`
## Overview
Collection of PowerShell scripts for MSP technicians, accessible via web for easy remote execution. Designed for quick deployment on client machines without file downloads or installation.
**Primary Use Cases:**
- Initial system assessment
- Client onboarding
- Troubleshooting and diagnostics
- Automated configuration tasks
---
## Quick Access
### Interactive Menu
```powershell
iex (irm azcomputerguru.com/tools/msp-toolkit.ps1)
```
### Direct Script Execution
```powershell
# System Information
iex (irm azcomputerguru.com/tools/Get-SystemInfo.ps1)
# Health Check
iex (irm azcomputerguru.com/tools/Invoke-HealthCheck.ps1)
# Create Local Admin
iex (irm azcomputerguru.com/tools/Create-LocalAdmin.ps1)
# Configure Static IP
iex (irm azcomputerguru.com/tools/Set-StaticIP.ps1)
# Join Domain
iex (irm azcomputerguru.com/tools/Join-Domain.ps1)
# Install RMM Agent
iex (irm azcomputerguru.com/tools/Install-RMMAgent.ps1)
```
### Parameterized Execution
```powershell
# Run specific script from main menu
iex (irm azcomputerguru.com/tools/msp-toolkit.ps1) -Script systeminfo
iex (irm azcomputerguru.com/tools/msp-toolkit.ps1) -Script healthcheck
iex (irm azcomputerguru.com/tools/msp-toolkit.ps1) -Script localadmin
```
---
## Available Scripts
### Information & Diagnostics
#### Get-SystemInfo.ps1
Comprehensive system information report including:
- OS version and build
- Hardware specifications (CPU, RAM, disk)
- Network configuration
- Installed software
- Windows updates status
- Security settings
**Usage:**
```powershell
iex (irm azcomputerguru.com/tools/Get-SystemInfo.ps1)
```
**Output:** Formatted console report with key system details
---
#### Invoke-HealthCheck.ps1
System health check and diagnostics including:
- Disk space warnings
- Service status verification
- Event log errors (last 24 hours)
- Network connectivity tests
- Antivirus status
- Windows Defender status
**Usage:**
```powershell
iex (irm azcomputerguru.com/tools/Invoke-HealthCheck.ps1)
```
**Output:** Pass/fail status for each check with recommendations
---
### System Configuration
#### Create-LocalAdmin.ps1
Create local administrator account with secure random password.
**Features:**
- Generates cryptographically secure 16-character password
- Creates account with Administrator group membership
- Password never expires setting
- Returns credentials for documentation
**Usage:**
```powershell
iex (irm azcomputerguru.com/tools/Create-LocalAdmin.ps1)
# With custom username
iex (irm azcomputerguru.com/tools/Create-LocalAdmin.ps1) -Username "ACGAdmin"
```
**Output:** Username and generated password (save immediately!)
---
#### Set-StaticIP.ps1
Configure network adapter with static IP address.
**Features:**
- Lists available network adapters
- Sets IP address, subnet mask, gateway
- Configures DNS servers
- Validates configuration
**Usage:**
```powershell
iex (irm azcomputerguru.com/tools/Set-StaticIP.ps1)
```
**Interactive Prompts:**
- Network adapter selection
- IP address
- Subnet mask
- Default gateway
- DNS servers (primary and secondary)
---
#### Join-Domain.ps1
Join computer to Active Directory domain.
**Features:**
- Validates domain reachability
- Prompts for domain admin credentials
- Joins domain
- Optional OU specification
- Restart prompt
**Usage:**
```powershell
iex (irm azcomputerguru.com/tools/Join-Domain.ps1)
```
**Interactive Prompts:**
- Domain name (e.g., contoso.local)
- Domain admin username
- Domain admin password
- OU path (optional)
---
### MSP Tools
#### Install-RMMAgent.ps1
Install GuruRMM monitoring agent.
**Features:**
- Downloads latest agent installer
- Installs with organization-specific API key
- Registers machine in GuruRMM
- Verifies service running
**Usage:**
```powershell
iex (irm azcomputerguru.com/tools/Install-RMMAgent.ps1)
```
**Configuration:**
- Server URL: wss://rmm-api.azcomputerguru.com/ws
- API Key: Embedded in script (rotated periodically)
---
## Project Structure
```
msp-toolkit/
├── msp-toolkit.ps1 # Main launcher with interactive menu
├── scripts/ # Individual PowerShell scripts
│ ├── Get-SystemInfo.ps1
│ ├── Invoke-HealthCheck.ps1
│ ├── Create-LocalAdmin.ps1
│ ├── Set-StaticIP.ps1
│ ├── Join-Domain.ps1
│ └── Install-RMMAgent.ps1
├── config/ # Configuration files (JSON)
│ ├── applications.json
│ ├── presets.json
│ ├── scripts.json
│ ├── themes.json
│ └── tweaks.json
├── functions/ # Shared functions
│ ├── public/
│ └── private/
├── deploy.bat # Deployment script
└── README.md
```
---
## Development
### Local Development
```bash
# Clone repository (if tracked in Git)
cd ~/claude-projects/msp-toolkit
# Edit scripts
code scripts/Get-SystemInfo.ps1
# Test locally
powershell -ExecutionPolicy Bypass -File scripts/Get-SystemInfo.ps1
```
### Testing
```powershell
# Test script syntax
powershell -File Test-Script.ps1
# Analyze with PSScriptAnalyzer
Install-Module -Name PSScriptAnalyzer -Force
Invoke-ScriptAnalyzer -Path scripts/Get-SystemInfo.ps1
```
### Deployment
#### Automatic Deployment
```batch
# Run deployment script (Windows)
deploy.bat
```
#### Manual Deployment
```bash
# Deploy main launcher
scp msp-toolkit.ps1 claude@ix.azcomputerguru.com:/home/azcomputerguru/public_html/tools/
# Deploy all scripts
scp scripts/*.ps1 claude@ix.azcomputerguru.com:/home/azcomputerguru/public_html/tools/
# Set permissions
ssh claude@ix.azcomputerguru.com "chmod 644 /home/azcomputerguru/public_html/tools/*.ps1"
# Verify deployment
curl -I https://www.azcomputerguru.com/tools/msp-toolkit.ps1
```
---
## Web Server Configuration
### Location
**Server:** ix.azcomputerguru.com
**Path:** `/home/azcomputerguru/public_html/tools/`
**URL:** https://www.azcomputerguru.com/tools/
### File Structure on Server
```
/home/azcomputerguru/public_html/tools/
├── msp-toolkit.ps1
├── Get-SystemInfo.ps1
├── Invoke-HealthCheck.ps1
├── Create-LocalAdmin.ps1
├── Set-StaticIP.ps1
├── Join-Domain.ps1
├── Install-RMMAgent.ps1
└── [other scripts]
```
### Permissions
```bash
# Files: 644 (rw-r--r--)
chmod 644 /home/azcomputerguru/public_html/tools/*.ps1
# Directory: 755 (rwxr-xr-x)
chmod 755 /home/azcomputerguru/public_html/tools/
```
### MIME Type
Apache serves .ps1 files as text/plain by default (correct for PowerShell scripts).
---
## Security Considerations
### Transport Security
- **HTTPS Required:** All scripts served over TLS
- **Certificate:** Let's Encrypt (auto-renewed via cPanel)
- **Integrity:** Scripts signed with code signing certificate (future enhancement)
### Script Safety
- **Execution Policy:** Scripts use `-ExecutionPolicy Bypass` flag
- **No Automatic Execution:** User must explicitly run `iex (irm ...)`
- **Review Before Use:** Technicians should review scripts before deployment
- **Sensitive Parameters:** Passwords, API keys handled carefully
### Best Practices
1. Always review scripts before executing in production
2. Test in sandbox environment first
3. Validate script integrity (hash checking - future)
4. Rotate API keys periodically (RMMAgent.ps1)
5. Log script executions for audit trail
---
## Usage Examples
### Typical Workflow: New Client Onboarding
```powershell
# 1. Gather system information
iex (irm azcomputerguru.com/tools/Get-SystemInfo.ps1)
# 2. Run health check
iex (irm azcomputerguru.com/tools/Invoke-HealthCheck.ps1)
# 3. Create local admin account
iex (irm azcomputerguru.com/tools/Create-LocalAdmin.ps1) -Username "ACGAdmin"
# SAVE PASSWORD IMMEDIATELY!
# 4. Install RMM agent
iex (irm azcomputerguru.com/tools/Install-RMMAgent.ps1)
# 5. Configure static IP (if needed)
iex (irm azcomputerguru.com/tools/Set-StaticIP.ps1)
# 6. Join domain (if applicable)
iex (irm azcomputerguru.com/tools/Join-Domain.ps1)
```
### Troubleshooting Client Issue
```powershell
# Quick diagnostic check
iex (irm azcomputerguru.com/tools/Invoke-HealthCheck.ps1)
# Detailed system information
iex (irm azcomputerguru.com/tools/Get-SystemInfo.ps1) | Out-File C:\system-info.txt
```
---
## Future Enhancements
### Planned Features
- [ ] Web-based UI for script selection and parameter input
- [ ] Script versioning and rollback capability
- [ ] Logging and execution history in GuruRMM
- [ ] Additional scripts for common MSP tasks
- [ ] API endpoints for RMM integration
- [ ] Multi-tenancy support (client-specific scripts)
### Ideas
- **Windows Updates:** Script to check and install updates
- **Software Deployment:** Install common applications (Chrome, Adobe Reader, etc.)
- **Security Audit:** Comprehensive security posture assessment
- **Network Diagnostics:** Advanced network troubleshooting
- **Backup Verification:** Check backup status (Veeam, Windows Backup, etc.)
- **Certificate Management:** Check SSL/TLS certificate expiration
- **Group Policy Status:** Verify GPO application
- **Event Log Analysis:** Parse event logs for specific errors
---
## Troubleshooting
### Script Won't Download
**Issue:** `iex (irm azcomputerguru.com/tools/script.ps1)` fails
**Check:**
1. Internet connectivity: `Test-NetConnection azcomputerguru.com -Port 443`
2. DNS resolution: `nslookup azcomputerguru.com`
3. Firewall blocking HTTPS?
4. Proxy configuration needed?
**Solution:**
```powershell
# Test basic connectivity
Invoke-WebRequest -Uri https://www.azcomputerguru.com/tools/msp-toolkit.ps1 -UseBasicParsing
# Try with explicit proxy
$proxy = [System.Net.WebRequest]::GetSystemWebProxy()
Invoke-WebRequest -Uri https://www.azcomputerguru.com/tools/msp-toolkit.ps1 -Proxy $proxy.GetProxy("https://www.azcomputerguru.com")
```
### Execution Policy Restriction
**Issue:** Script execution blocked by execution policy
**Solution:**
```powershell
# Check current policy
Get-ExecutionPolicy
# Bypass for single session
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
iex (irm azcomputerguru.com/tools/script.ps1)
# OR use -ExecutionPolicy flag
powershell -ExecutionPolicy Bypass -Command "iex (irm azcomputerguru.com/tools/script.ps1)"
```
### Script Error
**Issue:** Script fails with unexpected error
**Debug:**
```powershell
# Enable verbose output
$VerbosePreference = "Continue"
iex (irm azcomputerguru.com/tools/script.ps1)
# Capture error details
try {
iex (irm azcomputerguru.com/tools/script.ps1)
} catch {
$_.Exception.Message
$_.ScriptStackTrace
}
```
---
## Monitoring and Logs
### Server Logs
**Apache Access Log:** `/var/log/apache2/access_log` or `/usr/local/apache/logs/domlogs/azcomputerguru.com`
**Track Usage:**
```bash
# Count script downloads
grep "GET /tools/" /var/log/apache2/access_log | wc -l
# Most popular scripts
grep "GET /tools/" /var/log/apache2/access_log | awk '{print $7}' | sort | uniq -c | sort -nr
```
### Client Execution Logs
**Future:** Integrate with GuruRMM to log script executions
- Machine ID
- Script name
- Execution timestamp
- Result (success/failure)
- Output summary
---
## Related Projects
**GuruRMM:** MSP monitoring platform (Install-RMMAgent.ps1 integration)
**ClaudeTools:** Project tracking and documentation system
**MSP Operations:** Internal tools and workflows
---
## Source Repository
**Location:** `C:\Users\MikeSwanson\claude-projects\msp-toolkit`
**Git Status:** Not currently tracked in Git (consider adding)
---
## Maintenance
### Regular Tasks
**Monthly:**
- [ ] Review script usage statistics
- [ ] Check for PowerShell best practices violations
- [ ] Update documentation for new scripts
- [ ] Test scripts on Windows 10/11 and Server 2016/2019/2022
**Quarterly:**
- [ ] Security audit of scripts
- [ ] Rotate RMM agent API keys
- [ ] Review and implement feature requests
- [ ] Performance optimization
**Annually:**
- [ ] Comprehensive security review
- [ ] Major version updates
- [ ] Archive old/unused scripts
---
## Support
**Technical Contact:** Mike Swanson
**Email:** mike@azcomputerguru.com
**Phone:** 520.304.8300
**Internal Documentation:** `~/claude-projects/msp-toolkit/`
**Deployment Server:** ix.azcomputerguru.com
---
**Project Status:** Production - Active Use
**Version:** 1.x (no formal versioning yet)
**Last Updated:** 2026-01-22