169 lines
8.2 KiB
PowerShell
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)
|
|
#>
|
|
|
|
}
|
|
} |