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

Extraire le dernier élément de chaque ligne en regex

Extraire le dernier élément de chaque ligne

Bonjour à tous, aujourd’hui un petit TP sur les expressions régulières. J’ai un collègue qui m’a demandé comment on pouvait Extraire le dernier élément de chaque ligne dans un bout de texte de quelques centaines de lignes. Voici un exemple de format :

IP Address 595,537
IPv6 Address 1,443
MAC Address 0
MD5 163,573

La première version de la regex que j’ai proposée est simple au possible :

([^\s]+)$

Qui signifie en gros : « tout, sauf les espaces avant la fin de chaque ligne ». Cette expression a quand même un problème avec ses performances (326 steps sur regex101) dans la mesure le moteur d’évaluation avance dans le texte, il ne part pas de la fin et va donc avancer dans chaque mot avant de « backtracker », si celui ci n’est pas suivi de la fin de ligne.

Du coup, j’ai pu proposer une première version optimisée :

^.*?\s([^\s]+)$

C’est l’une des rares cas que j’ai croisé où l’usage d’un .* rends l’expression plus performante (120 steps sur le même texte) en l’obligeant à aller à la fin de ligne directement avant de matcher le dernier bloc. D’après regex101, on est donc déjà 3 fois plus … Lire la suite

KeePass et Yubikey multiplateforme, article MISC 103

KeePass et YubiKey
MISC n°103, p66 :KeePass et YubiKey

Salut à tous, vous vous rappelez fin avril que j’avais sorti un article dans MISC sur KeePass et Yubikey ? Comme pour ma précédente publication chez eux, j’ai repris une licence de « type B », c’est à dire : une cession de droits temporaire, suivi d’une publication sous licence « Creative Commons BY-NC-ND » (détails).

Ce qui me permet de vous partager cet article sur KeePass et YubiKey sur le blog désormais. J’espère que ça vous intéressera, pour ceux qui ne l’ont pas déjà lu, et que ça permettra aux autres d’y accéder facilement. Je rappel aussi que ce papier est aussi la version « complète » du billet KeePass2 et la synchronisation SSH/SFTP entre Windows, Linux et Android sur le site (article qui génère une proportion non-négligeable de vues sur le site d’ailleurs).

Enfin si vous n’êtes pas déjà abonné à MISC, je ne peux vous conseiller de le faire ! (même si je ne touche rien sur les ventes, 😉 ) !

Sur ce, bonne lecture à tous et @+… 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