ISIMA - 1e année - Systèmes d'exploitation
TP 3 – Windows PowerShell

Exercice 1
1. Ouvrir une invite de commande dans une session Windows et lancer PowerShell. Faire afficher le contenu du répertoire racine de votre compte puis la liste de ses fichiers (sans les répertoires).
2. Taper une commande qui permette d'obtenir la liste des commandes de PowerShell contenant le verbe "move". Obtenir le même résultat de deux autres manières différentes, dont une avec un filtre.
3. Fermer la fenêtre d'invite de commande et ouvrir Windows PowerShell ISE. Taper les mêmes commandes.
Vérifier que les droits en exécution des scripts PowerShell sont bien activés. Pour la suite du TP, on travaillera sous ISE ; ne pas hésiter à utiliser son outil de débogage intégré.
Tous les scripts seront annotés autant que de besoin de commentaires explicitant leur rôle et leur usage.

Exercice 2
1. Ecrire un script qui demande un jour, un mois, une année et qui vérifie que les trois valeurs saisies sont acceptables :
- jour entre 1 et 31,
- mois entre "Janvier" et "Décembre",
- l'année est un nombre.
S'assurer que le script a un comportement robuste et convivial.
2. Ecrire une deuxième version de ce script qui vérifie aussi si la date est valide :
- pas de 31 avril, etc.,
- 29 février seulement les années bissextiles.

Exercice 3
1. Ecrire un script qui affiche la fusion imbriquée de deux chaines passées en paramètres. Par exemple "janvier" et "avril" donnera "jaavnrviiler".
2. Ecrire un script qui sauvegarde dans un fichier la fusion imbriquée de plusieurs chaines passées en paramètres. Par exemple "bonjour" "chez" et "vousautres" donnera "bcvohoneujzsoauurtres".

Exercice 4
On cherche à copier les fichiers d'un répertoire source vers un répertoire destination seulement si, pour chaque fichier, le répertoire destination ne contient pas de version plus récente de ce fichier.
1. Ecrire une script PowerShell pour cette fonctionnalité.
2. Comment réaliserait-on cette fonctionnalité sous Shell Unix/Linux ?

Exercice 5
Existe-t-il un équivalent des commandes du Shell Unix "grep" "find" et "wc" sous PowerShell ? Si oui, donner des exemples montrant l'usage de ces commandes sous PowerShell. Pour chacune de ces commandes si la réponse est non, après avoir réalisé l'exercice suivant, réinvestir les scripts créés pour réaliser une fonctionnalité équivalente.

Exercice 6
1. Construire un script qui affiche tous les mots d'un fichier qui contiennent la suite de caractères "sc".
Ce script marche-t-il pour les fichiers "MarkTwain1.txt" et "MarkTwain2.txt"?
2. Construire un script qui utilise le script précédent pour donner le nombre de mots d'un fichier qui contiennent la suite de caractères "sc".
3. Créer une version généralisée des scripts précédents où le motif à reconnaitre n'est plus "sc" mais tout motif donné en paramètres. Essayer avec les motifs "th" et "xtr" sur les fichiers "MarkTwain*.txt".
4. Créer un script qui remplace, dans un flux d'entrée, les points-virgules par des espaces et les tabulations par des retours à la ligne.
Appliquer ce script aux fichiers "pays0.txt" "pays1.txt".

Exercice 7 (à faire en dernier)
1. Que donne les commandes "tree" et "tree ." ? La commande tree est-elle spécifique à PowerShell ?
2. Réaliser un script qui programme la même fonctionnalité sans utiliser la commande tree.