update
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Creates a new incident in ServiceNow.
|
||||
.DESCRIPTION
|
||||
This function creates a new incident in ServiceNow using the provided parameters. It requires either the caller's username or email, along with a short description and a detailed description of the incident.
|
||||
.PARAMETER CallerUsername
|
||||
The username of the caller reporting the incident. This parameter is mandatory if CallerEmail is not provided.
|
||||
.PARAMETER CallerEmail
|
||||
The email address of the caller reporting the incident. This parameter is mandatory if CallerUsername is not provided.
|
||||
.PARAMETER ShortDescription
|
||||
A brief summary of the incident.
|
||||
.PARAMETER Description
|
||||
A detailed description of the incident.
|
||||
.PARAMETER Impact
|
||||
The impact level of the incident. Valid values are 1 (High), 2 (Medium), and 3 (Low). Default is 3.
|
||||
.PARAMETER Urgency
|
||||
The urgency level of the incident. Valid values are 1 (High), 2 (Medium), and 3 (Low). Default is 3.
|
||||
.PARAMETER Category
|
||||
The category of the incident.
|
||||
.EXAMPLE
|
||||
New-ITDServiceNowIncident -CallerUsername 'jdoe' -ShortDescription 'System outage' -Description 'The system is down and not responding.' -Impact 1 -Urgency 1 -Category 'Network'
|
||||
This example creates a new high-impact, high-urgency incident for a system outage reported by the user 'jdoe'.
|
||||
#>
|
||||
|
||||
function New-ITDServiceNowIncident {
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[Parameter(ParameterSetName = 'CallerUsername', Mandatory = $true)]
|
||||
[string]
|
||||
$CallerUsername,
|
||||
|
||||
[Parameter(ParameterSetName = 'CallerEmail', Mandatory = $true)]
|
||||
[string]
|
||||
$CallerEmail,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]
|
||||
$ShortDescription,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]
|
||||
$Description,
|
||||
|
||||
[ValidateRange(1, 3)]
|
||||
[int]
|
||||
$Impact = 3,
|
||||
|
||||
[ValidateRange(1, 3)]
|
||||
[int]
|
||||
$Urgency = 3,
|
||||
|
||||
[string]
|
||||
$Category,
|
||||
|
||||
[string]
|
||||
$Subcategory,
|
||||
|
||||
[string]
|
||||
$AssignmentGroup,
|
||||
|
||||
[string]
|
||||
$AssignedTo
|
||||
)
|
||||
|
||||
begin {
|
||||
|
||||
}
|
||||
|
||||
process {
|
||||
# determine caller id
|
||||
switch ($PSCmdlet.ParameterSetName) {
|
||||
'CallerUsername' {
|
||||
$Caller = Get-ITDServiceNowUser -Username $CallerUsername
|
||||
}
|
||||
'CallerEmail' {
|
||||
$Caller = Get-ITDServiceNowUser -Email $CallerEmail
|
||||
}
|
||||
}
|
||||
|
||||
If (@($Caller).count -gt 1) {
|
||||
Write-Error "Multiple users found, incident creation failed." -ErrorAction Stop
|
||||
}
|
||||
|
||||
[PSCustomObject]$NewRecord = @{
|
||||
caller_id = $Caller.sys_id
|
||||
short_description = $ShortDescription;
|
||||
description = $Description;
|
||||
impact = $Impact;
|
||||
urgency = $Urgency;
|
||||
category = $Category;
|
||||
subcategory = $Subcategory
|
||||
|
||||
}
|
||||
|
||||
If ($AssignmentGroup) {
|
||||
$AssGroup = Get-ITDServiceNowUserGroup -Name $AssignmentGroup
|
||||
If (@($AssGroup).count -gt 1) {
|
||||
Write-Error "Multiple assignment groups found, incident creation failed." -ErrorAction Step
|
||||
}
|
||||
Else {
|
||||
$NewRecord += @{assignment_group = $AssGroup.sys_id }
|
||||
}
|
||||
}
|
||||
|
||||
$InvokeRestMethodParams = @{
|
||||
Method = 'Post';
|
||||
Uri = ($Script:ServiceNowSession.Uri + "/api/now/table/incident");
|
||||
Body = $NewRecord | ConvertTo-Json;
|
||||
Headers = $Script:ServiceNowSession.Headers;
|
||||
ContentType = "application/json"
|
||||
}
|
||||
|
||||
#Write-Output $InvokeRestMethodParams
|
||||
$result = Invoke-RestMethod @InvokeRestMethodParams
|
||||
}
|
||||
|
||||
end {
|
||||
$result #| select number, impact, urgency, assignment_group, short_description
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user