Consulta de la API 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 reemplazarse respectivamente por los valores ID de la clave de acceso API y Secreto de la clave de acceso API del identificador generado previamente, en los ejemplos de código a continuación. Lo mismo aplica al valor url, que debe corresponder a la dirección IP de su instancia Cyberwatch.
De forma general basta con modificar la URL consultada, el método utilizado y el contenido del body de los siguientes snippets para poder realizar una solicitud API especifica mediante este cmdlet.
En el caso de que el certificado TLS del servidor Cyberwatch no pueda ser reconocido por la maquina 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 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 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