Opérateur ternaire en PowerShell

Opérateur ternaire en PowerShell

Salut à tous, une petite info pour aujourd’hui sur l’apparition de l’opérateur ternaire en PowerShell. Vous ne savez pas ce que c’est que ça ? On va regarder rapidement !

L’opérateur ternaire, c’est un gros mot pour dire « one-liner pour un if then else« . Par exemple en Python ou en C, on peut écrire (je vous avais déjà fait une comparaison Python vs. PowerShell sur les foreach d’ailleurs):

<condition? <condition-si-vrai: <condition-si-faux;

C’est un truc qui existe depuis des années et qui me manquait cruellement en PowerShell. L’intérêt c’est surtout la concision et la lisibilité du code, car ça permet d’éviter d’imbriquer trop de « if then else » les uns dans les autres, en particulier quand ceux là ne sont là que pour contrôler un petit trucs sans lien avec l’algorithme.

Un petit exemple où je m’en sert, c’est pour afficher des « hashtables » automatiquement et éviter d’appeler la méthode toString() quand l’entrée est null. :

foreach($key in $ma_hashtable.Keys){
    Write-Host(($null -ne $ma_hashtable.$key) ? ($ma_hashtable.$key).toString() : "")
}

La mauvaise nouvelle c’est que Opérateur ternaire en PowerShell disponible qu’à partir de la version 7. La bonne c’est qu’on peut quand même bricoler des … Lire la suite

SEPM Computers REST API

SEPM Computers REST API

Bonjour à tous, aujourd’hui je voulais vous partager un bout de script que j’ai du faire au travail sur ces 4 mots clés : SEPM, Computers, REST et API.

En effet, pour ceux qui ne le sauraient pas, dans un parc informatique d’envergure construire un inventaire complet des postes est une tâche complexe (voir carrément difficile), et je ne parle pas de la maintenir à jour l’inventaire en question, bref récupérer la liste des ordinateurs dans un SEPM, c’est cool.

C’est là que l’API REST (on a déjà parlé de REST , ou encore ) de SEP et sa fonction « computer » entre en jeu, en effet les antivirus font partie des solutions qui sont généralement déployée sur une bonne partie des postes clients d’un parc informatique. Et la bonne nouvelles, c’est que la plupart des antivirus sur le marché remontent plus ou moins une sorte d’inventaire des postes sur lesquels leur client tournent., et c’est le taf de la fonction computer est documentée ici pour obtenir les détails des postes.

Je crois aussi que je vous ai déjà assez parlé de REST et PowerShell sur le blog… Du coup, vous devriez voir venir la suite, … Lire la suite

Interroger une base PostGreSQL en PowerShell

Interroger une base PostGreSQL en PowerShell

Bonjour à tous, aujourd’hui on va intéresser aux bases SQL et PowerShell. Et plus exactement comment interroger une base PostGreSQL en PowerShell. Pour cela on va devoir s’y connecter, faire une requête, lire nos résultats en PowerShell et clore la connexion.

Je choisit volontairement PostGreSQL car (j’ai eu besoin de le faire a boulot, déjà) il nécessite que l’on installe au préalable le driver ODBC pour se connecter à la base. En effet si vous utiliser un serveur MSSQL, les dépendances nécessaires sont (en général) déjà livrées avec Windows.

Pour obtenir ce pilote vous pouvez vous connecter sur le site de PostGreSQL ici, télécharger puis installer le fichier MSI. Vous pouvez vérifier que celui ci est bien déployé en allant dans le panneau de configuration-Outils d’administration-Sources de données ODBC (32 ou 64 bits). Les connecteurs PostgreSQL UNICODE et ANSI devrait être présent.

A partir de là, on peut démarrer le code de notre module PowerShell. La première étape consiste à établir la connexion à la base. Et pour cela j’ai développé la Cmd-Let Get-PSSQLDBConnexion ci dessous :

Function Get-PSSQLDBConnexion{
    param(
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $Server,
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $Port,
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $DBName,
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $Username,
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [SecureString] $Password
    )
    
Lire la suite

KeePass et PowerShell – à vos MISC ? prêt ? Partez !

Salut à tous ! Bon je sais, ça fait encore un mois que j’ai rien écrit sur le blog… Mais c’est pour la bonne cause : je viens d’être publié dans le N°108 de MISC ! Je vous propose un petit sujet sur KeePass et PowerShell page 68 (en kiosque depuis le 28 février 2020) ! Je vous tease le titre :

KeePass et PowerShell

KeeRest : mettez du DevOps dans votre KeePass

Comme vous l’aurez remarqué, c’est le second article sur KeePass que je publie. Je commence à avoir bien fait le tour du sujet maintenant entre le post sur KeePass2 et la synchronisation SSH/SFTP entre Windows, Linux et Android et le second article dans le n°103 de MISC et enfin celui-ci sur KeePass et PowerShell.

Une fois n’est pas coutume, mais cet article est le fruit d’une collaboration avec un copain MVP PowerShell : Arnaud Petitjean, un ancien collègue administrateur du site powershell-scripting.com. Le nom vous rappel un truc ? c’était avec lui que j’avais écrit ce post :

API REST en PowerShell – développez avec Polaris !

Cette collab explique aussi que le papier est un poil moins orienté sécu que d’habitude (et plus système), néanmoins j’ai profite … Lire la suite