Untitled
unknown
plain_text
7 months ago
2.6 kB
5
Indexable
param(
[string]$ServiceNowInstance,
[string]$User,
[string]$Password,
[string]$ClassName,
[string]$CIID,
[string]$AppVersion
)
Write-Host "Starting script..."
# Encode the credentials
$AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${User}:${Password}"))
function Get-ApplicationVersionValue {
param(
[string]$ServiceNowInstance,
[string]$CIID,
[string]$ClassName
)
$ApiUrl = "$ServiceNowInstance/api/now/cmdb/instance/$ClassName/$CIID"
$response = Invoke-RestMethod -Uri $ApiUrl -Method Get -Headers @{
"Authorization" = "Basic $AuthInfo"
}
$versionNumber = $response.result.attributes.version
Write-Host $versionNumber
return $versionNumber
}
function Update-AttributeValue {
param(
[string]$ServiceNowInstance,
[string]$CIID,
[string]$ClassName,
[string]$Value
)
$ApiUrl = "$ServiceNowInstance/api/now/cmdb/instance/$className/$CIID"
Write-Host "API URL: $ApiUrl"
$Payload = @{
attributes = @{
version = $Value
}
source = "ServiceNow"
} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Uri $ApiUrl -Method Patch -Headers @{
"Authorization" = "Basic $AuthInfo"
"Content-Type" = "application/json"
} -Body $Payload -ErrorAction Stop
}
try {
# Get the current version
$currentVersion = Get-ApplicationVersionValue -ServiceNowInstance $ServiceNowInstance -CIID $ciID -ClassName $className
# Check if currentVersion is null or empty
if (-not $currentVersion) {
Update-AttributeValue -ServiceNowInstance $ServiceNowInstance -CIID $CIID -ClassName $className -Value $AppVersion
Write-Host "Successfully updated 'version' attribute with value: $AppVersion"
return
}
$currentVersionObj = [version]$currentVersion
$AppVersionObj = [version]$AppVersion
# Check if the AppVersion is older or equal than the current version
if ($AppVersionObj -le $currentVersionObj) {
Write-Warning "The version being deployed ($AppVersion) is older or equal than the current version ($currentVersion)."
exit 1
}
Update-AttributeValue -ServiceNowInstance $ServiceNowInstance -CIID $CIID -ClassName $className -Value $AppVersion
Write-Host "Successfully updated 'version' attribute with value: $AppVersion"
} catch {
Write-Error "Error: $($_.Exception.Message)"
}
Editor is loading...
Leave a Comment