Débuter avec PowerShell
Avant-propos
1. Objectifs du livre29
2. À qui s'adresse ce livre ?29
3. Approche du livre30
4. Connaissances préliminaires30
5. Comment utiliser ce livre ?31
6. Remerciements31
Chapitre 1
Scripting et automatisation
1. Automatisation : principe et intérêt33
1.1 Qu'est-ce que l'automatisation ?33
1.2 Automatisation dans l'informatique33
2. Scripting et programmation : les alliés de l'automatisation35
2.1 La programmation35
2.2 Le scripting35
2.3 Langage de script vs langage de programmation36
2.3.1 Langage de programmation (ou langage compilé)36
2.3.2 Langage de script (ou langage interprété)37
3. Pourquoi choisir PowerShell ?37
Chapitre 2
Histoire de PowerShell
1. Introduction39
2. Qu'est-ce qu'un shell ?39
3. DOS, MS-DOS, CMD40
4. VBScript (VBS)40
5. Monad (MSH) : prémices de PowerShell40
5.1 Origine du nom de code Monad40
5.2 Pourquoi Monad ?41
6. De PowerShell 1.0 à PowerShell 542
7. La suite de PowerShell46
7.1 PowerShell 6.0 à 6.246
7.2 PowerShell 746
Chapitre 3
Comment apprendre PowerShell ?
1. Par où commencer ?49
2. Transformez vos vieux scripts52
3. La clé de la réussite : l'autoformation52
4. Maîtrisez l'anglais technique53
5. Automatisez votre quotidien53
6. Ne renoncez jamais54
Chapitre 4
Comment s'améliorer ?
1. Testez, faites des erreurs, recommencez55
2. Ressources sur Internet56
3. Personnes à suivre pour apprendre57
Chapitre 5
Quelques bonnes pratiques
1. Toujours vérifier l'aide proposée par PowerShell59
2. Get-Member : comprendre ce que contient un objet60
2.1 Fonctionnement60
2.2 Lister uniquement les propriétés61
2.3 Lister uniquement les méthodes61
3. Get-Command pour trouver la bonne commande61
4. Commenter son code63
4.1 Que signifie commenter son code ?63
4.2 Pourquoi est-ce important ?64
4.3 Comment commenter son code ?65
5. Indenter son code66
5.1 Qu'est-ce que l'indentation ?66
5.2 Indentation en exemple66
5.3 Pourquoi indenter le code ?67
5.4 Règles d'indentation67
6. Utiliser la saisie semi-automatique ou l'autocomplétion71
6.1 Pourquoi ?71
6.2 Fonctionnement71
6.3 Comment l'utiliser ?71
7. Majuscules ou minuscules ?72
8. Ne pas utiliser d'alias73
8.1 Qu'est-ce qu'un alias ?73
8.2 Pourquoi ne pas utiliser d'alias ?74
9. Favoriser la simplicité à la complexité75
10. Limiter la longueur des lignes76
11. Éviter les points-virgules à la fin de vos lignes76
11.1 À quoi sert le caractère point-virgule ?76
11.2 Pourquoi éviter d'utiliser le point-virgule ?77
12. Des espaces entre paramètres et opérateurs77
13. Relire son code77
14. PSScriptAnalyzer : un moyen d'analyser son code78
14.1 Qu'est-ce que le module PSScriptAnalyzer ?78
14.2 Comment l'installer ?78
14.3 Les règles que le module va vérifier78
14.4 Analyse d'un script81
14.5 Analyse d'un code83
14.6 Formater son code84
Chapitre 6
Premiers pas avec PowerShell
1. Introduction87
2. Prise en main de la console PowerShell88
2.1 PowerShell 32 ou 64 bits ?88
2.2 PowerShell 32 ou 64 bits, quelles sont les différences ?89
2.3 Démarrer la console 32 ou 64 bits92
2.4 Déterminer l'architecture utilisée93
2.5 Connaître la version de PowerShell95
2.6 PowerShell en utilisateur ou administrateur96
2.7 Configurer la console PowerShell98
2.8 Les raccourcis-clavier104
3. Prise en main de PowerShell ISE104
3.1 Qu'est-ce que PowerShell ISE ?104
3.2 PowerShell ISE x64 ou x86 ?105
3.3 Raccourcis clavier dans PowerShell ISE106
Chapitre 7
Les outils pour éditer PowerShell
1. Introduction109
2. Windows PowerShell ISE109
2.1 Barre de menu111
2.2 La partie script112
2.3 La partie commandes114
2.4 La partie console115
3. Notepad++116
4. Visual Studio Code117
5. PowerShell Studio120
Chapitre 8
PowerShell, un langage de cmdlets
1. Qu'est-ce qu'une commande ?123
2. Qu'est-ce qu'une cmdlet ?124
3. Que se passe-t-il derrière ?124
3.1 Cmdlets et bibliothèques124
3.2 Cmdlets et bibliothèques en exemples124
3.3 Identifier la bibliothèque utilisée par une cmdlet126
4. Syntaxe d'une cmdlet127
4.1 La syntaxe Verbe + Nom127
4.2 Qu'est-ce qu'un verbe ?128
4.3 Qu'est-ce qu'un nom ?132
5. Get-command : lister les cmdlets132
6. Les paramètres134
6.1 Qu'est-ce qu'un paramètre ?134
6.2 Syntaxe d'un paramètre135
6.3 Les types de paramètres135
6.4 Lister les paramètres disponibles135
6.5 Comportement d'un paramètre137
7. Les alias de cmdlets143
8. Show-Command : visualiser une cmdlet et ses paramètres145
9. PowerShell et les modes d'analyse syntaxique146
9.1 Analyse rapide pour comprendre146
9.2 Le mode expression147
9.3 Le mode commande147
9.4 Mode expression vs mode commande en exemples148
Chapitre 9
PowerShell et les scripts
1. Introduction149
2. Qu'est-ce qu'un script ?149
3. Format d'un script150
4. Créer un script152
4.1 Notre script153
4.2 Création depuis Notepad+ +154
4.3 Création depuis PowerShell ISE156
Chapitre 10
Exécution de scripts
1. Introduction159
2. Quel format de fichier ?159
3. La stratégie d'exécution161
3.1 Exécution par défaut161
3.2 Qu'est-ce que la stratégie d'exécution ?162
3.3 Stratégies d'exécution par défaut163
3.4 Différentes stratégies d'exécution163
3.5 Etendue de la stratégie d'exécution165
3.6 Gérer la stratégie d'exécution avec PowerShell165
3.6.1 Récupérer la stratégie appliquée actuellement165
3.6.2 Modifier la configuration167
4. Signer un script168
4.1 Générer un certificat autosigné169
4.2 Signer le script173
4.3 Obtenir les informations d'un script signé175
4.4 Sécurité des fichiers provenant d'Internet177
4.4.1 Débloquer un fichier particulier178
4.4.2 Débloquer le contenu d'un dossier178
Chapitre 11
L'aide PowerShell, un précieux allié
1. Get-Help : pourquoi ?179
2. Comment l'utiliser ?180
3. Exemples d'utilisation184
3.1 Obtenir de l'aide simple184
3.2 Obtenir des exemples185
3.3 Obtenir les détails d'une cmdlet187
3.4 Obtenir l'aide en ligne188
4. Télécharger la dernière mise à jour de l'aide190
Chapitre 12
Le pipeline
1. Introduction191
2. Principe et fonctionnement du pipeline191
2.1 Qu'est-ce que le pipeline ?191
2.2 Où se trouve le pipeline ?192
2.3 L'enchaînement des commandes192
3. Comprendre le pipeline en exemple193
4. Schématiser un pipeline196
5. La liaison des paramètres et objets197
5.1 Principe197
5.2 Connaître les paramètres utilisant le pipeline197
Chapitre 13
La gestion des objets
1. Qu'est-ce qu'un objet ?201
2. Récupérer la structure d'un objet203
2.1 Comment faire ?203
2.2 Les propriétés205
2.3 Les méthodes207
2.4 Les évènements209
3. Quelles cmdlets utiliser pour gérer les objets ?209
4. Filtrer les objets212
4.1 Filtrer le contenu212
4.2 Sélectionner les propriétés à afficher213
5. Trier des objets215
6. Créer un objet216
6.1 Création d'un objet .NET ou COM216
6.1.1 Objets .NET217
6.1.2 Objets COM218
6.2 Création d'objets personnalisés222
6.2.1 Syntaxe 1 : New-Object223
6.2.2 Syntaxe 2 : PSCustomObject223
7. Ajouter ou supprimer des propriétés224
7.1 Contenu de notre objet224
7.2 Ajouter une propriété dans un objet225
7.3 Supprimer une propriété d'un objet226
8. Comparer des objets227
Chapitre 14
Les opérateurs
1. Qu'est-ce qu'un opérateur ?231
2. Les opérateurs arithmétiques231
2.1 L'addition232
2.2 La soustraction232
2.3 La multiplication233
2.4 La division233
2.5 Le modulo ou reste233
3. Les opérateurs de comparaison234
3.1 Les opérateurs d'égalité236
3.2 Les opérateurs de correspondance238
4. Les autres opérateurs241
4.1 Le pipeline241
4.2 L'affectation241
4.3 L'opérateur d'appel241
Chapitre 15
Les variables
1. Qu'est-ce qu'une variable ?243
1.1 Comment déclarer une variable ?243
1.2 Afficher le contenu d'une variable245
1.3 Afficher le type d'une variable247
1.4 Définir le type d'une variable248
2. Les variables d'environnement249
3. Les variables automatiques252
4. La portée des variables257
4.1 Qu'est-ce qu'une portée ?257
4.2 Comment définir la portée d'une variable ?257
4.3 Portée globale258
4.3.1 À quoi correspond-elle ?258
4.3.2 Déclaration de la portée258
4.3.3 Jusqu'où va cette portée ?258
4.3.4 Comprendre son fonctionnement258
4.4 Portée script260
4.4.1 À quoi correspond-elle ?260
4.4.2 Déclaration de la portée260
4.4.3 Jusqu'où va cette portée ?261
4.4.4 Comprendre son fonctionnement261
4.5 Portée locale262
4.5.1 À quoi correspond-elle ?262
4.5.2 Déclaration de la portée262
4.5.3 Jusqu'où va cette portée ?263
4.5.4 Comprendre son fonctionnement263
Chapitre 16
Les conditions
1. Qu'est-ce qu'une condition ?265
2. Pourquoi les utiliser ?266
3. Les différentes instructions267
3.1 Condition simple : If267
3.1.1 Fonctionnement267
3.1.2 Structure267
3.1.3 La condition If en exemple267
3.2 Si/Sinon : If/Else269
3.2.1 Fonctionnement269
3.2.2 Structure269
3.2.3 La condition If/Else en exemples269
3.3 Si/Sinon si/Sinon : If/ElseIf/Else271
3.3.1 Fonctionnement271
3.3.2 Structure271
3.4 Switch272
3.4.1 Fonctionnement272
3.4.2 Structure272
3.4.3 L'instruction Switch en exemple273
Chapitre 17
Les boucles
1. Qu'est-ce qu'une boucle ?275
2. La boucle For276
2.1 Signification276
2.2 Utilisation276
3. La boucle Foreach277
3.1 Signification277
3.2 Utilisation278
3.2.1 Première syntaxe278
3.2.2 Seconde syntaxe279
4. La boucle While280
4.1 Signification280
4.2 Utilisation280
5. La boucle Do-While281
5.1 Signification281
5.2 Utilisation281
6. La boucle Do-Until282
6.1 Signification282
6.2 Utilisation283
Chapitre 18
Entrées et sorties utilisateur
1. Introduction285
2. Affichage d'informations286
2.1 Comment faire ?286
2.2 Write-Host287
2.3 Write-Output288
2.4 Write-Host ou Write-Output ?289
2.4.1 Envoi du texte289
2.4.2 Couleur de texte et fond291
2.4.3 L'avis du créateur de PowerShell291
3. Affichage d'alertes291
4. Saisies utilisateur292
4.1 Saisie et lecture d'un texte simple293
4.2 Saisie et lecture d'une valeur à sécuriser294
5. Création d'un menu295
5.1 Afficher du contenu295
5.2 Récupérer la saisie297
5.3 Coder l'action exécutée en fonction du choix298
6. Des menus en exemples304
6.1 Menu dépannage de poste304
6.1.1 Objectif304
6.1.2 Composition du menu304
6.1.3 Création du menu305
6.2 Menu gestion Active Directory307
6.2.1 Objectif307
6.2.2 Composition du menu307
6.2.3 Création du menu308
Chapitre 19
Les cmdlets indispensables
1. Test-Path : tester l'existence d'un élément315
1.1 Que fait cette cmdlet ?315
1.2 Comment l'utiliser ?316
1.3 Exemples d'utilisation316
1.3.1 Tester l'existence d'un fichier ou d'un dossier316
1.3.2 Tester les éléments les plus récents317
1.3.3 Tester les éléments les plus anciens317
1.3.4 Tester l'existence d'une clé de registre318
1.3.5 Tester l'existence d'un certificat318
2. New-Item : créer un nouvel élément320
2.1 Que fait cette cmdlet ?320
2.2 Comment l'utiliser ?320
2.3 Exemples d'utilisation321
2.3.1 Créer un dossier321
2.3.2 Créer un fichier322
2.3.3 Tester l'existence puis créer un élément322
2.3.4 Créer une clé de registre324
3. Get-ChildItem : lister du contenu325
3.1 Que fait cette cmdlet ?325
3.2 Comment l'utiliser ?325
3.3 Exemples d'utilisation326
3.3.1 Lister un simple contenu327
3.3.2 Lister le contenu des dossiers et sous-dossiers328
3.3.3 Lister uniquement les fichiers ou dossiers328
3.3.4 Exclure certaines extensions de fichier329
3.3.5 Lister uniquement certains types de fichier330
3.3.6 Lister les éléments du registre332
4. Remove-Item : supprimer un élément333
4.1 Que fait cette cmdlet ?333
4.2 Comment l'utiliser ?334
4.3 Exemples d'utilisation334
4.3.1 Suppression simple d'un fichier/dossier334
4.3.2 Supprimer uniquement certains fichiers336
4.3.3 Supprimer tout sauf certains fichiers337
5. Rename-Item : renommer un élément337
5.1 Que fait cette cmdlet ?337
5.2 Comment l'utiliser ?337
5.3 Exemples d'utilisation338
5.3.1 Renommer un fichier ou un dossier338
5.3.2 Renommer plusieurs éléments338
6. Copy-Item341
6.1 Que fait cette cmdlet ?341
6.2 Comment l'utiliser ?341
6.3 Exemples d'utilisation342
6.3.1 Copier un fichier ou un dossier342
6.3.2 Copier un dossier et tout son contenu343
6.3.3 Copier certains fichiers uniquement344
6.3.4 Copier tout sauf certains éléments344
7. Get-Content345
7.1 Que fait cette cmdlet ?345
7.2 Comment l'utiliser ?345
7.3 Exemples d'utilisation345
7.3.1 Lister le contenu d'un fichier texte345
7.3.2 Récupérer le nombre de lignes d'un fichier texte346
7.3.3 Afficher la valeur de la première ligne346
7.3.4 Afficher la valeur de la dernière ligne347
Chapitre 20
De CMD à PowerShell
1. Introduction349
2. Équivalences entre CMD et PowerShell350
2.1 Équivalence de commandes350
2.1.1 Commandes de gestion des fichiers/dossiers350
2.1.2 Commandes réseau351
2.1.3 Commandes système351
2.2 Les variables352
2.2.1 En langage CMD/batch352
2.2.2 En PowerShell352
2.3 Test d'existence de contenu353
2.3.1 En batch353
2.3.2 En PowerShell353
2.4 Les conditions353
2.4.1 En batch353
2.4.2 En PowerShell354
2.4.3 Les opérateurs355
2.5 Les boucles355
2.5.1 En batch355
2.5.2 En PowerShell356
3. De CMD à PowerShell en exemple356
3.1 Notre script de test356
3.2 Le script en batch357
3.3 Le script en PowerShell357
Chapitre 21
De VBS à PowerShell
1. Introduction359
2. PowerShell vs VBScript359
3. Équivalences entre VBS et PowerShell360
3.1 Équivalence de commandes360
3.1.1 Commandes de gestion des fichiers/dossiers360
3.1.2 Commandes système361
3.2 Les variables361
3.2.1 En VBScript361
3.2.2 En PowerShell362
3.3 Test d'existence de contenu362
3.3.1 En VBScript362
3.3.2 En PowerShell363
3.4 Les conditions363
3.4.1 En VBScript363
3.4.2 En PowerShell364
3.4.3 Les opérateurs365
3.5 Les boucles366
3.5.1 En VBScript366
3.5.2 En PowerShell366
4. De VBScript à PowerShell en exemple366
4.1 Notre script de test366
4.2 Le script en VBScript367
4.3 Le script en PowerShell367
Chapitre 22
Les fonctions
1. Intérêt d'une fonction369
2. Déclaration et appel d'une fonction374
2.1 Déclaration d'une fonction374
2.2 Appel d'une fonction374
3. Fonctions et paramètres375
3.1 Qu'est-ce qu'un paramètre de fonction ?375
3.2 Déclaration d'un paramètre375
3.3 Appel d'une fonction avec paramètres376
3.4 Contrôle des paramètres379
3.4.1 Mandatory : paramètre obligatoire379
3.4.2 ValidateSet : valider un jeu de valeurs précis380
3.4.3 ValidateNotNullOrEmpty : paramètre non nul ou vide383
3.4.4 ValidateLength : longueur du paramètre384
3.4.5 Position de paramètre385
3.4.6 Accepter une valeur dans le pipe386
3.5 Typer nos paramètres387
3.5.1 Que signifie typer un paramètre ?387
3.5.2 Chaîne de caractères387
3.5.3 Entier388
3.5.4 Switch388
3.6 Les paramètres communs390
4. Pour aller plus loin : les modules392
Chapitre 23
Manipuler les chaînes de caractères
1. Les bases395
1.1 Qu'est-ce qu'une chaîne de caractères ?395
1.2 Qu'est-ce que le code ASCII ?396
1.3 Chaîne de caractères en exemple396
1.4 Distinguer une chaîne de caractères avec PowerShell397
2. Méthodes disponibles pour gérer les chaînes398
3. Manipulation des chaînes avec les méthodes400
3.1 Compter le nombre de caractères400
3.2 Passer le contenu en majuscules400
3.3 Passer le contenu en minuscules401
3.4 Remplacer des caractères401
3.5 Supprimer des caractères402
3.5.1 Trim : supprimer les espaces en début et fin de chaîne403
3.5.2 TrimStart : supprimer des caractères en début de chaîne404
3.5.3 TrimEnd : supprimer des caractères en fin de chaîne405
3.6 Split : Séparer une chaîne de caractères406
3.7 Contains : Vérifier si une chaîne contient un caractère408
3.8 Vérifier si une chaîne commence par quelque chose408
3.9 Vérifier si une chaîne se termine par quelque chose409
3.10 Here-String : un bloc de texte en tant que chaîne409
3.11 Convertir une chaîne en chaîne de caractères sécurisée412
Chapitre 24
Quelques astuces
1. Ouvrir rapidement un dossier dans PowerShell415
2. Récupérer le chemin complet d'un élément depuis l'explorateur Windows417
3. Historique des commandes passées dans la console419
3.1 Contexte419
3.2 Rechercher l'historique dans le fichier texte419
3.3 Rechercher dans l'historique avec une cmdlet421
3.4 Rechercher dans l'historique avec un raccourci-clavier423
3.5 Rechercher dans l'historique en utilisant un script424
4. Lister les combinaisons de touches disponibles427
5. Éditer une commande dans la console431
6. Lister les cmdlets comportant un certain mot431
7. Lister les paramètres pour une cmdlet dans un menu432
8. Commenter un bloc de code433
9. Ajouter un menu contextuel Exécuter en tant qu'administrateur435
10. Exécuter automatiquement un script dans Windows Sandbox439
10.1 Qu'est-ce que Windows Sandbox ?439
10.2 Installation de Windows Sandbox439
10.3 Pourquoi exécuter un script dans Windows Sandbox ?440
10.4 Installation de l'outil ?441
10.5 Utilisation de l'outil ?442
Chapitre 25
La gestion des erreurs
1. Comment gérer les erreurs en PowerShell ?443
2. Try/Catch et/ou Finally443
2.1 Try/Catch443
2.1.1 Explications443
2.1.2 Structure444
2.1.3 Explication en exemple444
2.2 Try/Catch/Finally449
2.2.1 Explication449
2.2.2 Structure449
2.2.3 Explication en exemple449
3. ErrorAction et ErrorActionPreference450
3.1 Erreur bloquante ou non bloquante450
3.2 Changer le comportement d'exécution452
3.2.1 Paramètre ErrorAction452
3.2.2 Variable SErrorActionPreference459
4. Récupérer le message d'erreur460
Chapitre 26
La gestion des fichiers et des dossiers
1. Tester l'existence d'un fichier ou d'un dossier463
1.1 Test d'existence d'un dossier463
1.2 Test d'existence d'un fichier464
1.3 Test d'existence inversé464
2. Création de dossiers ou de fichiers464
2.1 Création de dossiers464
2.2 Création de fichiers465
3. Suppression de dossiers ou de fichiers465
Chapitre 27
Mise en forme de la sortie des objets
1. Qu'est-ce que la mise en forme des objets ?467
2. Mise en forme basique468
3. Out-GridView : un tableau interactif et puissant470
4. Format-Table : mise en forme dans un tableau472
4.1 Affichage par défaut472
4.2 Filtrer les colonnes473
4.3 Masquer l'en-tête des colonnes473
4.4 Renommer une colonne474
5. Format-List : affichage sous forme d'une liste475
6. Sort-Object : trier la liste en fonction d'une propriété476
7. Group-Object : grouper les objets par propriété476
Chapitre 28
Manipuler les fichiers
1. Introduction479
2. Encodage de caractères et fichiers479
2.1 Qu'est-ce que l'encodage ?479
2.2 Pourquoi l'encodage ?480
2.3 PowerShell et l'encodage482
3. Manipuler des fichiers texte484
3.1 Gestion des fichiers texte484
3.2 Exporter le contenu d'un objet vers un fichier485
3.3 Lire le contenu d'un fichier486
3.4 Lister le nombre total de lignes d'un fichier487
3.5 Lire un contenu spécifique488
3.6 Récupérer le numéro d'une ligne489
3.7 Afficher une ou des premières lignes spécifiques490
3.7.1 Afficher la première ligne490
3.7.2 Afficher la dernière ligne491
3.8 Ajouter une nouvelle ligne491
3.9 Modifier ou remplacer une ligne492
3.10 Modifier des lignes comportant un mot spécifique493
3.11 Supprimer une ligne comportant un mot spécifique493
4. Manipuler des fichiers XML495
4.1 Qu'est-ce que le XML ?495
4.2 Pourquoi utiliser le format XML ?495
4.3 Structure d'un fichier XML497
4.3.1 Le prologue ou en-tête497
4.3.2 Les balises497
4.3.3 Les éléments ou noeuds498
4.3.4 Les attributs499
4.4 Export de contenu vers un fichier XML500
4.5 Lire le contenu501
4.6 Lister les méthodes503
4.7 Accéder aux différents nouds505
4.8 Lister une application par son nom511
4.9 Ajouter du contenu513
4.10 Modifier du contenu516
4.11 Supprimer du contenu518
5. Manipuler des fichiers CSV518
5.1 CSV et les délimiteurs518
5.1.1 Qu'est-ce qu'un délimiteur ?518
5.1.2 Détecter le délimiteur par défaut sur mon poste519
5.1.3 Détecter le délimiteur utilisé dans un fichier519
5.2 Export du contenu vers un fichier CSV520
5.3 Importer/lire un fichier CSV524
Chapitre 29
La gestion des dates
1. Introduction527
2. Cmdlet Get-Date527
2.1 Vérifier l'aide528
2.2 Lister les propriétés530
2.3 Lister les méthodes535
3. Formatage des dates538
3.1 Formatage simple538
3.2 Formatage personnalisé539
4. Conversion de dates543
4.1 Convertir une chaîne de caractères en date543
4.2 Convertir une date en chaîne de caractères544
4.3 Conversion de dates depuis le registre ou WMI545
4.3.1 Date d'installation de Windows545
4.3.2 Date d'installation d'applications548
5. Comparaison de dates548
5.1 Calcul d'intervalle entre deux dates548
5.2 Comparer deux dates : antérieure ou postérieure551
Chapitre 30
PowerShell et WMI
1. Introduction553
2. WBEM, DMTF, CIM, WMI554
2.1 WBEM554
2.2 DMTF554
2.3 CIM554
2.4 WMI555
3. WMI et PowerShell556
3.1 Exécution d'une requête556
3.2 PowerShell et les commandes WMI557
3.2.1 Fonctionnement des cmdlets WMI557
3.2.2 Lister les espaces de noms disponibles560
3.2.3 Lister les classes disponibles562
3.2.4 Composition d'une classe564
3.2.5 Cas d'utilisation566
3.3 PowerShell et les commandes CIM579
3.3.1 Qu'est-ce que CIM ?579
3.3.2 Fonctionnement des cmdlets579
3.3.3 Lister les espaces de noms disponibles581
3.3.4 Lister les classes disponibles581
Chapitre 31
PowerShell et le registre
1. Introduction585
2. Le registre Windows585
2.1 Qu'est-ce que c'est ?585
2.2 Composition du registre586
2.3 Comment accéder au registre et le modifier ?587
3. PowerShell et la base de registre Windows588
3.1 Accéder à la base de registre588
3.2 Naviguer dans la base de registre591
3.3 Lister les éléments du registre593
3.3.1 Lister les clés593
3.3.2 Récupérer les valeurs disponibles598
3.4 Tester l'existence d'un élément601
3.5 Créer un élément602
3.5.1 Créer une nouvelle clé602
3.5.2 Créer une valeur604
3.6 Modifier un élément de registre606
3.7 Supprimer un élément608
3.7.1 Supprimer une clé608
3.7.2 Supprimer une valeur608
Chapitre 32
PowerShell et Base64
1. Qu'est-ce que Base64 ?609
1.1 C'est quoi ?609
1.2 Avantages610
1.3 Inconvénients611
2. Encoder/décoder en Base64612
2.1 Encodage depuis le site612
2.1.1 Encoder du texte612
2.1.2 Encoder un fichier PNG613
2.1.3 Encoder un exécutable615
2.2 Décodage depuis le site617
2.2.1 Décoder du texte617
2.2.2 Décoder un fichier PNG618
2.2.3 Décoder un exécutable619
3. Encoder et décoder avec PowerShell620
3.1 Encodage en Base64 avec PowerShell620
3.1.1 Encodage de texte620
3.1.2 Encodage d'une image621
3.2 Décodage en Base64 avec PowerShell622
3.2.1 Décodage d'un texte622
3.2.2 Décodage d'un fichier : image, exécutable622
Chapitre 33
Gérer votre système
1. PowerShell et les services Windows623
1.1 Get-Service : récupérer les informations du service625
1.2 Restart-Service : redémarrer un service626
1.3 Stop-Service : arrêter un service627
1.4 Start-Service : démarrer un service628
1.5 Suspend-Service : mettre en pause un service629
2. PowerShell et les processus629
2.1 Get-Process : lister les processus en cours630
2.2 Stop-Process : stopper un processus634
3. PowerShell et le gestionnaire d'évènements636
3.1 Lister les différentes catégories d'évènements636
3.2 Exemples d'utilisation638
4. PowerShell et les tâches planifiées641
5. PowerShell et le presse-papiers645
5.1 Get-Clipboard : récupérer le contenu copié646
5.1.1 Presse-papiers et texte647
5.1.2 Presse-papiers et fichiers647
5.1.3 Presse-papiers et image649
5.2 Set-Clipboard : copier du contenu653
5.2.1 Copie de texte653
5.2.2 Copie de dossiers et de fichiers654
Chapitre 34
Débuter avec RegEx
1. Introduction655
2. Démystifier RegEx, ou tout du moins essayer656
2.1 Qu'est-ce que RegEx ?656
2.2 RegEx et syntaxe656
2.2.1 Les caractères d'échappement657
2.2.2 Les métacaractères658
2.2.3 Les quantificateurs658
2.2.4 Classes et intervalles659
3. Exemples rapides661
4. Les ressources intéressantes662
5. Quelques exemples du quotidien663
5.1 Validation d'une adresse e-mail663
5.2 Saisie de nom d'ordinateur664
5.3 Vérification d'une adresse IP valide (IPv4)665
5.4 Validation d'un numéro de téléphone portable666
5.5 Validation d'un numéro de sécurité sociale666
5.6 Validation d'une plaque d'immatriculation française667
6. PowerShell et RegEx668
6.1 Utiliser RegEx avec PowerShell668
6.1.1 -Match et -NotMatch668
6.1.2 Classe [regex]669
6.2 Nos exemples avec PowerShell671
6.2.1 Opérateur-Match671
6.2.2 Classe [regex]672
6.3 Travailler sur des chaînes de caractères675
6.3.1 Récupérer la valeur d'une chaîne675
6.3.2 Extraire du contenu entre deux mots677
Chapitre 35
PowerShell et Windows Forms
1. Introduction681
2. Forcer l'aspect visuel moderne682
3. Windows Forms683
3.1 De quoi s'agit-il ?683
3.2 Comment utiliser Windows Forms ?683
3.3 Boîte de dialogue simple684
3.4 Boîte de dialogue de sélection689
3.4.1 Sélection de dossier689
3.4.2 Sélection de fichier691
4. Notification toast694
Chapitre 36
Des exemples pour le quotidien
1. Introduction697
2. Génération de fichier de log697
3. Fonction de création de clé de registre698
4. Vérifier la validité d'un lien web700
5. Télécharger un fichier depuis Internet701
6. Faire des captures d'écrans avec PowerShell702
7. Zipper et dézipper703
8. Créer un journal d'évènements et ajouter un évènement703
9. Exporter un journal d'évènements706
10. Générer un GUID707
11. Générer un mot de passe708
12. Chercher une chaîne dans l'observateur d'évènements712
13. Identifier les comptes administrateurs locaux713
14. Obtenir la date de dernier redémarrage714
15. Vérifier qu'un script s'exécute en administrateur717
Chapitre 37
S'amuser avec PowerShell
1. PowerShell en musique719
2. Faire parler PowerShell721
3. Récupérer vos coordonnées géographiques723
4. Afficher l'adresse de localisation du poste725
5. Afficher les coordonnées GPS dans une carte726
Chapitre 38
Bibliographie
1. Les livres pour approfondir ses connaissances729
1.1 Commencer et approfondir729
1.2 Approfondir sur d'autres domaines730
Index733