Mercredi, Novembre 10, 2021

Connexion aux API en Powershell et première requête

Prérequis

Intérêts des API

  • Pas d’accès direct à la base de données, il suffit d’une connexion à un serveur SolarWinds (central ou poller aditionnel)
  • Indépendant des changements de schéma de la DB
  • Limitations de compte héritées directement de SolarWinds

Connexion basique

# import du module nécessaire
Import-Module SwisPowerShell

# définition des variables
$hostname = '127.0.0.1'
$user = 'admin'
$password = 'password'

# connexion au serveur
$swis = connect-swis -hostname $hostname -user $user -password $password

# requête SWQL
$query = 'select top 10 caption, nodeid from orion.nodes'

# récupération basique des données
get-swisdata -query $query -swisconnection $swis

Il est possible également depuis le serveur lui-même de se connecter avec un certificat du serveur

# import du module
Import-Module SwisPowerShell

# définition des variables
$hostname = '127.0.0.1'

$swis = connect-swis -hostname $hostname -certificate

$query = 'select top 10 nodeid, vendor, machinetype, caption, ip_address from orion.nodes'

get-swisdata -query $query -swisconnection $swis # | Export-Csv -Path "SW_NODE_EXPORT.csv" -NoTypeInformation

Quelques informations de plus

Import du module powershell nécessaire

Import-Module SwisPowerShell

Connexion aux APIs

Il existe plusieurs méthode d’authentification aux APIs :

  • credential : à récupérer depuis get-credential
  • username et password : des strings
  • certificate : utilisation du certificat local du serveur Orion
  • trusted : utilisation du compte Windows connecté
# credential
$creds = Get-Credential
$swis = connect-swis -hostname $hostname -credential $creds
# username password
$swis = connect-swis -hostname $hostname -username admin -password password
# certificat
$swis = connect-swis -hostname $hostname -certificate
# trusted
$swis = connect-swis -hostname $hostname -trusted

A noter l’argument -hostname est optionnel, par défaut la connexion se fait sur le localhost, en exécution locale sur un serveur SolarWinds on peut donc s’en passer.

Récupération des données

La commande get-swisdata peut prendre 3 arguments:

  • SwisConnection : obligatoire, c’est le résultat de la commande précédente
  • Query : obligatoire, c’est la requête SWQL, elle peut être directement incluse dans la commande get-swisdata ou passée par une variable
  • Parameters : facultatif, peut être utiliser pour fournir des paramètres à la requête

Requête basique

$query = 'select top 10 nodeid, vendor, machinetype, caption, ip_address from orion.nodes'
get-swisdata -query $query -swisconnection $swis

Requête avec paramètre

$query = 'select top 10 nodeid, vendor, machinetype, caption, ip_address from orion.nodes where vendor = @v'
get-swisdata -query $query -swisconnection $swis -parameters @{ v = 'Cisco' }