Используйте Powershell для загрузки прикрепленного файла Excel с билета Servicenow - PullRequest
5 голосов
/ 13 февраля 2020

В настоящее время я работаю над сценарием PowerShell, который должен иметь возможность загружать прикрепленный файл Excel из заявки на услугу, прежде чем я объясню больше, пожалуйста, ознакомьтесь с основами c процесса автоматизации ниже.

  1. Пользователю будет предложено ввести номер билета.

enter image description here

Затем система найдет этот билет об инциденте для точного получения необходимого файла Excel (я видел в Интернете, что мне нужно использовать sys_id). Затем он будет загружен по указанному пути c на пользовательский компьютер. Например: "C: \ downloads \ Demo \".

После всего этого я нашел в сети образец сценария, который я пытаюсь настроить в соответствии со своими потребностями; однако я не уверен, где взять значения в этом примере сценария. Вы можете проверить маркеры ниже сценария на предмет вопросов, которые я имею в виду.

$IncidentNumber = Read-Host -Prompt 'Enter Incident Request #'
#$admin = "admin"
#$password = "admin" | ConvertTo-SecureString -AsPlainText -Force 
#$Credential = New-Object pscredential -ArgumentList ($admin,$password)
$Uri = "https://dev42835.service-now.com/api/now/table/incident?sysparm_query=number=$($IncidentNumber)&sysparm_fields=sys_id&sysparm_limit=1"
$IncidentResult = Invoke-RestMethod -Uri $Uri #-Method Get -Credential $Credential
if($IncidentResult.result.sys_id -ne $null) {
    $IncidentAttachments = Invoke-RestMethod -Uri "https://dev42835.service-now.com/api/now/attachment?sysparm_query=table_sys_id=$($IncidentResult.result.sys_id)" #-Method Get -Credential $Credential
    $IncidentAttachments.result | Select file_name , download_link
}
else{
    "Incident Not Found!"
}
  • Действительно ли мне нужны учетные данные для запуска сценария? Если да, есть ли способ устранить необходимость в учетных данных?
  • Где я могу получить URL-адрес, назначенный переменной $ URI?

Я новичок в Автоматизация PowerShell, поэтому я буду признателен, если вы порекомендуете лучший подход, если таковые имеются.

Ответы [ 2 ]

4 голосов
/ 25 февраля 2020

Да, вам нужны учетные данные, но не кодируйте их жестко. Вместо этого вы можете использовать встроенный метод Get-Credential, который будет надежно собирать ваше имя пользователя и пароль. Пользователь должен будет вводить свои собственные учетные данные ServiceNow при каждом запуске.

В моей версии есть только одна вещь, которую вам нужно настроить, - переменная $SubDomain, которая указывает c вашему арендатору.

$SubDomain = "YourServiceNowSubdomaingoeshere" # Configure this per tenant

$Credential = Get-Credential
If(!$Credential){
    # User Cancelled
    exit 1
}

$IncidentNumber = Read-Host -Prompt 'Enter Incident Request #'
$Uri = "https://$SubDomain.service-now.com/api/now/table/incident?sysparm_query=number=$($IncidentNumber)&sysparm_fields=sys_id&sysparm_limit=1"
$IncidentResult = Invoke-RestMethod -Uri $Uri -Method Get -Credential $Credential
if($IncidentResult.result.sys_id -ne $null) {
    $IncidentAttachments = Invoke-RestMethod -Uri "https://$SubDomain.service-now.com/api/now/attachment?sysparm_query=table_sys_id=$($IncidentResult.result.sys_id)" -Method Get -Credential $Credential
    $IncidentAttachments.result | Select file_name , download_link
}
else{
    "Incident Not Found!"
}
4 голосов
/ 19 февраля 2020

Да, вам нужны учетные данные.

Ваш URI - это URL-адрес вашего экземпляра servicenow. Измените часть dev42835, чтобы соответствовать. Если вы не уверены в своем экземпляре, обратитесь в службу поддержки. https://dev42835.service-now.com

Если вы используете проводник REST API, вы можете просматривать конечные точки и версии API, которые помогут при формировании ваших запросов. Вам нужна роль rest_api_explorer для доступа к REST API Explorer. Если у вас нет этой роли, обратитесь к администратору службы, а теперь запросите ее.

https://docs.servicenow.com/bundle/geneva-servicenow-platform/page/integrate/inbound_rest/task/t_GetStartedAccessExplorer.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...