# Programmation PowerShell/Navigation

PowerShell
* Introduction
* Démarrer avec PowerShell
* Navigation
* Formatage de l'affichage
* Les scripts
* Variables, constantes et alias
* Tableaux
* Redirections
* Conditions
* Boucles
* Switch
* Les objets personnalisés
* Fonctions et filtres
* Gestion des services et des processus
* Accès distants
Maintenant que vous connaissez un peu mieux le principe de fonctionnement de PowerShell, abordons la navigation, ou comment s'y retrouver une fois dans la commande PowerShell. C'est bien joli de connaître les cmdlets ou de savoir le principe de la console, si on ne manipule rien et que l'on ne va nulle part. Dans ce chapitre sera traiter tout ce qui concerne les dossiers et les fichiers, que ce soit les parcourir, les créer, les modifier ou encore faire une recherche.

## Un point sur le système de fichiers de Windows

Le système de fichiers c'est la manière d'écrire les données sur le média en l’occurrence sur votre disque dur ! De mon point de vue, vous n'avez pas besoin de rentrer dans les détails mais je vous mets un lien à tout hasard : NTFS. Ce que vous devez savoir :
* vous pouvez créer une arborescence de dossiers, sous-dossiers qui contiennent des fichiers.
* vous pouvez définir des permissions (ACLs) pour restreindre les accès, etc.

## Où suis-je ? Comment puis-je naviguer ?

* Get-Location
La commandlette Get-Location vous indique le répertoire courant. Pour vous déplacer dans la hiérarchie de dossiers, sous-dossiers. utilisez la commande suivante :
* Set-Location
ce qui définira le dossier c:\users comme répertoire courant. Notez que vous n'êtes pas limité au lecteur C:\ ! Si vous avez une clef usb ou un disque dur externe, vous pouvez taper ceci par exemple :
Ouh laaa ... ça me gave de taper les chemins complet ! Là encore, PowerShell est un shell moderne et vous avez la complétion automatique à votre disposition. Procédez ainsi :
* Tapez la commande soit Set-Location puis
* Tapez le début du chemin soit c:\u
* Frappez la touche TAB (tabulation) ce qui demande l’auto-complétion.
Si le chemin n'est pas le chemin voulu, frappez au temps de fois la touche TAB que nécessaire ! Quand le chemin correct est affiché, validez en frappant la touche retour ou entrée !

## Lister

Pour afficher le contenu d'un dossier, tapez :
Notez que vous pouvez utiliser les arguments -File et -Directory pour ne lister que les fichiers ou que les dossiers :
Bien qu'un peut compliquée si vous venez de commencer, je vous donne cette commande :
Ceci permet d'avoir les derniers fichiers modifiés ce qui peut être pratique.

## Création et modification de fichiers

* New-Item
La commande New-Item permet de créer des fichiers, dossiers et d'autres éléments que vous verrez plus tard ! Créer un fichier vide n'a guère de sens. Je vous donne donc la commandlette pour créer un sous-dossier :
Remarquez que j'ai raccourci la valeur de l'argument. J'aurais pu écrire -ItemType Directory mais là aussi, PowerShell vous laisse être un peu paresseux.
* création d'un fichier avec un contenu
Utilisez le pipe comme suit pour créer un fichier avec du contenu
Vous pouvez vérifier, la valeur 1 est écrite dans le fichier exemple.txt
Faisons de même pour du texte :
Retenez que le guillemet américain simple écrase le contenu et que le guillemet américain double met le contenu à la fin (mode append).

## Lecture de fichier

Pour lire les 50 dernières lignes d'un gros fichier de logs :
Pour en filtrer les lignes contenant une chaine (équivalent au grep Linux) :

## Mais où est Charlie ?

Pour l'instant, je ne trouve pas d'exemple pour démarrer une recherche Windows Search mais en théorie, ça doit être faisable
En revanche, voici deux commandlettes utilisables de suite :
La commande ci-dessus listera les dossiers et les fichiers contenant le mot fête.
La commande ci-dessus listera les fichiers contenant le mot fête situés dans le dossier courant uniquement.
La commande ci-dessous fait de même mais en parcourant tous les sous-dossier ce qui peut prendre beaucoup de temps !
La commande ci-dessus listera les fichiers contenant le mot fête dans le dossier courant et les sous-dossiers.
Attention toutefois, si la commande met trop de temps, vous pouvez l'arrêter avec la combinaison de touches ci-dessous :
Important : en appuyant simultanément sur les touches contrôle et C, vous arrêtez l'exécution du script !