85 lines
3.7 KiB
PowerShell
85 lines
3.7 KiB
PowerShell
Param(
|
|
[string]
|
|
$SCTaskNum
|
|
)
|
|
|
|
New-ServiceNowSession -Url 'northdakota.service-now.com' -Credential $Secret:SNowVMCred
|
|
Connect-ITDvCenter -Credential $Secret:svcitdvmvcauto
|
|
|
|
$Filter = @('assignment_group', '-like', 'NDIT-Server Build Automation'), '-and', @('short_description', '-like', 'Windows Guest OS complete. Hardware team review.'), '-and', @('state', '-eq', '2') # 2 = 'work in progress'
|
|
$OpenTasks = Get-ServiceNowRecord -Table 'Catalog Task' -Filter $Filter | Sort-Object Number
|
|
If ($PSBoundParameters.ContainsKey("SCTaskNum")) {
|
|
Write-Verbose -Message "SCTaskNum parameter found, value is $SCTaskNum"
|
|
$OpenTasks = $OpenTasks | Where-Object Number -EQ $SCTaskNum
|
|
}
|
|
|
|
Write-Verbose -Message ("OpenTasks found: " + $OpenTasks.count) -Verbose
|
|
ForEach ($OpenTask in $OpenTasks) {
|
|
Write-Verbose -Message $OpenTasks.Number -Verbose
|
|
}
|
|
|
|
ForEach ($OpenTask in $OpenTasks) {
|
|
$Ci = $null
|
|
$BuildComplete = $null
|
|
|
|
# get SCTask, Ritm
|
|
$SCTaskNum = $OpenTask.number
|
|
Write-Verbose -Message "Start $SCTasknum" -Verbose
|
|
$SCTask = Get-ServiceNowRecord -Table 'Catalog Task' -ID $SCTaskNum
|
|
$shortdescription = $SCTask.short_description
|
|
$RitmNum = $SCTask.request_item.display_value
|
|
$Ritm = Get-ServiceNowRecord -Table 'Requested Item' -ID $RitmNum -IncludeCustomVariable -WarningAction SilentlyContinue
|
|
|
|
switch (($Ritm.CustomVariable | Where-Object Name -EQ target_platform).Value) {
|
|
'azure' { $target_platform = "Azure" }
|
|
'vmware' { $target_platform = "VMware" }
|
|
}
|
|
|
|
$FormFQDN = ($RITM.CustomVariable | Where-Object Name -EQ "host_name").value
|
|
$FormHostName = $FormFQDN.split('.')[0]
|
|
|
|
$Ci = Get-ServiceNowRecord -Table cmdb_ci -Filter @('name', '-eq', $FormHostName)
|
|
|
|
If ($Ci) {
|
|
Write-Verbose -Message ("Ci found, sys_id = " + $Ci.sys_id + ", name = " + $Ci.name + ", fqdn = " + $Ci.fqdn) -Verbose
|
|
}
|
|
switch ($target_platform) {
|
|
{ $_ -like "*VMware*" } {
|
|
Connect-ITDvCenter -Credential $Secret:svcitdvmvcauto
|
|
Write-Verbose -Message ("$FormFQDN is a VMware VM. Determine if SRM was requested.") -Verbose
|
|
$hardware_platform = "VMware";
|
|
$hardware_type = 'Virtual Machine'
|
|
|
|
If ( ($Ritm.CustomVariable | Where-Object Name -EQ 'dr_protection').Value -eq 'No DR') {
|
|
Write-Verbose -Message ("$FormFQDN dr_protection equals 'No DR'") -Verbose
|
|
Approve-ITDVMNewBuild -SCTaskNum $SCTaskNum -CloseTask -Verbose
|
|
}
|
|
Else {
|
|
Write-Verbose -Message ("$FormFQDN dr_protection is requested") -Verbose
|
|
Write-Warning -Message ("SRM is requested, task will not auto close. -- ZM") -Verbose
|
|
Approve-ITDVMNewBuild -SCTaskNum $SCTaskNum
|
|
}
|
|
Disconnect-ITDvCenter
|
|
}
|
|
{ $_ -like "*Microsoft Virtual Machine*" } {
|
|
Write-Verbose -Message ("$FormFQDN is an Azure VM. DR is not an option, proceed.") -Verbose
|
|
$hardware_platform = "Azure";
|
|
$hardware_type = 'Virtual Machine'
|
|
Write-Warning -Message ("Final close task is commented out until testing can occur. -- ZM") -Verbose
|
|
#Approve-ITDVMNewBuild -SCTaskNum $SCTaskNum
|
|
}
|
|
{ $_ -like "*HP*" } {
|
|
Write-Verbose -Message ("$FormFQDN is an HPE device.") -Verbose
|
|
$hardware_platform = 'HPE';
|
|
$hardware_type = 'Physical'
|
|
Write-Warning -Message ("Final close task is commented out until testing can occur. -- ZM") -Verbose
|
|
}
|
|
default {
|
|
$hardware_platform = 'Other'
|
|
Write-Warning -Message ("Ci found, but unavailable to determine hardware platform.")
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
Disconnect-ITDvCenter |