Quelques astuces
Ouvrir rapidement un dossier dans PowerShell
Nous souhaitons ici ouvrir PowerShell et nous positionner dans un dossier spécifique afin d’exécuter un script s’y trouvant.
Pour cela, procédez comme ci-dessous :
Ouvrez la console PowerShell.
Naviguez jusqu’à votre dossier à l’aide de cd ou Set-Location.
Exécutez le script à l’aide de .\MonScript.ps1.
Une autre solution existe vous permettant, depuis l’explorateur Windows, d’ouvrir PowerShell directement dans le dossier sur lequel vous êtes.
Pour cela, il faudra procéder comme ci-dessous :
Placez-vous dans le dossier contenant le script à exécuter depuis l’explorateur Windows.
Placez-vous dans la barre d’adresse.
Saisissez le terme powershell.
Cliquez sur la touche [Entrée] du clavier.
La console PowerShell va alors s’ouvrir en se positionnant directement dans le dossier souhaité.
Récupérer le chemin complet d’un élément depuis l’explorateur Windows
Nous souhaitons ici récupérer le chemin complet d’un fichier ou répertoire.
Pour cela, procédez comme ci-dessous :
Ouvrez l’explorateur Windows.
Naviguez jusqu’au fichier ou répertoire souhaité.
Allez dans la barre d’adresse puis copiez le chemin.
Une autre solution plus rapide permet de récupérer le chemin depuis un clic droit sur le fichier ou répertoire.
Pour cela, il faudra procéder comme ci-dessous :
Ouvrez l’explorateur Windows.
Naviguez jusqu’au fichier ou répertoire souhaité.
Faites un clic droit sur le fichier ou répertoire en maintenant la touche [Shift].
Pour rappel, la touche [Shift] est la suivante :
Une nouvelle entrée dans le menu contextuel apparaît nommée Copier en tant que chemin d’accès.
Ci-dessous le menu contextuel avec juste un clic droit sans appuyer sur [Shift] :
Historique des commandes passées dans la console
1. Contexte
Prenons le scénario suivant :
-
Nous avons exécuté une commande ou un code précédemment.
-
Nous souhaitons y avoir accès.
Un autre exemple de scénario pourrait être de vérifier les commandes exécutées depuis une machine spécifique.
Pour cela, différentes méthodes existent :
-
Utiliser le fichier texte ConsoleHost_history.txt.
-
Utiliser la cmdlet Get-History.
-
Utiliser le raccourci [Ctrl] R.
-
Utiliser un script de recherche.
2. Rechercher l’historique dans le fichier texte
Où se trouve le fichier ?
Le fichier en question se nomme ConsoleHost_history.txt.
Celui-ci se trouve dans l’emplacement suivant : %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine.
En PowerShell :
$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine
Nous pouvons récupérer le chemin du fichier à l’aide de la commande suivante :
(Get-PSReadLineOption).HistorySavePath
Ce qui donnera :
Cette commande sans la propriété HistorySavePath vous donnera également d’autres informations.
Nous allons nous intéresser à certaines propriétés en rapport avec l’historique, afin de comprendre ce qu’elles font :
-
HistoryNoDuplicates : les commandes en double sont toujours ajoutées au fichier historique. Lorsque cette option est définie, seule l’invocation la plus récente apparaît lors du rappel des commandes.
-
HistorySavePath : chemin du fichier contenant l’historique.
-
HistorySaveStyle : mode de sauvegarde de l’historique. Trois valeurs sont disponibles :
-
SaveIncrementally : sauvegarde automatiquement après chaque commande.
-
SaveAtExit : sauvegarde à la fermeture de la console.
-
SaveNothing : désactive la sauvegarde.
-
HistorySearchCaseSensitive : spécifie...
Lister les combinaisons de touches disponibles
Comme mentionné plus haut, différents raccourcis-clavier et combinaisons de touches sont disponibles dans la console PowerShell. Ceux-ci peuvent permettre un véritable gain de temps, mais tout le monde ne les connaît pas.
Pour lister les combinaisons disponibles, il suffit d’utiliser la cmdlet Get-PSReadLineKeyHandler.
Ceci est également possible en utilisant la combinaison de touches [Ctrl][Alt][Shift] ?.
Ci-dessous les combinaisons en détail :
PS C:\Users\damien.vanrobaeys> Get-PSReadLineKeyHandler
Basic editing functions
=======================
Key Function Description
--- -------- -----------
Enter AcceptLine Accept the input or move to
the next line if input is missing a closing token.
Shift+Enter AddLine Move the cursor to the next
line without attempting to execute the input
Backspace BackwardDeleteChar Delete the character before the cursor
Ctrl+h BackwardDeleteChar Delete the character before the cursor
Ctrl+Home BackwardDeleteLine Delete text from the cursor
to the start of the line
Ctrl+Backspace BackwardKillWord Move the text from the start
of the current or previous word to the cursor to the kill ring
Ctrl+C Copy Copy selected region to the
system clipboard. If no region is selected, copy the whole line
Ctrl+c CopyOrCancelLine Either copy selected text to
the clipboard...
Éditer une commande dans la console
Prenons l’exemple suivant : vous avez exécuté une commande précédemment et vous souhaitez l’exécuter à nouveau, mais en la modifiant un peu avant de l’exécuter. Pour cela, il suffira de copier ou rechercher la commande souhaitée puis utiliser la combinaison de touches [Shift][Enter].
Cela ouvrira la commande en mode édition :
Lister les cmdlets comportant un certain mot
Il est souvent utile de rechercher une cmdlet comportant un certain mot.
Cela peut se faire en utilisant la cmdlet Get-Command.
Get-Command "*wmi*"
Une méthode plus rapide permettra grâce à l’IntelliSense d’afficher les différentes cmdlets comportant un certain mot. Il faudra utiliser la combinaison de touches [Ctrl][Espace].
Voyons cela en exemple :
Saisissez le mot get-it (pour get-item).
Utilisez la combinaison [Ctrl][Espace].
Un menu s’affichera, affichant les cmdlets comportant ce mot. En dessous, les différents paramètres seront affichés :
Lister les paramètres pour une cmdlet dans un menu
Il est possible d’accéder aux paramètres d’une cmdlet facilement en saisissant le caractère "-" puis la touche [Tab] (ci-dessous) :
Cependant, il faudra parfois cliquer plusieurs fois sur la touche [Tab] pour arriver au paramètre souhaité. Une autre technique est possible en listant directement tous les paramètres disponibles pour une cmdlet dans un menu :
Saisissez la cmdlet souhaitée.
Saisissez le caractère "-" (pour un paramètre).
Utilisez la combinaison [Ctrl][Espace].
Les différents paramètres seront affichés sous la forme d’un menu.
Commenter un bloc de code
Comme évoqué dans le chapitre Quelques bonnes pratiques, il est important de commenter son code afin de le rendre facilement maintenable et réutilisable.
Pour commenter une ligne, il faut la précéder du caractère #, ce qui la commentera :
Avec Notepad++, il est facilement possible de commenter une ligne ou un bloc entier de code en utilisant le raccourci [Ctrl] Q.
Ci-dessous un code non commenté :
$scriptDefinition = @'
$MonFichier=GC "C:\event_log.txt"
If($toto -eq $True)
{
If($tata -eq $True)
{
Votre code
}
}
'@
Ci-dessous le même code commenté en bloc avec [Ctrl] Q :
#$scriptDefinition = @'
#$MonFichier=GC "C:\event_log.txt"
#If($toto -eq $True)
# {
# If($tata -eq $True)
# { ...
Ajouter un menu contextuel Exécuter en tant qu’administrateur
Par défaut, lorsque vous faites un clic droit sur un fichier PowerShell, l’option qui vous est proposée est Exécuter avec PowerShell.
Cela aura pour action d’exécuter le script en question en mode utilisateur, c’est-à-dire sans privilèges ni droits administrateurs.
Il est souvent nécessaire d’exécuter certains scripts avec des droits élevés pour effectuer certaines actions. Il est possible d’ajouter ses propres entrées dans le menu contextuel de Windows pour une extension particulière. Ici, le but sera d’ajouter un menu contextuel, Exécuter en tant qu’administrateur après un clic droit sur un fichier PS1.
Pour créer le menu contextuel, procédez comme ci-dessous :
Ouvrez le registre en tant qu’administrateur.
Naviguez jusqu’à l’emplacement HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\shell.
Faites un clic droit sur Shell, puis sélectionnez Nouveau - Clé et saisissez comme nom RunAs.
La clé sera alors créée.
Faites un clic droit sur RunAs puis sélectionnez Nouveau - Valeur chaîne, afin de créer une nouvelle chaîne de caractères.
Renommez cette clé en HasLUAShield.
Cela va permettre d’afficher une icône administrateur....
Exécuter automatiquement un script dans Windows Sandbox
1. Qu’est-ce que Windows Sandbox ?
Windows Sandbox est une fonctionnalité de Windows intégrée depuis la version 1903. Celle-ci permet d’ouvrir un environnement virtualisé de votre système d’exploitation, un peu comme le principe d’une machine virtuelle, à la différence qu’elle ne nécessite pas d’image d’installation ni de VHDX ou de place sur votre disque.
Windows Sandbox utilise votre système d’exploitation pour ouvrir un environnement virtualisé et isolé, c’est-à-dire sans impact sur le poste hôte. De plus, tout ce que vous installez dans Windows Sandbox sera réinitialisé à sa fermeture.
2. Installation de Windows Sandbox
Pour installer Windows Sandbox sur votre poste, procédez comme ci-dessous :
Dans la barre de recherche du menu Démarrer, saisissez fonctionnalité windows.
Cliquez sur Activer ou désactiver des fonctionnalités Windows.
Cochez Bac à sable Windows.
Redémarrez votre poste.
3. Pourquoi exécuter un script dans Windows Sandbox ?
Windows Sandbox peut vous être très utile pour tester vos scripts sans les exécuter sur votre poste. Vous pouvez par exemple copier votre script et le coller directement dans Windows Sandbox afin...