Dostajemy coraz więcej pytań przez nasz formularz kontaktowy i Facebook’a. Czas na odpowiedź na kilka z nich.

Nie sposób publikować tutaj wszystkich poruszanych przez Was zagadnień. Sami nie liczyliśmy na tak duże zainteresowanie naszym małym projektem. Często dostajemy zapytania dotyczące API Service Desk Plus. Prawie wszystkie dotyczą PowerShell’a.

Dziś postanowiliśmy pokazać krótki przykład użycia PowerShell’a do założenia zgłoszenia. Nie będziemy się rozpisywać na temat samego PowerShell’a – wyszliśmy z założenia, że jeśli chcecie coś napisać z jego użyciem to poszukaliście u Wujka Google informacji na jego temat.

Do zabawy z PowerShell’em polecamy użycie PowerShell ISE. Można i użyć notatnika – też lubimy „oldschool” ale bez przesady 🙂 Zaczynamy!

Pierwsze linie kodu….

Dziś zaczniemy od bardzo prostego skryptu, który będzie miał założyć zgłoszenie (bardzo proste) na naszym service desk’u. Do wysłania danych do SDP będziemy potrzebowali:

  • adresu SDP,
  • adresu API (z dokumentacji),
  • nazwy operacji,
  • metodę przesyłania,
  • klucza API.

Jeśli już zebrałeś te dane – możesz odpalić ISE i zaczynamy pisać.

Żeby nie wklepywać tych danych w środku skryptu  możemy do ich przechowania użyć zmiennych. A wygląda to tak:

$SDAddr= "http://itildemo.servicedeskplus.com"
$APIKey = "C0683670-716C-4AB6-B3FF-82D99A0AB25E"

$SDAPIUrl = "$($SDAddr)/sdpapi/request"
$method = "POST"
$operationName = "ADD_REQUEST"

Przygotowanie danych do wysyłki

Mamy już kilka początkowych linijek. Teraz przed nami ważna decyzja – musimy wybrać w jakim formacie przesyłać będziemy dane. Do wyboru mamy JSON i XML – wybieramy co nam będzie dla nas wygodniejsze. My działać będziemy używając kandydata nr. 1 – JSON. Zgodnie z dokumentacją SDPAPI przygotowujemy dane które chcemy wysłać. Przykład:


$inputdata=@{operation=@{details=@{requesttemplate="Awaria CRM";Subject="Awaria CRM - błąd 8x232c4 podczas zapisu danych";description="Błąd 8x232c4 - transakcja przerwana"}}} | ConvertTo-Json

$params = @{INPUT_DATA=$inputdata;OPERATION_NAME=$operationName;TECHNICIAN_KEY=$APIKey;format='json'}

Parametry używane w $inputdata opisane mamy w dokumentacji SDPAPI. W skrócie – wysyłamy nazwę szablonu, przez który chcemy założyć zgłoszenie, temat zgłoszenia, krótki opis. To wszystko konwertujemy do JSON’a. Natomiast w $params wrzucamy – dane z $inputdata, nazwę operacji, klucz technika i format wysyłanych danych.

Wysyłamy dane

Mamy już wszystko co potrzebujemy. Czas wysłać dane – użyjemy do tego Invoke-WebRequest (jest to cmdlet z PS 3.0 – więcej informacji tutaj). Do tego przechwycimy to, co zwróciło nam API. Do dzieła:


$result = Invoke-WebRequest -Uri $url -Method $method -Body $params | ConvertFrom-Json

W zmiennej $result mamy teraz informacje, które zwróciło nam API (już po konwersji z JSON’a). Aby wyświetlić wynik zapytania używamy:

write-host "Message:" $result.operation.result.message
write-host "Status: " $result.operation.result.status
write-host "Request ID:" $result.operation.Details.WORKORDERID

To już koniec tego krótkiego wstępu. Jest to bardzo prosty skrypt, który przed użyciem należy przerobić „pod siebie” oraz dodać np. łapanie błędów webrequesta (try catch).

Przydatne linki:
  1. Dokumentacja PowerShell na MSDN – https://msdn.microsoft.com/en-us/powershell/scripting/powershell-scripting
  2. Opis podstawowych cmdlet’ów w PS – http://ss64.com/ps/
  3. Dokumentacja SDPAPI – https://www.manageengine.com/products/service-desk/help/adminguide/api/rest-api.html
  4. Dokumentacja SDPAPI na demo producenta – http://itildemo.servicedeskplus.com/SetUpWizard.do?forwardTo=apidoc
  5. Baza przykładowych skryptów na Manageengine.com – https://resources.manageengine.com/resources