Consulta de l’API de Cyberwatch en PowerShell
L’ús de l’API, sigui quina sigui la ruta consultada, requereix autenticar-se seguint aquest procediment.
A les mostres de codi següents, cal substituir les paraules clau username i password respectivament pels valors ID de la clau d'accés de l'API i Secret de la clau d'accés de l'API de la credencial generada prèviament. El mateix s’aplica al valor url, que ha de correspondre a l’adreça IP de la vostra instància de Cyberwatch.
En general, n’hi ha prou de modificar l’URL consultada, el mètode utilitzat i el contingut del cos (body) dels fragments de codi següents per poder fer una sol·licitud específica a l’API amb aquesta cmdlet.
Si la màquina en què s’executa aquest script no pot reconèixer el certificat TLS del servidor de Cyberwatch, cal executar el fragment de codi següent abans d’aquests fragments:
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
Fragment de codi d’autenticació bàsica amb Invoke-WebRequest
Aquest codi us permet executar una prova de connexió a l’API de la vostra instància de 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
Fragment de codi de creació d’un grup amb Invoke-WebRequest i el mètode POST
Aquest codi us permet crear un grup nou a la vostra instància de 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