Projet

Général

Profil

PSHistory

PSh est un script Winform facilitant la gestion de l'historique de PowerShell V1.0.
Ce script ne gère pas l'historique des commandes de la console de PowerShell, mais celui accessible via les cmdlets dédiés.

Il s'agit d'un rewamping (rhabillage) des cmdlets Get-History, Add-History et Invoke-History.
"Le principe du rewamping consiste à transformer l'interface utilisateur d'une application existante en substituant à une présentation généralement de type caractère, un interfaçage graphique sans remettre en question la logique de l'application antérieure."

L'usage d'alias facilitera son utilisation. Il existe déjà par défaut les alias h, r et history.
Vous pouvez ajouter celui-ci :

set-alias PSh ".\PSH.ps1" 
 #ou 
set-alias PSh "$($AddLibCfg.PsHistory)\PSh.ps1" 

$PSscripts référence ici le répertoire contenant tout vos scripts et est déclaré dans le profil utilisateur de PowerShell.

Le titre de la fenêtre indique entre crochets le nom du titre de la console de la session PowerShell associée et son Process ID.
p=.

Les objets insérés dans la CheckListBox sont de la classe Microsoft.PowerShell.Commands.HistoryInfo.
Le chargement d'une liste de commande d'historique est en mode append (on ajoute après le dernier élément).
p=.

Toutes les opérations, en dehors de la visualisation d'un fichier d'historique, portent sur le contenu réel de l'historique de PowerShell.

L'instruction exécutant ce script, via la ligne de commande, n'est pas affiché dans la liste, mais se retrouvera dans l'historique sous la forme :

109,".\PSh.ps1",Running,"date heure","date heure" 

Une fois l'exécution de ce script terminé on retrouve la même ligne, mais avec un statut
 "completed"  : 109,".\PSh.ps1",Completed,"date heure","date heure" 

Le bouton "Exécuter" crée un tableau de portée globale nommé, PShCmds, contenant les lignes cochées dans la listbox.
Les instructions contenues dans ce tableau peuvent être tour à tour être exécutées par :
  Get-History $PShCmds| %{Invoke-History $_}

Ce tableau ne contient que les numéros des commandes de l'historique actuel, sa cohérence est proportionnelle à sa durée de vie.
PS C:\Program Files\PowerShell\Add-Lib\Scripts> $PShCmds|Get-history

  Id CommandLine
  -- -----------
  56 cd $AddLibCfg.scripts
  62 $PShCmds|Get-history
  71 Get-process P[aeiouy]*

Plus vous manipulerez l'historique, sauf l'ajout de commande via la console, plus les numéros d'ID risque d'être incohérents.
Par exemple après avoir effacé l'historique courant, le contenu de $PShCmds est désormais erroné :

Note:
Après quelques tentatives, il s'est avéré préférable d'exécuter ces lignes d'historique en dehors du script Psh.ps1.
Principalement pour des raisons de portée, par défaut on ne précise pas, lors d'une déclaration de variable dans la console, de portée.
En revanche, la ré-exécution d'une telle déclaration dans un script se fait dans celle du script, cette déclaration n'est donc pas globale.
CQFD !

C'est à vous de déterminer la cohérence des instructions sélectionnées et pour le moment il n'est pas possible de les réordonner.
L'ordre actuel suit celui de la listbox.