This commit is contained in:
Zack Meier
2026-04-15 15:45:50 -05:00
commit 1d304511b8
613 changed files with 140998 additions and 0 deletions
@@ -0,0 +1,116 @@
<#
.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 New-ITDServiceNowServiceCatalogRequest {
[CmdletBinding()]
param (
[string]
$CategoryItemName,
[string]
$RequestedForEmail,
[hashtable]
$Values
)
begin {
}
process {
Write-Verbose -Message "Retrieve Category Item information"
$InvokeRestMethodParams = @{
Method = 'Get';
Uri = ($Script:ServiceNowSession.Uri + "/api/sn_sc/servicecatalog/items?sysparm_limit=5000");
Headers = $Script:ServiceNowSession.Headers;
ContentType = $Script:ServiceNowSession.ContentType;
}
$CategoryAllItems = (Invoke-RestMethod @InvokeRestMethodParams).result
$CategoryItem = $CategoryAllItems | Where-Object Name -EQ $CategoryItemName
$CategoryItemSysId = $CategoryItem.sys_id
Write-Verbose -Message "Retrieve RequestedBy and manager information"
$RequestedForSNUser = Get-ITDServiceNowUser -Email $RequestedForEmail
$RequiredVariables = @{
# Requester Information
v_requested_for = $RequestedForSNUser.sys_id;
v_requested_by = $RequestedForSNUser.sys_id;
v_user_email = $RequestedForSNUser.email;
v_user_phone = $RequestedForSNUser.phone;
v_alt_contact = "";
# Approval Information
v_approval_department = "f3c65cef1bfed050bba0113fad4bcb1d"; # Information Technology Dept
v_approval_department_code = "112.0";
v_approval_division = "f40758231b321450bba0113fad4bcb2d"; # Computer Systems
###v_approval_division_code = "32";
###v_approval_charge_code = "";
v_manager = $RequestedForSNUser.manager.value;
v_user_in_servicenow = "Yes";
# unknown
###requester_information = "true";
###v_container_requested_for = "true";
###v_user_in_servicenow = "Yes";
###v_container_requested_by = "true";
###approval_information = "true";
###request_commnets = "true";
###request_information = "true";
}
$AllVariables = $RequiredVariables
$Values.Keys | ForEach-Object {
$AllVariables += @{$_ = $values[$_] }
}
$BodyObj = [PSCustomObject]@{
sysparm_quantity = "1";
variables = $AllVariables
}
$BodyJson = $BodyObj | ConvertTo-Json
$InvokeRestMethodParams = @{
Method = 'Post';
Uri = ($Script:ServiceNowSession.Uri + "/api/sn_sc/servicecatalog/items/$CategoryItemSysId/order_now");
Headers = $Script:ServiceNowSession.Headers;
ContentType = $Script:ServiceNowSession.ContentType;
Body = $BodyJson;
}
$InvokeResult = (Invoke-RestMethod @InvokeRestMethodParams).result #create the cart
#$InvokeResult = (Invoke-RestMethod @InvokeRestMethodParams).result
# Submit the cart to create the request
if ($InvokeResult.cart_id) {
$SubmitOrderParams = @{
Method = 'Post'
Uri = ($Script:ServiceNowSession.Uri + "/api/sn_sc/servicecatalog/cart/submit_order")
Headers = $Script:ServiceNowSession.Headers
ContentType = $Script:ServiceNowSession.ContentType
Body = (@{ cart_id = $InvokeResult.cart_id } | ConvertTo-Json)
}
$SubmitResult = (Invoke-RestMethod @SubmitOrderParams).result
} else {
$SubmitResult = $InvokeResult
}
}
end {
Write-Output $SubmitResult
}
}