Journaleintrag per API Call aus Powershell hinzufügen

Post Reply
Tobias_Koch
Posts: 17
Joined: 22. Feb 2017, 15:17
Contact:

Journaleintrag per API Call aus Powershell hinzufügen

Post by Tobias_Koch » 29. Sep 2021, 15:41

Hallo Ihr,

Auch wenn ich ansonsten gerade gut zurechtkomme, aber das Hinzufügen eines Journaleintrags in einem Incident per API Aufruf (mit Powershell!) bereitet mir gerade Kopfzerbrechen ... kann mir jemand hilfreich zur Seite springen?

Vielen Dank im Voraus!

cboss
Posts: 131
Joined: 23. Dec 2011, 14:23
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by cboss » 30. Sep 2021, 08:02

Guten Morgen,

anbei ein Beispiel (Musst nur apiToken, baseUrl und IncEOID füllen):

Code: Select all

$apiToken = "<apiKey>"
$baseUrl = "https://test.imagoverum.com"
$IncEOID = "<Object ID of INC>"
$createDate = (Get-Date -Format s)
$commentHtml = "Test123 <b>TEST</b>"
$comment = "Test123 TEST"

### Get Token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $apiToken")

$tokenResponse = Invoke-RestMethod "$baseUrl/M42Services/api/ApiToken/GenerateAccessTokenFromApiToken/" -Method 'POST' -Headers $headers -Body $body
$tokenResponse.RawToken


### Run Webservice-Call - Create journal entry
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer "+$tokenResponse.RawToken)
$headers.Add("Content-Type", "application/json")

$body = @{
    UsedInType = $IncEOID;
    TypeID = "fe098714-ac94-47f1-9724-df5bac86b3fb";
    CreatedDate = $createDate;
    OriginalSolutionHtml = $commentHtml;
    OriginalSolution = $comment;
} | ConvertTo-Json

$response = Invoke-WebRequest "$baseUrl/m42Services/api/data/fragments/SPSActivityClassUnitOfWork" -Method 'POST' -Headers $headers -Body $body
$returnCode = $response.StatusCode
Der ReturnCode sollte dann immer 200 (OK) sein.
neo42 GmbH
Ihr Partner für Unified Endpoint Management, IT Service Management, Software Asset Management und Enterprise Mobility Management
http://www.neo42.de
--------------------------------------------------------------------------
Morpheus42
Entdecke mit uns die Welt des Enterprise Service Management & Matrix42
https://www.morpheus42.com

Tobias_Koch
Posts: 17
Joined: 22. Feb 2017, 15:17
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by Tobias_Koch » 30. Sep 2021, 14:39

cboss wrote: 30. Sep 2021, 08:02 Guten Morgen,

anbei ein Beispiel (Musst nur apiToken, baseUrl und IncEOID füllen):

Code: Select all

$apiToken = "<apiKey>"
$baseUrl = "https://test.imagoverum.com"
$IncEOID = "<Object ID of INC>"
$createDate = (Get-Date -Format s)
$commentHtml = "Test123 <b>TEST</b>"
$comment = "Test123 TEST"

### Get Token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $apiToken")

$tokenResponse = Invoke-RestMethod "$baseUrl/M42Services/api/ApiToken/GenerateAccessTokenFromApiToken/" -Method 'POST' -Headers $headers -Body $body
$tokenResponse.RawToken


### Run Webservice-Call - Create journal entry
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer "+$tokenResponse.RawToken)
$headers.Add("Content-Type", "application/json")

$body = @{
    UsedInType = $IncEOID;
    TypeID = "fe098714-ac94-47f1-9724-df5bac86b3fb";
    CreatedDate = $createDate;
    OriginalSolutionHtml = $commentHtml;
    OriginalSolution = $comment;
} | ConvertTo-Json

$response = Invoke-WebRequest "$baseUrl/m42Services/api/data/fragments/SPSActivityClassUnitOfWork" -Method 'POST' -Headers $headers -Body $body
$returnCode = $response.StatusCode
Der ReturnCode sollte dann immer 200 (OK) sein.
Da sage ich schon einmal vielen vielen Dank, funktioniert wunderbar!

