Interrogation de l’API Cyberwatch en PowerShell

L’utilisation de l’API, quelque soit la route interrogée, nécessite de s’authentifier en suivant cette procédure.

Les mots-clés username et password doivent respectivement être remplacés par les valeurs ID de la clé d'accès API et Secret de la clé d'accès API de l’identifiant précédemment généré, dans les exemples de code ci-dessous. Il en est de même pour la valeur url, qui doit correspondre à l’adresse IP de votre instance Cyberwatch.

De façon générale il suffit de modifier l’URL interrogée, la méthode utilisée et le contenu du body des snippets suivants afin de pouvoir procéder à une requête API spécifique via cette cmdlet.

Dans le cas où le certificat TLS du serveur Cyberwatch ne peut être reconnu par la machine sur laquelle est exécuté ce script, il est nécessaire d’exécuter le snippet de code suivant en amont de ces snippets :

add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem) {
            return true;
        }
    }
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

Snippet d’authentification basique via Invoke-WebRequest

Ce code vous permet d’exécuter un test de connexion à l’API de votre instance Cyberwatch :

$api_url = "https://localhost"
$credentials = "access_key:secret_key"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($credentials))

$response = Invoke-WebRequest -URI $api_url/api/v3/ping -Method Get -Headers @{
    "Accept" = "application/json; charset=utf-8"
    Authorization = "Basic $encodedCreds"}

$response.Content

Snippet de création d’un groupe via une Invoke-WebRequest avec attribut POST

Ce code vous permet de créer un nouveau groupe sur votre instance Cyberwatch :

$api_url = "https://localhost"
$credentials = "access_key:secret_key"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($credentials))

$body = @{
    "name" = "nom_du_groupe"
    "description" = "description_du_groupe"
    "color" = "#da13b4"
} | ConvertTo-Json

$response = Invoke-WebRequest -URI $api_url/api/v3/groups -Method POST -Body $body -Headers @{
    "Accept"      = "application/json; charset=utf-8"
    "Content-Type" = "application/json"
    Authorization = "Basic $encodedCreds"
}

$response.Content

Retour en haut