S1C4 LC Powershell

SIO > S1_Commun > . > S1C3_Langage de commande > S1C4_PS_1_bases.md

Introduction

Le powershell reprend les commandes du DOS. Le Powershell devient un vrai langage de script.

Le "DOS" est le nom usuel du langage de commande Microsoft accessible par la ligne de commande cmd.
Pour utiliser le Powershell, nous allons utiliser deux interfaces de commandes :

  • la ligne de commande Powershell,
  • l'IDE de powershell.

Pourquoi utiliser Powershell et plus CMD ?

Le DOS est mort, vive le Powershell

Le PS est plus complet que le CMD. Les commandes sont plus nombreuses, les structures de programmation plus conformes à l'algorithmique des vrais langages.

Cependant, les concepteurs ont créé un système d'alias pour :

  • utiliser les commandes du DOS : facilite la compréhension et la migration vers le PS
    • par exemple : dir devient dir en powershell...
  • utiliser les commandes du Shell Linux : pour les mêmes raison et ajouter la concurrence du PS face au Shell
    • par exemple : ls existe aussi en powershell et fait la même chose que dir.
  • créer des raccourcis des commandes : beaucoup de commandes longues à écrite ont des raccourcis qui correspondent +/- aux "initiales" des mots les composants
    • par exemple : get-command devient gcm.

Pour la suite, nous utiliserons les commandes DOS, shell ou Powershell qui sont universelles

Premières commandes

Les tableaux suivants montrent les commandes Powershell de base, leur raccourcis, les équivalents en DOS et Shell et la description.

>

Le nom des commandes est formé d'un verbe (get, new, move, remove, etc...) suivi du nom de l'objet auquel il s'applique : help, child item, item, etc. ...)
Il est évident qu'avec le temps, les informaticiens utilisent plus souvent les alias (raccourcis) des commandes que leur vrai nom.
Cependant, il reste important de connaître leur origine.

Les symboles suivants signifient :

  • (*) : la commande nécessite des paramètres supplémentaire car elle est aussi utilisée ailleurs
  • += : il existe un alias pour les commandes DOS
  • +== : il existe un alias pour les commandes DOS et Linux
  • N/D : non disponible ; N/A : non applicable, etc.

Répertoires (+++)

Powershell alias DOS Bash Description Exemples
Get-Help, help +== help man aide sur une commande help dir
Get-ChildItem gci, +== dir dir, ls Afficher le contenu d'un répertoire. dir FTP\Users\
Set-Location sl, +== chdir, cd Changer de répertoire courant cd c:/temp ; cd FTP\Users
New-Item (*), mkdir ni, +== mkdir, md mkdir Créer un répertoire (*) ni -directory tutu
Remove-Item ri, +== rd ou rmdir rmdir Supprimer un répertoire (voir aussi dans la rubrique fichiers) rd tutu
tree (pas d'alias, c'est une application) N/D Afficher une arborescence sous forme pseudo graphique tree c:\temp

  • Créer un répertoire : attention, cette commande nécessite d'indiquer le type d'objet On peut voir que dans la colonne alias, il existe quasiment toujours des alias reprenant les commandes DOS et les commandes Shell.

ICI

Fichiers (+++)

Powershell alias DOS Bash Description Exemples
Get-Content gc, +== type cat (++) Afficher le contenu d'un fichier texte type liste.txt
more (++) (Fonction) : afficher le contenu d'un fichier texte page par page dir | more
New-Item (*) ni touch Créer un fichier vide (*) ni -directory tutu
Rename-Item rni, += ren, rename renommer un fichier ren titi.txt toto.txt
Move-Item mi, +== mv ou move mv (+++) Renommer ou/et déplacer un fichier ou un répertoire mv FTP/Users/toto/toto.txt FTP/pub/private/publication_toto.txt
Copy-Item cpi, +== cp copy (+++) Copier un fichier ou dossier (plusieurs en utilisant les jokers * ou ?) ; copy FTP\*.* FTP_SAV</ps>
xcopy (+++) (Application) : copier un ou plusieurs fichiers ou dossiers, voir : xcopy /? xcopy /S/D/H FTP*. FTP_SAV</dos>
Remove-Item ri, erase, +== del rm (+++) Supprimer un fichier (…) (plusieurs en utilisant les jokers ou ?) del FTP_SAV\*.*
find (grep) (-) (Application basique) : Recherche les lignes correspondant à l'exemple dans un fichier find "toto" liste.txt
findstr (grep) (-) (Application) : la même avec plus d'options : findstr /? pour l'aide find "toto" liste.txt
attrib (chmod) (-) (Application) Afficher ou modifier les attributs (de sécurité) des fichiers attrib +H liste.txt
N/D mklink Créer un raccourci. Pour obtenir cette fonction, il faut écrire une script

Autres remarques :

  • Créer un fichier vide : c'est l'équivalent Linux de touch, aucun paramètre n'est nécessaire. Mais attention, voir la même commande, plus haut
  • Renommer un fichier : rename n'existe plus, elle est remplacée par celle, plus universelle de Linux : move
  • Rechecher un fichier : la commande dir /S fait déja très bien le travail. Linux utilise find servant à rechercher des fichiers (et non des chaines dans un fichier)
  • Recherche de chaîne dans un fichier : les applications (les programmes) find et findstr servent à ça. Sous Linux, c'est la commande grep qui est utilisée.
    Voir l'aide de ces commandes pour obtenir plus de détails et les vraies différences.
  • Modifier les attributs : la notion d'attributs (S,A,H,R...) n'existent pas sous Linux. Ce qui se rapproche le mieux sont les droits d'accès de base extfs modifiables avec chmod (rwx).

Exemple

copier (/S) seulement les sous répertoire non vides et les fichiers (/D) plus récents que déjà copiés, même (/H) cachés :

[dos]
	xcopy /S/D/H FTP\*.* FTP_SAV\

Les commandes système (+)

Commande Description
date (+) Afficher/changer la date système (du BIOS)
time (+) Afficher/changer l'heure système (du BIOS)
mem Affiche la quantité de mémoire disponible
ver Affiche la version du système
format (+++) Executable qui permet de formater un disque. Attention, cela supprime toutes les données
exit Sortir de l'invite de commande (et fermer la fenêtre)
cls Effacer l'écran de commande
title Définir le titre de la fenêtre de commande
title Définir le titre de la fenêtre de commande

Les commandes réseau (+++)

Commande Description
ipconfig Afficher la configuration du réseau ; renouveler ou libérer l'adresse IP
ping Envoyer une requête ICMP à l'hôte indiqué pour tester la communication réseau
tracert Envoyer une série de requêtes ICMP à l'hôte indiqué pour tracer la route des équipements traversés
netstat (++) Afficher l'état des communications réseau, des connexions
arp (++) Afficher la table ARP locale ; gérer la table ARP
route (++) Afficher la table des routes locales ; gérer cette table
net use (-) Connecter un périphérique réseau
nslookup Demande d'identification du domaine par le 1er DNS pouvant répondre

Il existe d'autres commandes moins utiles ou spécifiques. Utiliser la commande help dans l'invite de commande pour les afficher.

Références technologiques

Poursuire le cours avec la seconde partie du cours sur les langages de commande.
Voir la multitude d'articles sur le net.