Wenn ich das Ganze für Tasks oder andere Objekte mit der SPSActivityClassUnitOfWork etc. machen möchte, was muss ich dann anpassen?

cboss
Posts: 131
Joined: 23. Dec 2011, 14:23
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by cboss » 30. Sep 2021, 16:10

Hi,

dann einfach im Body die TypeID anpassen. Die passende TypeID bekommst du aus der Tabelle SchemaObjectType
neo42 GmbH
Ihr Partner für Unified Endpoint Management, IT Service Management, Software Asset Management und Enterprise Mobility Management
http://www.neo42.de
--------------------------------------------------------------------------
Morpheus42
Entdecke mit uns die Welt des Enterprise Service Management & Matrix42
https://www.morpheus42.com


cboss
Posts: 131
Joined: 23. Dec 2011, 14:23
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by cboss » 04. Oct 2021, 12:06

Sehr gerne :)
neo42 GmbH
Ihr Partner für Unified Endpoint Management, IT Service Management, Software Asset Management und Enterprise Mobility Management
http://www.neo42.de
--------------------------------------------------------------------------
Morpheus42
Entdecke mit uns die Welt des Enterprise Service Management & Matrix42
https://www.morpheus42.com

hoeni
Posts: 49
Joined: 09. Mar 2020, 11:38
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by hoeni » 06. Oct 2021, 12:04

Kann man das ganze noch um den Upload eines Anhangs mit dem Journal-Eintrag erweitern?

Tobias_Koch
Posts: 17
Joined: 22. Feb 2017, 15:17
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by Tobias_Koch » 06. Oct 2021, 17:02

Das würde mich tatsächlich auch interessieren, ob man per API Anhänge hochladen kann ...

cboss
Posts: 131
Joined: 23. Dec 2011, 14:23
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by cboss » 07. Oct 2021, 14:53

Hallo,

natürlich geht das. Hier ein Beispiel, welches ein Attachment an eine Störung anhängt:

Code: Select all

Add-Type -AssemblyName System.Web

$baseurl = "https://<esm-url>/"
$bearertoken = "<token>"

$entity = 'SPSActivityTypeIncident'
$objectIds = '27626588-ed3b-ca09-e524-08d945d4218b'
$Filepath = "C:\temp\test.png"

$Fileurlencoded = [System.Web.HttpUtility]::UrlEncode((Split-Path $Filepath -leaf)) 

### Get Token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $bearertoken")

$tokenResponse = Invoke-RestMethod "$baseUrl/M42Services/api/ApiToken/GenerateAccessTokenFromApiToken/" -Method 'POST' -Headers $headers -Body $body

### Run Webservice-Call - Upload File
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer "+$tokenResponse.RawToken)
$headers.Add("Content-Type", "application/octet-stream")

$response = Invoke-WebRequest "$("$baseurl/m42Services/api/filestorage/add?entity=$entity&objectIds=$objectIds&fileName=$Fileurlencoded")" -Method 'POST' -Headers $headers -InFile $Filepath
$returnCode = $response.StatusCode
neo42 GmbH
Ihr Partner für Unified Endpoint Management, IT Service Management, Software Asset Management und Enterprise Mobility Management
http://www.neo42.de
--------------------------------------------------------------------------
Morpheus42
Entdecke mit uns die Welt des Enterprise Service Management & Matrix42
https://www.morpheus42.com

Tobias_Koch
Posts: 17
Joined: 22. Feb 2017, 15:17
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by Tobias_Koch » 21. Oct 2021, 11:38

cboss wrote: 07. Oct 2021, 14:53 Hallo,

natürlich geht das. Hier ein Beispiel, welches ein Attachment an eine Störung anhängt:

Code: Select all

Add-Type -AssemblyName System.Web

$baseurl = "https://<esm-url>/"
$bearertoken = "<token>"

$entity = 'SPSActivityTypeIncident'
$objectIds = '27626588-ed3b-ca09-e524-08d945d4218b'
$Filepath = "C:\temp\test.png"

