.. Powershell

intro

introduction à l'utilisation de powershell

la suite de command.com et de cmd.exe
powershell.exe

version

v 5 ou plus

$PSVersionTable

aide

PS C:\> Get-Help

PS C:\> Select-String -? NOM Select-String SYNTAXE Select-String [-Pattern] <string[]> [-Path] <string[]> [<CommonParameters>] Select-String [-Pattern] <string[]> [<CommonParameters>] Select-String [-Pattern] <string[]> [<CommonParameters>] ALIAS sls ...

ref

Cmdlet         alias           cmd      shell (unix)  desc

Get-ChildItem  gci, dir, ls    dir      ls            Liste fichiers / répertoires 
Get-Content    gc, type, cat   type     cat           Obtenir le contenu d'un fichier
Get-Command    gcm             help     help, which   Liste des commandes
...

fr.wikipedia.org/wiki/Windows_PowerShell


find/grep

recherche de "chamois" dans les fic .htm
ls "D:\data_html\xxx\jeudi\*.htm" -Recurse | Select-String -Pattern "chamois"
D:\data_html\xxx\jeudi\2007\index.htm:196:- 1 chamois. Ce petit ...

avec Ubuntu: durée (time) -- compter (|wc)
# time find . -name "*.htm" -exec grep -i 'chamois' {} \; -print
- 1 chamois. Ce petit... 
./2007/index.htm
 real 6sec
# find . -name "*.htm" -exec grep -i 'chamois' {} \; -print|wc
  32

PS D:\> Get-childItem *.htm -recurse | Select-String -Pattern "France"
ou
PS D:\> gci *.htm -recurse | Select-String -Pattern "France"


more

"powershell (ISE)" Integrated Scripting Environment
----------- Afficher (Ctrl+R) = volet de scripts (fenêtre en 2 parties)

le gros plus: avec TAB pour afficher les propositions!! (syntaxe ++)

F5 = exécuter le script
F8 = exécuter la sélection

# ping.ps1 # -------------------- clear-host # un ping sur la machine nommee mgmt ping -t mgmt # boucle sur la machine localhost while ($true) {Test-connection localhost -count 1}
 ..............
  resultat:
 ..............
IND3         localhost       127.0.0.1        ::1           32       0     
IND3         localhost       127.0.0.1        ::1           32       0     
IND3         localhost       127.0.0.1        ::1           32       0     
...



# while.ps1 # boucle while # -------------------- clear-host $i = 1 write-host "begin" DO { write-host "i a la valeur $i" $i+=2 write-host "i a la nouvelle valeur $i" } while ($i -le 10) write-host "end"
.............. resultat: .............. begin i a la valeur 1 i a la nouvelle valeur 3 i a la valeur 3 i a la nouvelle valeur 5 i a la valeur 5 i a la nouvelle valeur 7 i a la valeur 7 i a la nouvelle valeur 9 i a la valeur 9 i a la nouvelle valeur 11 end PS C:\temp> errors ======
$? true or false xxxxxxx | out-null no output $error toutes les erreurs (mais la derniere tout en haut) $error[0] la derniere erreur $error.clear() effacer les erreurs
3 blocs 1 2 3 try, catch, finally 1 peut poser un pb 2 que faire en cas d'erreur? .... on analyse les erreurs (le nom du fic. est faux, ) .... et on affiche du blabla en consequent 3 suite (optionnel) a executer dans tous les cas (err ou pas avant) voir https://www.it-connect.fr/powershell-try-catch-finally-tuto/ ............................................................................. afficher texte ============== attention a l'ordre des commandes. write-host !!!!
write-host debut -foregroundcolor red get-ciminstance -className win32_operatingsystem | select caption,lastbootuptime write-host fin VS write-output debut get-ciminstance -className win32_operatingsystem | select caption,lastbootuptime write-output fin
.............. resultat 1: (ordre FAUX) .............. debut fin caption lastbootuptime ------- -------------- Microsoft Windows 10 Famille 26/10/2022 00:11:52 (a cause du pipe, le texte fin va etre affiche avant la ligne 2 (lastboot) .............. resultat 2: (ici, avec "write-output" c'est CORRECT) .............. debut caption lastbootuptime ------- -------------- Microsoft Windows 10 Famille 26/10/2022 00:11:52 fin