Invite Powershell et plus

En préambule, je vous invite à jetter un coup d’oeil à ConsoleZ qui permet, entre autre, de multiplier rapidement les shells.

Un prompt, pourquoi faire

Le prompt powershell est défini par la function prompt (ça tombe plutot bien). Par défaut, le prompt indique PS ainsi que le chemin actif, la fonction prompt est invoqué à chaque affichage de celui-ci..

"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) ";

Et donc ?

Le prompt étant customisable nous pouvons donc lui faire afficher ce que nous voulons :

  • La machine sur laquel je suis
  • Le compte que j’utilise
  • Le chemin courant
  • Le PID du processus Powershell

Commençons notre voyage !

un peu de couleur

Nous pouvons facilement décider de nous debarrasser du prompt gris clair et utiliser une autre couleur comme le bleu.

function prompt {
Write-Host "PS " -NoNewLine -foregroundcolor Blue
Write-Host (Get-location).Path -NoNewLine
Write-Host '>' -NoNewLine -foregroundcolor Blue
return " "
}

est ce que le shell est élévé ?

Comme dans le mode Unix, c’est pas mal de savoir si le shell actuel est simple ou mode élévé (root), du coup, suivant l’élévation, nous pouvons changer le > par un #

function prompt {
Write-Host "PS " -NoNewLine -foregroundcolor Blue
Write-Host (Get-location).Path -NoNewLine
$elevated = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(
[Security.Principal.WindowsBuiltInRole]::Administrator)
if($elevated){
Write-Host '#' -NoNewLine -foregroundcolor Blue
}else{
Write-Host '>' -NoNewLine -foregroundcolor Blue
}
return " "
}

En attendant de finir le post, voici, la fonction de prompt que j’utilise actuellement.