$Fileurlencoded = [System.Web.HttpUtility]::UrlEncode((Split-Path $Filepath -leaf)) 

### Get Token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $bearertoken")

$tokenResponse = Invoke-RestMethod "$baseUrl/M42Services/api/ApiToken/GenerateAccessTokenFromApiToken/" -Method 'POST' -Headers $headers -Body $body

### Run Webservice-Call - Upload File
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer "+$tokenResponse.RawToken)
$headers.Add("Content-Type", "application/octet-stream")

$response = Invoke-WebRequest "$("$baseurl/m42Services/api/filestorage/add?entity=$entity&objectIds=$objectIds&fileName=$Fileurlencoded")" -Method 'POST' -Headers $headers -InFile $Filepath
$returnCode = $response.StatusCode
Vielen Dank und alles wunderbar, nur das ich da einen (401) Nicht autorisiert bekomme. Muss ich da noch etwas spezielles berechtigen?

cboss
Posts: 131
Joined: 23. Dec 2011, 14:23
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by cboss » 21. Oct 2021, 12:09

Hallo,

gibt der erste oder der zweite Call die 401?
Vielleicht einmal die Zielgruppe dieser Webserviceoperation prüfen:
Image

Man muss jedoch auch wissen, dass die Filestorage-API noch nicht als "Public" freigegeben ist. Könnte also immer passieren, dass der Hersteller an dem Endpunkt noch etwas verändert.
Attachments
Webservice.png
(45.65 KiB) Downloaded 962 times
neo42 GmbH
Ihr Partner für Unified Endpoint Management, IT Service Management, Software Asset Management und Enterprise Mobility Management
http://www.neo42.de
--------------------------------------------------------------------------
Morpheus42
Entdecke mit uns die Welt des Enterprise Service Management & Matrix42
https://www.morpheus42.com

Tobias_Koch
Posts: 17
Joined: 22. Feb 2017, 15:17
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by Tobias_Koch » 21. Oct 2021, 13:12

cboss wrote: 21. Oct 2021, 12:09 Hallo,

gibt der erste oder der zweite Call die 401?
POST gegen filestorage gibt den 401. Habe jetzt "spaßeshalber" die Zielruppe einmal auf "Uneingeschränkt" gestellt um zu testen und es bleibt das gleiche Ergebnis ... Matrix Version ist 10.0.4.3240 ... noch Ideen dazu? ... und nur um es noch einmal gesagt zu haben: DANKESCHÖN!

cboss
Posts: 131
Joined: 23. Dec 2011, 14:23
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by cboss » 25. Oct 2021, 08:31

Guten Morgen,
wird die Variable $tokenResponse.RawToken denn korrekt befüllt?
Und der User für den der Token erstellt wurde muss auf die Webservice-Operation "FileStorage.Add" berechtigt sein.
Ansonsten müssten wir uns das vielleicht mal zusammen ansehen.
neo42 GmbH
Ihr Partner für Unified Endpoint Management, IT Service Management, Software Asset Management und Enterprise Mobility Management
http://www.neo42.de
--------------------------------------------------------------------------
Morpheus42
Entdecke mit uns die Welt des Enterprise Service Management & Matrix42
https://www.morpheus42.com

Tobias_Koch
Posts: 17
Joined: 22. Feb 2017, 15:17
Contact:

Re: Journaleintrag per API Call aus Powershell hinzufügen

Post by Tobias_Koch » 25. Oct 2021, 13:07

cboss wrote: 25. Oct 2021, 08:31 Guten Morgen,
wird die Variable $tokenResponse.RawToken denn korrekt befüllt?
Und der User für den der Token erstellt wurde muss auf die Webservice-Operation "FileStorage.Add" berechtigt sein.
Ansonsten müssten wir uns das vielleicht mal zusammen ansehen.
Vielen Dank, ich werde das gleich prüfen! Token funktioniert alles wunderbar.

Post Reply

Return to “Customizing und Reporting”

Who is online

Users browsing this forum: No registered users and 11 guests