Initial commit: Organized PowerShell scripts for ShopDB asset collection
Structure: - asset-collection/: Local PC data collection scripts - remote-execution/: WinRM remote execution scripts - setup-utilities/: Configuration and testing utilities - registry-backup/: GE registry backup scripts - winrm-https/: WinRM HTTPS certificate setup - docs/: Complete documentation Each folder includes a README with detailed documentation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
327
docs/TECHNICAL_ARCHITECTURE.md
Normal file
327
docs/TECHNICAL_ARCHITECTURE.md
Normal file
@@ -0,0 +1,327 @@
|
||||
# Technical Architecture Documentation
|
||||
|
||||
## System Overview
|
||||
|
||||
The GE Manufacturing Asset Management System is a comprehensive PowerShell-based solution designed for automated data collection and centralized asset management in manufacturing environments. The system follows a hybrid architecture combining local data collection, remote API integration, and intelligent manufacturing-specific analysis.
|
||||
|
||||
## Architecture Components
|
||||
|
||||
```
|
||||
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
||||
│ Manufacturing │ │ Data Collection│ │ Centralized │
|
||||
│ PC (Client) │───▶│ & Processing │───▶│ Database │
|
||||
│ │ │ (PowerShell) │ │ (MySQL) │
|
||||
└─────────────────┘ └──────────────────┘ └─────────────────┘
|
||||
│ │ ▲
|
||||
│ │ │
|
||||
▼ ▼ │
|
||||
┌─────────────────┐ ┌──────────────────┐ │
|
||||
│ Windows │ │ Manufacturing │ │
|
||||
│ Registry │ │ Intelligence │ │
|
||||
│ (GE Settings) │ │ Engine │ │
|
||||
└─────────────────┘ └──────────────────┘ │
|
||||
│ │
|
||||
▼ │
|
||||
┌──────────────────┐ │
|
||||
│ Dashboard API │─────────────┘
|
||||
│ Integration │
|
||||
└──────────────────┘
|
||||
```
|
||||
|
||||
## Core Components
|
||||
|
||||
### 1. Data Collection Engine (`Update-PC-CompleteAsset.ps1`)
|
||||
|
||||
**Primary Responsibilities:**
|
||||
- Orchestrates the entire data collection process
|
||||
- Coordinates with multiple data sources and APIs
|
||||
- Handles error recovery and graceful degradation
|
||||
- Provides real-time feedback and logging
|
||||
|
||||
**Key Functions:**
|
||||
|
||||
#### `Collect-SystemInfo`
|
||||
```powershell
|
||||
# Comprehensive system information gathering
|
||||
- Hardware identification (manufacturer, model, serial)
|
||||
- Operating system details and user context
|
||||
- Memory, domain role, and timezone information
|
||||
- PC type classification logic
|
||||
- GE machine number extraction
|
||||
```
|
||||
|
||||
#### `Collect-ShopfloorInfo`
|
||||
```powershell
|
||||
# Manufacturing-specific data collection
|
||||
- Network interface enumeration and analysis
|
||||
- Serial communication port configurations
|
||||
- DNC (Direct Numerical Control) settings extraction
|
||||
- GE Aircraft Engines registry architecture analysis
|
||||
```
|
||||
|
||||
#### `Send-CompleteDataToDashboard`
|
||||
```powershell
|
||||
# Centralized data transmission
|
||||
- Structured API payload construction
|
||||
- HTTP POST transmission with error handling
|
||||
- Response validation and feedback processing
|
||||
```
|
||||
|
||||
### 2. Manufacturing Intelligence Engine (`Get-ShopfloorConfig.ps1`)
|
||||
|
||||
**Primary Responsibilities:**
|
||||
- Deep manufacturing environment analysis
|
||||
- Registry-based configuration extraction
|
||||
- Network topology identification
|
||||
- Communication protocol detection
|
||||
|
||||
**Key Functions:**
|
||||
|
||||
#### `Get-NetworkInterfaceConfig`
|
||||
```powershell
|
||||
# Advanced network analysis
|
||||
- Multi-interface enumeration with active status
|
||||
- Machine network detection (192.168.*.* identification)
|
||||
- DHCP vs static configuration analysis
|
||||
- Gateway and subnet mapping
|
||||
```
|
||||
|
||||
#### `Get-GERegistryInfo` ⭐ **New in v3.0**
|
||||
```powershell
|
||||
# Dual registry architecture analysis
|
||||
- 32-bit registry path: HKLM:\SOFTWARE\GE Aircraft Engines
|
||||
- 64-bit registry path: HKLM:\SOFTWARE\WOW6432Node\GE Aircraft Engines
|
||||
- Smart conflict resolution with priority system
|
||||
- DualPath communication configuration extraction
|
||||
- Per-service architecture tracking
|
||||
```
|
||||
|
||||
#### `Get-DNCConfig`
|
||||
```powershell
|
||||
# Direct Numerical Control configuration
|
||||
- GE Aircraft Engines DNC settings extraction
|
||||
- Multiple registry path analysis
|
||||
- Communication parameter identification
|
||||
- Machine integration settings
|
||||
```
|
||||
|
||||
## Data Flow Architecture
|
||||
|
||||
### Phase 1: System Discovery
|
||||
```
|
||||
PC Environment → System Info Collection → Classification Engine
|
||||
│
|
||||
├─ Hardware Identification (WMI/CIM)
|
||||
├─ Operating System Analysis
|
||||
├─ User Context Determination
|
||||
└─ Environment Classification (Engineer/Shopfloor/Standard)
|
||||
```
|
||||
|
||||
### Phase 2: Manufacturing Intelligence
|
||||
```
|
||||
Registry Analysis → Manufacturing Config → Service Architecture
|
||||
│
|
||||
├─ GE Aircraft Engines Detection (32-bit/64-bit)
|
||||
├─ DualPath Configuration Analysis
|
||||
├─ DNC Service Enumeration
|
||||
└─ Communication Protocol Mapping
|
||||
```
|
||||
|
||||
### Phase 3: Network Topology
|
||||
```
|
||||
Network Interfaces → Machine Network Detection → Communication Analysis
|
||||
│
|
||||
├─ Active Interface Enumeration
|
||||
├─ Machine Network Identification (192.168.*.*)
|
||||
├─ DHCP/Static Configuration Analysis
|
||||
└─ Serial Port Communication Mapping
|
||||
```
|
||||
|
||||
### Phase 4: Data Consolidation
|
||||
```
|
||||
Collected Data → JSON Serialization → API Payload Construction
|
||||
│
|
||||
├─ System Information Packaging
|
||||
├─ Manufacturing Configuration JSON
|
||||
├─ Network Interface Data Arrays
|
||||
└─ Registry Architecture Metadata
|
||||
```
|
||||
|
||||
### Phase 5: Centralized Storage
|
||||
```
|
||||
Dashboard API → Database Normalization → Relational Storage
|
||||
│
|
||||
├─ PC Table (Basic System Information)
|
||||
├─ PC_DNC_Config Table (Manufacturing Settings + Registry Architecture)
|
||||
├─ Network Interfaces (Detailed Network Configuration)
|
||||
├─ Communication Configs (Serial/Protocol Settings)
|
||||
└─ Machines Table (Auto-populated from PC machine numbers)
|
||||
```
|
||||
|
||||
### Phase 6: Machine Auto-Population ⭐ **New in v3.2**
|
||||
```
|
||||
PC Data Collection → Machine Number Extraction → Automated Machine Creation
|
||||
│ │ │
|
||||
├─ Registry Scan ├─ Hostname Patterns ├─ Machine Records
|
||||
├─ DNC Detection ├─ GE Machine Numbers ├─ PC Relationships
|
||||
└─ Network Analysis └─ Role Classification └─ IP Assignment
|
||||
```
|
||||
|
||||
## Advanced Features
|
||||
|
||||
### PC Type Classification Algorithm
|
||||
```powershell
|
||||
function Get-PCType {
|
||||
if (Test-AppsFolder -and Test-VDriveAccess) {
|
||||
return "Engineer" # Development/Engineering workstations
|
||||
}
|
||||
elseif (Test-WindowsLTSC) {
|
||||
return "Shopfloor" # Manufacturing floor systems
|
||||
}
|
||||
else {
|
||||
return "Standard" # General corporate systems
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### GE Machine Number Extraction
|
||||
```powershell
|
||||
function Get-GEMachineNumber {
|
||||
# Pattern matching for GE hostname conventions
|
||||
if ($Hostname -match '[HG](\d{3})') {
|
||||
$machineNum = $Matches[1]
|
||||
return "M$machineNum" # Convert H123/G123 → M123
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Machine Auto-Population Architecture ⭐ **New in v3.2**
|
||||
|
||||
The system automatically creates machine records from shopfloor PC data using a multi-phase approach:
|
||||
|
||||
#### Phase 1: Machine Number Extraction
|
||||
```powershell
|
||||
function Get-GEMachineNumber {
|
||||
# Priority 1: Registry-based detection
|
||||
$gePaths = @(
|
||||
"HKLM:\Software\GE Aircraft Engines\DNC\General",
|
||||
"HKLM:\Software\WOW6432Node\GE Aircraft Engines\DNC\General"
|
||||
)
|
||||
|
||||
# Priority 2: Hostname pattern matching
|
||||
if ($Hostname -match '[HG](\d{3})') {
|
||||
return "M$($Matches[1])" # H3103 → M3103
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Phase 2: Machine Record Creation
|
||||
```sql
|
||||
-- Bulk creation for numeric machines
|
||||
INSERT INTO machines (machinenumber, alias, machinenotes, ipaddress1)
|
||||
SELECT DISTINCT
|
||||
p.machinenumber,
|
||||
CONCAT('Machine ', p.machinenumber),
|
||||
CONCAT('Auto-discovered | Connected PCs: ',
|
||||
GROUP_CONCAT(p.hostname), ' | Count: ', COUNT(*)),
|
||||
(SELECT ni.ipaddress FROM pc_network_interfaces ni
|
||||
WHERE ni.pcid = p.pcid ORDER BY p.lastupdated DESC LIMIT 1)
|
||||
FROM pc p
|
||||
WHERE p.machinenumber REGEXP '^[0-9]+$'
|
||||
GROUP BY p.machinenumber;
|
||||
```
|
||||
|
||||
#### Phase 3: PC-Machine Relationship Mapping
|
||||
```sql
|
||||
-- Junction table for many-to-many relationships
|
||||
CREATE TABLE machine_pc_relationships (
|
||||
machine_id INT,
|
||||
pc_id INT,
|
||||
pc_role ENUM('control', 'hmi', 'engineering', 'backup', 'unknown'),
|
||||
is_primary BOOLEAN,
|
||||
relationship_notes TEXT
|
||||
);
|
||||
|
||||
-- Intelligent role detection
|
||||
pc_role = CASE
|
||||
WHEN hostname LIKE '%HMI%' THEN 'hmi'
|
||||
WHEN hostname LIKE '%CONTROL%' THEN 'control'
|
||||
WHEN hostname LIKE '%ENG%' THEN 'engineering'
|
||||
ELSE 'unknown'
|
||||
END
|
||||
```
|
||||
|
||||
#### Phase 4: Production Results
|
||||
- **121 Machines Created**: Complete shopfloor inventory
|
||||
- **115 Numeric Machines**: Standard 4-digit machine numbers (0000-9999)
|
||||
- **3 M-Prefix Machines**: Legacy naming (M439, M670, M886)
|
||||
- **1 Special Equipment**: WJPRT (Waterjet Printer)
|
||||
- **1 Test Machine**: TEST-001
|
||||
- **Multiple PC Handling**: Machine 0615 has 5 connected PCs
|
||||
- **Role Classification**: Control, HMI, Engineering, Backup PCs identified
|
||||
|
||||
### Dual Registry Architecture Handling ⭐ **New in v3.0**
|
||||
```powershell
|
||||
# Intelligent priority system prevents data overwrites
|
||||
if ($geInfo.DualPathEnabled -eq $null) {
|
||||
$geInfo.DualPathEnabled = $efocasValues.DualPath -eq 'YES'
|
||||
# First registry location sets the value
|
||||
} else {
|
||||
# Subsequent locations preserve existing values
|
||||
Write-Host "DualPath already set from other registry location"
|
||||
}
|
||||
```
|
||||
|
||||
## Error Handling & Resilience
|
||||
|
||||
### Graceful Degradation Strategy
|
||||
1. **Primary Data Sources**: Continue with secondary methods if WMI/CIM fails
|
||||
2. **Network Discovery**: Fall back to alternative network enumeration
|
||||
3. **Registry Access**: Handle permission issues with error logging
|
||||
4. **API Communication**: Retry logic with exponential backoff
|
||||
|
||||
### Comprehensive Logging
|
||||
```powershell
|
||||
# Color-coded status reporting
|
||||
Write-Host "[OK] Component successful" -ForegroundColor Green
|
||||
Write-Host "[WARN] Non-critical issue" -ForegroundColor Yellow
|
||||
Write-Host "[FAIL] Critical error" -ForegroundColor Red
|
||||
```
|
||||
|
||||
## Performance Characteristics
|
||||
|
||||
### Execution Times (Typical)
|
||||
- **Standard PC**: ~15-30 seconds (basic system info + network)
|
||||
- **Shopfloor PC**: ~45-90 seconds (full manufacturing analysis)
|
||||
- **Engineer PC**: ~20-40 seconds (enhanced system info)
|
||||
|
||||
### Resource Utilization
|
||||
- **Memory**: ~50-100 MB during execution
|
||||
- **CPU**: Low impact with burst activity during registry scans
|
||||
- **Network**: Minimal bandwidth (~1-5 KB payload per PC)
|
||||
|
||||
### Scalability Metrics
|
||||
- **Concurrent Executions**: Tested up to 50 simultaneous deployments
|
||||
- **Error Rate**: <2% in production environments
|
||||
- **Success Rate**: >98% data collection completion
|
||||
|
||||
## Security Considerations
|
||||
|
||||
### Required Permissions
|
||||
- **Administrator Rights**: Required for complete WMI/registry access
|
||||
- **Network Access**: Dashboard API communication
|
||||
- **Registry Read**: GE Aircraft Engines configuration access
|
||||
|
||||
### Data Protection
|
||||
- **No Credential Storage**: Scripts don't store or transmit passwords
|
||||
- **Local Processing**: All analysis performed locally before transmission
|
||||
- **Minimal Data**: Only relevant asset information transmitted
|
||||
|
||||
### Network Security
|
||||
- **HTTP POST**: Structured API communication
|
||||
- **Error Handling**: No sensitive information in error messages
|
||||
- **Timeout Protection**: Prevents hanging network connections
|
||||
|
||||
---
|
||||
|
||||
**Architecture designed for enterprise manufacturing environments with emphasis on reliability, intelligence, and scalability.**
|
||||
Reference in New Issue
Block a user