Files
Backup/_NDGOV_WindowsTeam/ITD.Infra-VMware.VirtualMachine/Public/Update-ITDSNowVMTaskDescription.ps1
T
Zack Meier 1d304511b8 update
2026-04-15 15:45:50 -05:00

169 lines
8.2 KiB
PowerShell

<#
.SYNOPSIS
A short one-line action-based description, e.g. 'Tests if a function is valid'
.DESCRIPTION
A longer description of the function, its purpose, common use cases, etc.
.NOTES
Information or caveats about the function e.g. 'This function is not supported in Linux'
.LINK
Specify a URI to a help page, this will show when Get-Help -Online is used.
.EXAMPLE
Test-MyTestFunction -Verbose
Explanation of the function or its result. You can include multiple examples with additional .EXAMPLE lines
#>
function Update-ITDSNowVMTaskDescription {
[CmdletBinding()]
param (
)
begin {
}
process {
<# Server Builds
Write-Verbose -Message "Start Server Builds"
$Filter = @('assignment_group', '-like', 'NDIT-Server Build Automation'), '-and', @('short_description', '-eq', 'Automated Server Build Task for Windows Virtual Machine'), '-and', @('state', '-eq', '2')
$OpenTasks = Get-ServiceNowRecord -Table 'Catalog Task' -Filter $Filter | Sort-Object Number
ForEach ($OpenTask in $OpenTasks) {
# get SCTask, Ritm
$SCTaskNum = $OpenTask.number
$SCTask = Get-ServiceNowRecord -Table 'Catalog Task' -ID $SCTaskNum
$RitmNum = $SCTask.request_item.display_value
$Ritm = Get-ServiceNowRecord -Table 'Requested Item' -ID $RitmNum -IncludeCustomVariable -WarningAction SilentlyContinue
$ComputerName = ($Ritm.CustomVariable | Where-Object Name -EQ host_name).Value
$OperatingSystem = ($Ritm.CustomVariable | Where-Object Name -EQ operating_system).Value
switch (($Ritm.CustomVariable | Where-Object Name -EQ target_platform).Value) {
'azure' { $target_platform = "Azure" }
'vmware' { $target_platform = "VMware" }
}
# update short description
$shortdescription = "$target_platform $OperatingSystem VM Build for $ComputerName"
If ( ($RITM.CustomVariable | Where-Object Name -EQ dr_protection).Value -ne 'No DR') {
$shortdescription += ", with SRM protection"
}
Update-ServiceNowRecord -ID $SCTask.number -Values @{short_description = $shortdescription; }
}
Write-Verbose -Message "End Server Builds"
#>
<# VM Modifications
Write-Verbose -Message "Start VM Modifications"
$Filter = @('assignment_group', '-like', 'NDIT-Server Build Automation'), '-and', @('short_description', '-eq', 'Upgrade/Code Deployment'), '-and', @('state', '-eq', '1')
$OpenTasks = Get-ServiceNowRecord -Table 'Catalog Task' -Filter $Filter | Sort-Object Number
ForEach ($OpenTask in $OpenTasks) {
Write-Verbose -Message "Start $OpenTask.number"
# get SCTask, Ritm
$SCTaskNum = $OpenTask.number
$SCTask = Get-ServiceNowRecord -Table 'Catalog Task' -ID $SCTaskNum
$RitmNum = $SCTask.request_item.display_value
$Ritm = Get-ServiceNowRecord -Table 'Requested Item' -ID $RitmNum -IncludeCustomVariable
$ComputerName = ($Ritm.CustomVariable | Where-Object Name -EQ server_name).Value.tolower()
# update short description
$shortdescription = "VM Modification for $ComputerName"
Update-ServiceNowRecord -ID $SCTask.number -Values @{short_description = $shortdescription; }
Write-Verbose -Message "End $OpenTask.number"
}
Write-Verbose -Message "End VM Modifications"
#>
# VM removal / retire
Write-Verbose -Message "Start Remove Server description updates"
#$Filter = @('assignment_group', '-like', 'NDIT-Server Build Automation'), '-and', @('short_description', '-like', 'Retire Server'), '-and', @('state', '-eq', '1')
$Filter = "active=true^short_descriptionSTARTSWITHRemove Server: "
#$OpenTasks = Get-ServiceNowRecord -Table 'Catalog Task' -Filter $Filter | Sort-Object Number
$OpenTasks = Get-ITDServiceNowRecord -ItemType 'Catalog Task' -Filter $Filter -IncludeTotalCount | Sort-Object Number
$AllRitms = [System.Collections.ArrayList]@()
ForEach ($OpenTask in $OpenTasks) {
Write-Verbose -Message ("Start " + $OpenTask.number)
# get SCTask, Ritm
$SCTaskNum = $OpenTask.number.value
$SCTask = $OpenTask
If ($AllRitms | Where-Object sys_id -EQ $SCTask.request_item.value) {
$Ritm = $AllRitms | Where-Object sys_id -EQ $SCTask.request_item.display_value
}
Else {
$Ritm = Get-ITDServiceNowRecord -ItemType 'Request Item' -Number $SCTask.request_item.display_value -IncludeVariableSet
$null = $AllRitms.Add($Ritm)
}
$short_description_hostname = $SCTask.short_description.display_value.split(' ')[2]
$Ci = Get-ITDServiceNowRecord -Table cmdb_ci -Filter ("name=" + $short_description_hostname)
$HostName = $Ci.Name.display_value
$FQDN = $Ci.FQDN.display_value
# determine if vmware, azure, or physical
switch ($Ci.model_id.display_value) {
{ $_ -like "*VMware*" } { $hardware_platform = "VMware"; $hardware_type = 'Virtual Machine' }
{ $_ -like "*Microsoft Virtual Machine*" } { $hardware_platform = "Azure"; $hardware_type = 'Virtual Machine' }
{ $_ -like "*HP*" } { $hardware_platform = 'HPE'; $hardware_type = 'Physical' }
default { $hardware_platform = 'Unknown'; $hardware_type = 'Other' }
}
# determine if windows, rhel, or other
switch ($Ci.sys_class_name.display_value) {
'Linux Server' { $OS = 'Linux' }
'Windows Server' { $OS = 'Windows' }
'Default' { $OS = 'Other' }
}
$short_description_new = "$hardware_platform $OS Removal for "
If ($FQDN) {
$short_description_new += $FQDN
}
Else {
$short_description_new += $ComputerName
}
#Update-ServiceNowRecord -ID $SCTask.number -Values @{short_description = $shortdescription; }
Update-ITDServiceNowRecord -ItemType 'Catalog Task' -Number $SCTaskNum -Values @{short_description = $short_description_new}
Write-Verbose -Message ("End " + $OpenTask.number.display_value)
}
Write-Verbose -Message "End VM removal/retire"
<# Other Server Requests
Write-Verbose -Message "Start Other Server"
$Filter = @('assignment_group', '-like', 'NDIT-Server Build Automation'), '-and', @('short_description', '-eq', 'Other Server Request'), '-and', @('state', '-eq', '1')
$OpenTasks = Get-ServiceNowRecord -Table 'Catalog Task' -Filter $Filter | Sort-Object Number
ForEach ($OpenTask in $OpenTasks) {
Write-Verbose -Message "Start $OpenTask.number"
# get SCTask, Ritm
$SCTaskNum = $OpenTask.number
$SCTask = Get-ServiceNowRecord -Table 'Catalog Task' -ID $SCTaskNum
$RitmNum = $SCTask.request_item.display_value
$Ritm = Get-ServiceNowRecord -Table 'Requested Item' -ID $RitmNum -IncludeCustomVariable
$ComputerName = ($Ritm.CustomVariable | Where-Object Name -EQ server_name).Value
$OperatingSystem = ($Ritm.CustomVariable | Where-Object Name -EQ operating_system).Value
# update short description
$shortdescription = "Other Server Request for $ComputerName"
Update-ServiceNowRecord -ID $SCTask.number -Values @{short_description = $shortdescription; }
Write-Verbose -Message "End $OpenTask.number"
}
Write-Verbose -Message "End Other Server"
#>
}
end {
<#
$postParams = [PSCustomObject]@{
AutomationName = "Infra-VMware";
Action = 'Change';
Units = 3;
Platform = 'ServiceNow-Overhead';
}
Invoke-RestMethod -Uri http://itdnettools.nd.gov/services/automation-tracking.py -Method POST -Body ($postParams | ConvertTo-Json)
#>
}
}