update
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
<#
|
||||
.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-ITDServiceNowRecord {
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[Parameter(ParameterSetName = 'ItemType')]
|
||||
[ValidateSet('Incident', 'Change Request', 'User', 'Catalog Task', 'Request Item')]
|
||||
[string]
|
||||
$ItemType,
|
||||
|
||||
[Parameter(ParameterSetName = 'Table')]
|
||||
[string]
|
||||
$Table,
|
||||
|
||||
[string]
|
||||
$SysId,
|
||||
|
||||
[string]
|
||||
$Number,
|
||||
|
||||
[hashtable]
|
||||
$Values
|
||||
)
|
||||
|
||||
begin {
|
||||
|
||||
|
||||
}
|
||||
|
||||
process {
|
||||
switch ($PSCmdlet.ParameterSetName) {
|
||||
'ItemType' {
|
||||
$Table = Get-ITDServiceNowTable -ItemType $ItemType
|
||||
}
|
||||
'Table' {
|
||||
# examples: 'cmdb_ci_win_server', 'cmdb_ci_ip_network', 'cmdb_ci_service_auto', 'sc_item_option_mtom'
|
||||
# don't do anything
|
||||
}
|
||||
}
|
||||
|
||||
$Uri = ($Script:ServiceNowSession.Uri + "/api/now/table/" + $Table + "?")
|
||||
#$Uri = ('https://northdakotatest.service-now.com' + "/api/now/table/" + $Table + "?")
|
||||
|
||||
switch ($PSBoundParameters.Keys) {
|
||||
SysId {
|
||||
Write-Verbose -Message ("sysid passed " + $PSBoundParameters.Item('sysid'))
|
||||
$Uri += "sys_id=$SysId"
|
||||
}
|
||||
Number {
|
||||
Write-Verbose -Message ("number passed " + $PSBoundParameters.Item('number'))
|
||||
$Uri += "sysparm_query=number=$Number"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Verbose $uri
|
||||
$InvokeRestMethodParams = @{
|
||||
Method = 'Get';
|
||||
Uri = $Uri
|
||||
#Uri = ($Script:ServiceNowSession.Uri + "/api/now/table/" + $Table + "?sysparm_query=number=" + $Number + "&sysparm_limit=1");
|
||||
Headers = $Script:ServiceNowSession.Headers;
|
||||
ContentType = $Script:ServiceNowSession.ContentType;
|
||||
}
|
||||
|
||||
try {
|
||||
$RecordSearch = (Invoke-RestMethod @InvokeRestMethodParams).Result
|
||||
$Uri = $null
|
||||
}
|
||||
catch [System.UriFormatException] {
|
||||
Write-Error "Invalid URI session. Did you run New-ITDServiceNowSession before execution?"
|
||||
}
|
||||
|
||||
switch (@($RecordSearch).count) { # @($Result).count
|
||||
{ $_ -lt 1 } {
|
||||
Write-Error -Message "Record not found"
|
||||
}
|
||||
{ $_ -gt 1 } {
|
||||
Write-Error -Message "More than one record found"
|
||||
}
|
||||
{ $_ -eq 1 } {
|
||||
Write-Verbose -Message 'Exactly one record found'
|
||||
$SysId = $RecordSearch.sys_id
|
||||
|
||||
$Uri = ($Script:ServiceNowSession.Uri + "/api/now/table/" + $Table + "/" + $SysId)
|
||||
Write-Verbose $Uri
|
||||
$InvokeRestMethodParams = @{
|
||||
Method = 'Patch';
|
||||
Uri = $Uri
|
||||
Body = $Values | ConvertTo-Json;
|
||||
Headers = $Script:ServiceNowSession.Headers;
|
||||
ContentType = $Script:ServiceNowSession.ContentType;
|
||||
}
|
||||
|
||||
try {
|
||||
$UpdateResult = (Invoke-RestMethod @InvokeRestMethodParams).Result
|
||||
}
|
||||
catch [System.UriFormatException] {
|
||||
Write-Error "Invalid URI session. Did you run New-ITDServiceNowSession before execution?"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end {
|
||||
Write-Output $UpdateResult
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user