Consulta de la API de Cyberwatch en PowerShell
El uso de la API, sea cual sea la ruta consultada, requiere autenticarse siguiendo este procedimiento.
Las palabras clave username y password deben ser reemplazadas respectivamente por los valores ID de la clave de acceso API y Secreto de la clave de acceso API del identificador previamente generado, en los ejemplos de código a continuación. Lo mismo aplica para el valor url, que debe corresponder a la dirección IP de su instancia de Cyberwatch.
De manera general, basta con modificar la URL consultada, el método utilizado y el contenido del body de los siguientes snippets para poder realizar una consulta API específica mediante esta cmdlet.
En caso de que el certificado TLS del servidor Cyberwatch no pueda ser reconocido por la máquina en la que se ejecuta este script, es necesario ejecutar el siguiente snippet de código antes de estos 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 de autenticación básica vía Invoke-WebRequest
Este código le permite ejecutar una prueba de conexión a la API de su instancia 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
Snippet de creación de un grupo mediante Invoke-WebRequest con atributo POST
Este código le permite crear un nuevo grupo en su instancia 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