update
This commit is contained in:
+169
@@ -0,0 +1,169 @@
|
||||
<#
|
||||
.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)
|
||||
#>
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user