vms.psm1
function GetSecondTuesday([int]$month, [int]$year) { # Calculate the first day of the month $firstDay = Get-Date -Year $year -Month $month -Day 1 # Calculate the day of the week for the first day of the month $firstDayOfWeek = $firstDay.DayOfWeek # Calculate the number of days until the first Tuesday of the month $daysUntilTuesday = [int][System.DayOfWeek]::Tuesday - $firstDayOfWeek if ($daysUntilTuesday -lt 0) {$daysUntilTuesday += 7} # Add 7 days to get the second Tuesday of the month $secondTuesday = $firstDay.AddDays($daysUntilTuesday + 7) # Return the day of the month for the second Tuesday return $secondTuesday } Function Exposure_Score($exposure) { $score = 1 switch($exposure) { "internet-unrestricted" {$score = 4 ; break} "internal-unrestricted" {$score = 3 ; break} "vap" {$score = 3 ; break} "authentication-required" {$score = 2.5 ; break} "local-access-required" {$score = 2.5 ; break} "internal-restricted-hips" {$score = 2 ; break} "internal-restricted-hbfw" {$score = 2 ; break} "internal-restricted" {$score = 1.5 ; break} } return $score } Function Exploitability_Score($cvss) { if ($cvss -like '*(*') { $cvss_value = $cvss.substring(0,$cvss.indexOf('(')-1) $threat_label = $cvss.substring($cvss.indexOf('('),$cvss.indexOf(')')-$cvss.indexOf('(')+1) } else { $threat_label = "" } $score = 1 switch($threat_label) { "(ZERO DAY - WORMABLE)" {$score = 3 ; break} "(ZERO DAY - UNAUTHENTICATED)" {$score = 3 ; break} "(ZERO DAY - REMOTE CODE EXECUTION)" {$score = 3 ; break} "(ZERO DAY)" {$score = 3 ; break} "(CISA EXPLOITED)" {$score = 3 ; break} "(RANSOMWARE - WORMABLE)" {$score = 3 ; break} "(RANSOMWARE - UNAUTHENTICATED)" {$score = 3 ; break} "(RANSOMWARE - REMOTE CODE EXECUTION)" {$score = 3 ; break} "(RANSOMWARE)" {$score = 3 ; break} "(ACTIVE ATTACKS - WORMABLE)" {$score = 3 ; break} "(ACTIVE ATTACKS - UNAUTHENTICATED)" {$score = 3 ; break} "(ACTIVE ATTACKS - REMOTE CODE EXECUTION)" {$score = 3 ; break} "(ACTIVE ATTACKS)" {$score = 3 ; break} "(MALWARE - WORMABLE)" {$score = 3 ; break} "(MALWARE - UNAUTHENTICATED)" {$score = 3 ; break} "(MALWARE - REMOTE CODE EXECUTION)" {$score = 3 ; break} "(MALWARE)" {$score = 3 ; break} "(PUBLIC EXPLOIT - WORMABLE)" {$score = 2.5 ; break} "(PUBLIC EXPLOIT - UNAUTHENTICATED)" {$score = 2.5 ; break} "(PUBLIC EXPLOIT - REMOTE CODE EXECUTION)" {$score = 2.5 ; break} "(PUBLIC EXPLOIT)" {$score = 2.5 ; break} "(WEAK PASSWORD)" {$score = 3 ; break} "(END OF LIFE)" {$score = 1.5 ; break} "(REVISED)" {$score = 1.5 ; break} "" {$score = 1 ; break} } return $score } Function Criticality_Score($tier) { $score = 5 switch($tier) { "FIA (Sensitive)" {$score = 5 ; break} "Platinum (Sensitive)" {$score = 4 ; break} "Platinum (Internal)" {$score = 4 ; break} "Platinum (Public)" {$score = 4 ; break} "Gold (Sensitive)" {$score = 4 ; break} "Silver (Sensitive)" {$score = 4 ; break} "Bronze (Sensitive)" {$score = 4 ; break} "Gold (Internal)" {$score = 3 ; break} "Silver (Internal)" {$score = 3 ; break} "Bronze (Internal)" {$score = 3 ; break} } return $score } Export-ModuleMember -Function GetSecondTuesday Export-ModuleMember -Function Exposure_Score Export-ModuleMember -Function Exploitability_Score Export-ModuleMember -Function Criticality_Score |