Automatisation Windows avec PowerShell
Automatisation Windows avec PowerShell
4
Powershell Automatiser l'administration Windows
6
Powershell Automatiser l'administration Windows
Introduction à Powershell
Les administrateurs se sont orientés vers des langages de programmations tel que :
• VBScript
• Perl
• KixStart
• ….
8
Powershell Automatiser l'administration Windows
• Windows Powershell
• est orienté objet
• donne accès aux objets .Net
• offre une cohérence des commandes et des paramètres associés
• offre une aide sur les commandes digne de ce nom
PowerShell est :
Un interpréteur de commande
Et un langage de script
Le Framework .NET est une énorme bibliothèque de classes à partir duquel nous
allons utiliser des objets.
Avec Powershell, on manipule donc des objets sans vraiment sans rendre compte
Toutes les commandes cmdlets ont été écrites en s’appuyant sur les classes d’objet .Net
Ceci donne un accès à l’intégralité des classes du Framework .Net (ce qui offre des
fonctionnalités étendues par rapport à WMI)
• WSH,
• COM,
• WMI
11
Le principe de l'objet
12
Powershell Automatiser l'administration Windows
• Classe
¾ Schéma de conception, c'est ce que l'on appel le type de données
• Instance
¾ Objet construit à partir d'un classe
• Collection
¾ Ensemble d'objet
• Variable
¾ Mise en mémoire d'un objet ou d'une collection
• Membres
¾ Caractéristiques et méthodes applicable à un objet, c'est ce que l'on appel
communément les propriétés et méthodes
13
Il est ensuite possible de visualiser les caractéristiques que l'on appel Propriétés
telles que le format(berline, break), la couleur, etc...
De la même manière, nous pouvons agir sur une voiture et ses capacités »
(Méthodes) telles que la faire avancer, reculer, etc…
• Les membres (propriétés ou méthodes) sont liés à leur parent (l’instance) par
un point “[Link]”et par un double ”::” pour les objets du
framework .NET “[[Link]]::Membre”
14
Powershell Automatiser l'administration Windows
Un objet est une variable complexe qui encapsule des données ou attributs ainsi que
les fonctions membres pour y accéder.
Dans le monde orienté objet, les fonctions s’appellent aussi des méthodes.
Créons un objet :
• $objet = 1
15
Tous les objets Powershell définissent une méthode membre appelée GetType(),
cette fonction ne prend pas de paramètres et retourne le type d’objet de l’objet en
question.
• $[Link]()
• Nous pouvons faire de même avec une variable d’un autre type, par exemple
une chaîne de caractères :
16
Powershell Automatiser l'administration Windows
Nous pouvons utiliser les méthodes de la classe String directement sur l’objet.
Par exemple si nous voulons savoir si $liste contient le caractère «g» on appelle la
méthode ‘Contains’ :
Dans notre exemple nous voulions savoir si le caractère g se trouvait dans la chaîne
$liste, le comment du pourquoi du détail de l’implémentation de la fonction
Contains ne nous intéresse pas.
17
Si on veut récupérer les mots, un par un, de cette chaîne, nous pouvons utiliser la
méthode Split:
• $[Link](" ")
• Powershell retourne un array de n éléments et les affiche un par un.
18
Powershell Automatiser l'administration Windows
$a=$[Link](" ")
$[Link]()
• Count est une variable membre de l’objet Array. Et nous avons bien 4 mots
dans notre string.
19
20
Powershell Automatiser l'administration Windows
Nous pouvons accéder aux propriétés membres en utilisant leurs noms, exemple :
• $[Link]
• $[Link]
21
Imaginons maintenant qu’on veut traiter une liste de contacts et pas un seul.
Pour cela nous allons créer une array vide appelée $contacts :
• $contacts = @()
Nous pouvons ajouter les objets $contact créés à notre array avec l’opérateur += :
• $contacts += $contact
22
Powershell Automatiser l'administration Windows
Avec cette liste de contacts nous pouvons faire plusieurs opérations, par exemple nous
pouvons l’exporter vers un fichier de type CSV :
Select-Object nous permet de sélectionner les propriétés membres ainsi que leur
ordre.
Si nous voulons récupérer notre liste de contacts à partir d’un fichier CSV, nous
pouvons utiliser la cmdlet Import-Csv:
• $contacts = Import-Csv -Path "c:\temp\[Link]"
23
24
Powershell Automatiser l'administration Windows
En Powershell on agit sur les objets à l'aide d'applet de commande que l'on appelle cmdlet
les applets de commandes sont toujours composé de :
Verbe – Nom
Exemple :
• get-process
¾ Ici on récupère (get) les processus en fonctionnement sur la machine (process)
• Le résultat renvoie une “collection d’instances"
Propriétés
Collections
d'instances
Valeurs 25
Dans un premier temps il est important de bien connaitre les commandes suivantes
Get-Command
Get-Help
Get-Member
Get-command
Permet de trouver les commandes
Trouver les commandes dont le verbe est write
• Get-command –verb write
• Renvoi toutes les cmdlet mais aussi le alias et les fonction commençant par
write
27
Get-help
Permet d'obtenir de l’aide sur une cmdlet particulière, on peut utiliser ensuite –
examples, –full, -detailled ou encore –online pour une aide avec différents niveaux.
Depuis la version 3, il faut charger les mise à jour avec update-help
Cette commande force a récupérer les mises à jour des fichiers d’aide en français
• update-help -Force -Module [Link] -UICulture fr-FR
Vous pouvez utilisez update-help pour mettre à jour les aides de vos cmdlettes.
28
Powershell Automatiser l'administration Windows
Get-Member :
Elle permet d'explorer les objets et donc de visualiser les propriétés et méthodes
applicable à l'objet.
Exemple : Get-Service| Get-Member
On retrouve:
• Les méthodes applicables aux objets de type service (close, continue, start…)
• Les propriétés (caractéristiques) de objets de types services (CanShutdown,
CanStop, DisplayName…)
29
Le pipeline
30
Powershell Automatiser l'administration Windows
Le pipeline est utilisé pour connecter la sortie d’une applet de commande à l’entrée
d’une autre applet de commande
La combinaison de la première applet de commande, du canal, et de la deuxième
applet de commande crée un pipeline
obtenir la liste de tous les utilisateurs dans le domaine, puis envoyez la liste dans
un pipeline à l'applet de commande Enable-ADAccount, en exécutant la
commande suivante :
• Get-ADUser –Filter * | Enable-ADAccount
Pour activer les comptes qui sont désactivés, vous pouvez utiliser l'applet de
commande Where-Object pour renvoyer uniquement les comptes qui sont
désactivés. Pour ce faire, exécutez la commande suivante
• Get-ADUser –Filter * | Where-Object {$_.Enabled –eq $false} | Enable-
ADAccount
31
Depuis la V4, une nouveauté très intéressante est la possibilité de mettre des variables
dans le pipeline.
Exemple :
Get-adcomputer –filter * -pv comp | foreach-object{gwmi
win32_logicalDisk –computername $_.name} |
ForEach-Object { Write-host "Analyse de l’ordinateur $[Link]
Write-host " " nom du disque: $($_.deviceid)"}
32
Powershell Automatiser l'administration Windows
33
Pour rappel :
Get-command retourne les cmdlettes
Get-help Cmdlettes obtenir de l’aide sur une cmdlette particulière, utiliser ensuite
–examples ou –full pour une aide avec seulement les exemples ou détaillées
Cmdlet | get-member pour obtenir les propriétés et méthodes sur une cmdlet
La variable $_ est la variable la plus importante, elle récupère l’objet courant passé
dans le pipe
36
Powershell Automatiser l'administration Windows
Par ex la commande dir fonctionne mais en réalité renvoi à un alias nommé Get-
childItem
• Pour vérifier taper get-alias dir
37
38
Powershell Automatiser l'administration Windows
39
40
Powershell Automatiser l'administration Windows
Afficher récursivement tous les fichiers du dossier e:\lotus avec l’extension *.doc et
*.ppt
Get-childitem e:\lotus –recurse –include *.doc, *.ppt
41
Afficher tous les fichiers du dossiers lotus sauf les *.jpg, *.doc
Get-childitem e:\lotus –recurse –exclude *.jpg, *.doc
Attention KB et MB sont
collés avec le chiffre
Gt pour greater than
42
Powershell Automatiser l'administration Windows
Afficher tous les fichiers du dossiers lotus dont la date de dernier enregistrement est
postérieur au 01/06/2008
(attention format de date américain (Mois/jours/année)
Get-childitem | where-object {$_.LastWriteTime -gt ‘06/01/2008’}
Ces 2 cmdlets pourraient être utiliser avec autre chose que get-childitem comme
get-process par exemple
44
Powershell Automatiser l'administration Windows
45
46
Powershell Automatiser l'administration Windows
• Itemtype ou type -> type d’élément à créer : file pour fichier, directory pour
dossier
• Value contenu de l’élément (ex: « hello the world » dans le cas d’un fichier
texte
47
48
Powershell Automatiser l'administration Windows
Création d’un fichier sous e:\scripts nommé [Link] dans lequel on ajoute une
phrase « Powershell est un outil puissant ».
New-item –type file –name [Link] –value « Powershell est un outil puissant »
49
Ex : supprimer tout les fichiers avec l’extension *.txt contenu dans tout les dossiers et sous
dossier de c:\temp
y Get-childitem c:\temp –recurse –include *.txt | remove-item
Nous utilisons ici Get-childitem pour lister les fichier *.txt (ceux à supprimer), ensuite
pour chaque fichier txt trouvé, nous utilisons remove-item.
On aurait pu ajouter l’option –force pour effacer les fichiers cachés
50
Powershell Automatiser l'administration Windows
Ex: Déplacer un dossier ver un autre dossier, indiquer simplement les noms de
dossier
• Move-item –path c:\temp\temp1 –destination c:\temp\temp2
51
52
Powershell Automatiser l'administration Windows
53
54
Powershell Automatiser l'administration Windows
55
Dans Powershell, 2 méthodes peuvent être utilisées pour les chaînes de caractères:
Les doubles guillemets remplace une variable par son contenu (nommé
substitution de variable).
56
Powershell Automatiser l'administration Windows
57
58
Powershell Automatiser l'administration Windows
Lorsque vous souhaitez afficher la propriété d'un objet, il faut utiliser la syntaxe :
$([Link]été).
59
Variables et constantes
60
Powershell Automatiser l'administration Windows
Powershell ne dispose pas d'un langage typé, vous n'avez pas besoin de définir
et de typer vos variable (integer, string …)
La syntaxe sera toujours :
• $Mavariable = valeur quelconque
Powershell reconnaitra automatiquement les types de variables (string,
entier …)
Dir variable: (permet d'afficher toutes les variables)
Del variable:test (effacer la variable test)
61
Type reconnu :
• Int32 (entier sur 32 bits soit 4 Milliards de -2 à +2 milliards )
• Double
• String (chaine de caractère)
62
Powershell Automatiser l'administration Windows
Il est parfois utile pour des traitements importants ou pour ne pas avoir
d'erreur de calcul et pour une facilité de lecture des scripts de vouloir typer
une variable.
Utiliser pour ceci avant votre variable :
• [int]$var
• [char]$var
• [double]$var
Ex: vous souhaitez que l'utilisateur saisisse un chiffre sur la console, cela se
fait avec read-host, si vous saisissez dans votre code $nbre, l'utilisateur
peut saisir dix ou 10, le code script acceptera les 2.
Si vous entrez dans votre code [int]$nbre, l'utilisateur ne peut plus que
saisir du chiffre
Ex avec et sans le [int]
En ajoutant [int],
l'utilisateur ne peut
saisir que du chiffre
63
Vous avez la possibilité d'utiliser également le typage pour convertir des chiffres ou
inversement du code Ascii:
Ex : [char]$x = 65
• $x affichera la lettre A majuscule
64
Powershell Automatiser l'administration Windows
65
Conversion en binaire
Conversion en hexadécimal
66
Powershell Automatiser l'administration Windows
67
68
Powershell Automatiser l'administration Windows
69
Ex sur Powershell: 1 .. 5
70
Powershell Automatiser l'administration Windows
71
Ex: $x = 12
• $x –is [int] retourne true si x est un entier ou false dans le cas contraire
72
Powershell Automatiser l'administration Windows
-and Æ Et logique
-or Æ Ou logique
-not ou ! Æ non logique
-xor Æou exclusif
73
74
Powershell Automatiser l'administration Windows
76
Powershell Automatiser l'administration Windows
77
Propriétés:
• (get-date).hour -> retourne l'heure
• (get-date).minute -> retourne les mns
• (get-date).second -> retourne les
secondes
• (get-date).month -> retourne le mois
en cours
• (get-date).day -> retourne le jour (1 à
31)
• (get-date).DayOfWeek -> retourne le
jour de la semaine (dimanche à
Samedi)
• (get-date).DayOfYear -> retourne le
jour de l'année (1 à 365).
78
Powershell Automatiser l'administration Windows
Le calcul ici ajoute une seconde à la date actuelle avec addseconds puis soustrait avec
la date actuelle. On calcul enfin le nbre de ticks pour 1 seconde
79
Méthode Description
AddDays Ajouter ou retirer une unité de temps. Pour retirer utiliser
AddHours le "-"
AddMonths Ex: (Get-date).addMonths(-2) -> retire 2 mois par rapport
AddYears à la date du jour
AddSeconds
AddMilliseconds
AddMinutes
AddTicks
80
Powershell Automatiser l'administration Windows
Méthode Description
Get_date Retourne une variable contenant l'unité de temps.
Get_day
Get_dayOfWeek Ex : $jour = (get-date).get_day() retourne le jour
Get_dayOfYear
Get_hour
Get_millisecond
Get_month
Get_ticks
Get_timeOfDay
…
Retourne une valeur booléenne qui indique si l'heure
isDayLightSavingTime actuelle est ajustée à l'heure d'été
Subtract Soustrait un date
ToLongDateString Retourne la date format long type chaine ex: Mercredi 11
démbre 2008
ToLongTimeString Retourne l'heure format long type chaine ex: 13:58:15
81
Méthode Description
ToOAdate Retourne le nombre de jour depuis le 30 décembre 1899 à
minuit
toShortDateString Retourne une chaine contenant le format court
(12/10/2008)
ToShortTimeString Retourne une chaine contenant le format court (14:04)
ToString Retourne une chaine contenant la date et l'heure au format
standard (20/12/2008 14:04:23)
82
Powershell Automatiser l'administration Windows
Ex de format de date
84
Powershell Automatiser l'administration Windows
En plus des formats standard, vous pouvez personnaliser les formats de date:
85
86
Powershell Automatiser l'administration Windows
La méthode la plus simple pour créer une date est d'utiliser Get-date
Get-date sans rien retourne la date système.
Si vous omettez un paramètre, c'est celui du système qui est pris, ici les heures
minutes et seconde ont été pris de l'heure système
87
88
Powershell Automatiser l'administration Windows
90
Powershell Automatiser l'administration Windows
91
Les opérateurs if
92
Powershell Automatiser l'administration Windows
Permet de tester une condition et réaliser une action par rapport à cette condition.
• if (<test1>)
• {<bloc_code1>}
• [elseif (<test2>)
• {<bloc_code2>}]
• [else
• <bloc_code3>}]
Ex: entrez un chiffre entre 1 et 10, si le chiffre est supérieur à 5, entrez "supérieur"
sinon "inférieur"
93
94
Powershell Automatiser l'administration Windows
95
L'instruction for crée une boucle exécutant les commandes d'un bloc de commandes
tant qu'une condition spécifiée prend la valeur true (vrai).
96
Powershell Automatiser l'administration Windows
For(i=0;i<=10;i=i+1)
97
Dans une boucle foreach, il est fréquent d'exécuter une ou plusieurs commandes sur
chaque élément d'un tableau.
Instruction :
• foreach ($<élément> in $<collection>)
• {<bloc_commandes>}
98
Powershell Automatiser l'administration Windows
99
Pour chaque élément trouvé avec $fichier, on affiche la valeur trouvé à l'écran.
100
Powershell Automatiser l'administration Windows
101
L’exemple suivant retourne les adresses mac de type Ethernet de la machine locale
Attention toutefois, le bloc begin et end ne sont pas transmis au pipeline suivant. Si
par ex nous ajoutions | out-file c:\temp\[Link] ne stockerai pas le bloc début
"Adresse mac" ni le bloc de fin "fin"
102
Powershell Automatiser l'administration Windows
Les fonctions
103
104
Powershell Automatiser l'administration Windows
105
106
Powershell Automatiser l'administration Windows
Lorsque des arguments sont placés dans une fonction, ils sont stockés dans un tableau
nommé $args
…
107
Cet ex permet de saisir 2 chiffres, de les passer à la fonction calcul puis d'effectuer la
somme et la multiplication
-foregroundColor couleur
permet de modifier la couleur
de texte avec Write- host
L'utilisateur saisit d'abord les 2 chiffres. Les arguments sont ensuite passé (calcul $val1
$val2).
$args[0] contient $val1
$args[1] contient $val2
108
Powershell Automatiser l'administration Windows
Une façon de transmettre les variables à une fonction ou un script est d'utiliser des
paramètres.
La syntaxe d'appel d'une fonction avec paramètre est :
NomFonction –paramètre "valeurduparamètre"
110
Powershell Automatiser l'administration Windows
111
Il n'y'a pas besoin d'instancier les objets avec FileSystem ni de spécifier le mode
d'accès (lecture, écriture).
112
Powershell Automatiser l'administration Windows
Set-content
Out-file.
Lorsque out-file est utilisé, elle tente comme toutes les commandes out-* de formater
le flux avant de l'écrire dans le fichier.
Set-content ne cherche par à formater le flux mais applique la méthode ToString pour
écrire des caractères.
113
114
Powershell Automatiser l'administration Windows
Pour obtenir les 2 mêmes résultats, il faut "transtyper" l'objet avant de l'écrire avec set-
content.
Out-string permet de convertir les objets sous forme de chaine et stocké dans un
tableau de chaine.
-stream permet avec out-string d'envoyer au pipe suivant la chaine reçu plutôt que
d'envoyer tout dans un tableau de chaine unique.
On préférera utiliser out-file pour des fichiers type texte et set-content pour des fichiers
binaires.
115
Out-file permet de créer des fichiers, d'associer dans ce fichier créé un contenu.
Paramètre Description
Filepath Fichier de destination
Encoding Type d'encodage (par défaut unicode)
Append Ajoute du contenu à un fichier existant
Width Nombre de caractère par ligne
InputObject Objet à écrire dans le fichier
noClobber Indique de ne pas remplacer le fichier existant
116
Powershell Automatiser l'administration Windows
Nom Description
Ascii Encodage ascii (jeu de caractères de 0 à 127,
7bits)
UTF7 Encodage unicode UTF7 (Unicode Transformation
Format
UTF8 Encode unicode UTF8
Unicode Encode unicode UTF16 LittleEndian
BigEndianUnicode Encode unicode UTF16 BigEndian
Ajout de date dans le fichier avec –append, une fois en ascii, une fois en utf32 (par
défaut)
118
Powershell Automatiser l'administration Windows
Set-content écrit les données telle qu'elle les reçoit sans les reformater.
Cette commande écrit donc des octets dans un fichier quelque soit le type de fichiers
(texte ou binaire).
119
Création d’un fichier nommé [Link] dans le dossier courant avec set-content.
On entre la ligne »Bienvenue….fichier »
Ajout ensuite avec Add-content d’une autre ligne
120
Powershell Automatiser l'administration Windows
Paramètre Description
Path Fichier de destination recevant les données
Value Données à écrire
Include Modifie uniquement les élément spécifiés
Exclude Omet les éléments spécifiés
Filter Spécifie un filtre dans le format ou le langage du
fournisseur
PAssThru Passe l'objet créé à travers le pipeline
Force Force la commande à réussir
Credential Utiliser des informations d'identification pour valider l'accès
au fichier
Encoding Type d'encodage.
121
122
Powershell Automatiser l'administration Windows
Paramètre Description
Pattern Chaine ou Expression régulière à rechercher
Path Cible de la recherche : chaine ou fichier
Include Récupère uniquement les éléments spécifiés
Exclude Omet les éléments spécifiés
CaseSensitive Respecte la casse
List Specifie qu'une seule correspondance doit être retourné
par fichier
Quiet Retourne une valeur booléenne vrai si la chaine est trouvé
123
Exemple : recherche dans le dossier Temp tout les fichiers *.txt contenant le mot clé
"formation"
Cet exemple permet de rechercher également dans les sous-dossiers le mot clé
formation. Ajouter le | fl pour avoir un format sous fore de liste.
124
Powershell Automatiser l'administration Windows
Cet exemple recherche tous les processus commençant par mst* puis arrête ces
processus avec la commandelette stop-process
125
126
Powershell Automatiser l'administration Windows
Les fichiers CSV (Comma Separated Values) sont des fichiers texte séparés par des
virgules.
La première ligne représente souvent l'en-tête (nom des colonnes), les lignes suivantes
représentent les données.
Exemple :
Nom, prénom, fonction
Marot, Gaël, Consultant SI
Jegu, Pierrick, Consultant SCM
127
Paramètre Description
Path Chemin du fichier de destination
InputObject Accepte un objet comme entrée
Force Remplace le fichier si celui existe déjà
Encoding Type d'encodage (voir Out-file). Par défaut Ascii
NoTypeInformatio Ne prend pas en compte l'en-tête
n
NoGlobber Ne pas écraser le fichier si il existe
Paramètre Description
Path Chemin du fichier source
128
Powershell Automatiser l'administration Windows
Cet exemple liste le journal des événements applications, et enregistre les 100 premiers
événement dans un fichier [Link]
129
130
Powershell Automatiser l'administration Windows
131
Paramètres Description
Property Propriété de l'objet passé en paramètre à écrire dans la page
HTML
InputObject Accepte un objet comme entrée
Body Spécifie le texte à inclure dans la balise <Body>
Head Spécifie le texte à inclure dans la balise <head>
Title Spécifie le texte à inclure dans la balise <title>
132
Powershell Automatiser l'administration Windows
L'exemple suivant liste les services de votre OS puis les enregistre au format HTML dans
un fichier nommé [Link]
133
134
Powershell Automatiser l'administration Windows
Cet exemple permet d'afficher une couleur en fonction de l'état des services.
$_ représente l'objet testé
135
136
Powershell Automatiser l'administration Windows
137
• interroger une liste de serveurs distants avec get-wmiobject sachant que notre
propre compte n'ait pas accès à ces serveurs, on utilise alors la commande get-
credential pour saisir un nouveau couple username/password, et à passer le
résultat à get-wmiobject via son paramètre –credential :
138
Powershell Automatiser l'administration Windows
139
140
Powershell Automatiser l'administration Windows
141
Cette commande doit être utiliser pour chiffrer le mot de passe avant de s'authentifier
ConvertTo-SecureString convertit une chaine de texte standard en une chaine
sécurisée
La première étape consiste à chiffrer le mot de passe, la seconde permet
l'authentification en passant le login et le mot de passe , nous faisons appel pour
cela à un objet nommé [Link]
142
Powershell Automatiser l'administration Windows
143
Cette commande :
Démarre le service WinRM et le définit en automatique,
Crée un écouteur WinRM pour accepter les demandes sur toute adresse IP,
Active une exception dans le parefeu…
144
Powershell Automatiser l'administration Windows
Il est possible d'ouvrir une session interactive à distance avec la commande Enter-
Pssession :
[Win8-01]: PS C:\Users\Administrateur\Documents>
Vous devez spécifiez le nom de l'hôte tel qu'il apparait dans Active Directory ou
dans la liste d'hôte de confiance (par défaut les IP ou les Alias DNS ne fonctionnent
pas).
145
Par défaut vous ne pouvez pas exécuter de commande qui initie une autre session
distante à partir d'une session distante (second hop).
Vous ne pouvez exécuter de commande qui possèdent leur propre shell tel que
nslookup ou netsh.
La connexion est considérée comme "network logon" au même titre qu'un accès à
un partage.
Rien de ce que vous effectuez n'est visible par un utilisateur en session interactive.
146
Powershell Automatiser l'administration Windows
147
149
150
Powershell Automatiser l'administration Windows
Le principe du module
151
Après avoir importé un module, vous pouvez l'utiliser dans votre session.
Exemple :
import-module activeDirectory pour utiliser des cmdellettes dans l'ad
Depuis Windows 2012 (V3) il n'est plus forcément utile d'importer le module avant
d'exécuter la commande
152
Powershell Automatiser l'administration Windows
Pour lister les modules présent dans votre environnement tapez la commande
Get-module
Pour lister les modules pouvant êtres traités dans votre environnement tapez la
comdlte suivante
Get-Module -List
153
154
Powershell Automatiser l'administration Windows
Seul le format Zip est actuellement géré. Un paramètre nommé “update” permet
de mettre à jour une archive existante en ajoutant seulement les nouveaux fichiers
et les changements sur les fichiers déjà présents dans l'archive.
155
156
Powershell Automatiser l'administration Windows
157
Invoke-WebRequest
Cette cmdlets très puissante permet d’extraire des informations issues de page
web.
Le premier exemple très simple permet de récupérer en format text le contenu
d’un site inter
158
Powershell Automatiser l'administration Windows
Le second exemple permet d’utiliser des filtres et d’afficher les derniers numéro du
loto
#"^\d+$" expression régulière le ^ indique le début d'une chaine \d+$ indique que
nous recherchons des chiffres positif
$Site = Invoke-WebRequest -URI "[Link]
tirage/loto/resultats"
#tagname retourne les tagues web comme H1, LINK, P, TABLE, TD, TR, BR, LI ...donc
ici nous recherchons des tagues en <p>
$numLoto = $[Link] | Where-Object {$_.tagName -eq "p"} | Where-Object {
$_.InnerText -match "^\d+$" } | Select-Object -property InnerText -first 6
$numLoto
159
#"^\d+$" expression régulière le ^ indique le début d'une chaine \d+$ indique que nous recherchons
des chiffres positif
$Site = Invoke-WebRequest -URI "[Link]
#tagname retourne les tagues web comme H1, LINK, P, TABLE, TD, TR, BR, LI ...donc ici nous
recherchons des tagues en <p>
$numLoto = $[Link] | Where-Object {$_.tagName -eq "p"} | Where-Object { $_.InnerText -
match "^\d+$" } |
Select-Object -property InnerText -first 6
$dateloto =$[Link] | Where-Object {$_.tagName -eq "H3"} | Select-Object -property
innertext -first 1
$[Link]
write-host "date du dernier loto: " -nonewline
write-host $[Link] -ForegroundColor Yellow
Write-host "les numéros gagnants: " -NoNewline
write-host $[Link] -f Green
160
Powershell Automatiser l'administration Windows
L’exemple suivant recherche les adresses IP connectés à votre station et lancer une
recherche pour géolocaliser chaque adresse ip
161
L’exemple suivant va chercher une image sur le web et remplace le fond d’ écran avec
cette nouvelle image
$photo=(Invoke-WebRequest -Uri
'[Link] | %{$_.images}).src
#copie de l'image vers c:\temp
Start-BitsTransfer -Source [Link] -
Destination C:\temp
162
Powershell Automatiser l'administration Windows
163
164
Powershell Automatiser l'administration Windows
165
Ajouter Drivers
Add-PrinterDriver -Name "HP Universal Printing PCL 6"
Get-PrinterDriver
166
Powershell Automatiser l'administration Windows
167
168
Powershell Automatiser l'administration Windows
169
170
Powershell Automatiser l'administration Windows
Exporter un certificat :
Export-Certificate -Cert
Cert:\LocalMachine\My\92990111298BC73FBADAF2212BE0424AE20E93DB
-FilePath C:\Users\LoicThomas\Desktop\[Link]
171
172
Powershell Automatiser l'administration Windows
Lorsqu'un travail planifié est créé, il est enregistré sur le disque, puis inscrit dans le
Planificateur de tâches.
La seule différence entre les tâches planifiés et les job en arrière-plan est que les
travaux planifiés enregistrent leurs résultats sur le disque.
173
Avec cette applet de commande, vous pouvez utiliser l'applet de commande Add-
JobTrigger pour ajouter le déclencheur à un travail planifié déjà inscrit, ou utilisez-la
pour attribuer un déclencheur lorsqu'un nouveau travail planifié est inscrit.
L'exemple suivant montre comment créer un déclencheur qui s'exécute tous les lundis
et vendredis à 9 h 00 du matin, puis inscrit le nouveau travail planifié avec le
déclencheur
$Trigger = New-JobTrigger –Weekly –DaysOfWeek Monday,Friday –At 9:00AM
Register-ScheduledJob –Name ScheduledLastLogonJob –FilePath `
c:\script\LastLogon.ps1 -Trigger $Trigger
174
Powershell Automatiser l'administration Windows
Les travaux planifiés peuvent être utilisés pour exécuter automatiquement la tâche de création des
rapports, de vérification des paramètres de configuration, de réalisation de la maintenance des
utilisateurs et des groupes, et à de nombreuses autres fins
175
176
Powershell Automatiser l'administration Windows
177
178
Powershell Automatiser l'administration Windows
Plusieurs cmdlettes permettent de tester les connexions distantes soit par les
protocoles icmp ou tcp
Test-connection permet d’effectuer un test de ping sur une ou plusieurs stations
Test-Connection [Link] -Count 1 `
-BufferSize 200
Ce premier test envoi un seul ping (count) à l’adresse ip [Link] avec une taille de
200 octets
179
180
Powershell Automatiser l'administration Windows
Get-netTcpconnexion permet d’obtenir toutes les connexions tcp sur votre poste
Get-NetTCPConnection
182
Powershell Automatiser l'administration Windows
Le script suivant permet de géolocaliser les adresses internet présent sur votre poste.
Pour cela, avant de l’exécuter, connectez vous à internet et exécuter le script suivant
#la première partie récupère les connexions avec internet, sans prendre
[Link]
#on supprime ensuite les doublons avec sort-object
#on utilise la cmdlette invoke-restMethod pour se connecter en json et
rechercher l'adresse ip (contenu dans remoteaddress)
#on affiche ensuite le résultat dans un out-gridwiew
Get-NetTCPConnection -State Established -AppliedSetting Internet | where
remoteAddress -NotLike "[Link]" |
Sort-Object -Property RemoteAddress -Unique | %{
Invoke-RestMethod -uri "[Link] | Out-
GridView -Title "géolocalisation"
183
184
Powershell Automatiser l'administration Windows
185
La configuration et la mise à jour des adresses ip DNS sur la carte réseau se fait avec la
cmdlette Set-DnsClientServerAddress
Set-DnsClientServerAddress -InterfaceAlias ethernet `
-ServerAddresses ("[Link]", "[Link]")
La cmdlette set-dnsclient permet de reconfigurer les paramètres tel que les suffixes dns
set-dnsclient -InterfaceIndex 11 `
-ConnectionSpecificSuffix "[Link]"
186
Powershell Automatiser l'administration Windows
La cmdlette get-dnsclientcache vous donne les résolutions DNS dans le cache DNS du
poste
Clear-DnsClientCache permet de purger le cache DNS, toutes ces cmdlettes peuvent
pour rappel être exécutées sur un ordinateur distant
La cmdlettes suivantes videraient les caches DNS de toute les stations de l’uo
get-adcomputer -filter * -searchbase "ou=srv,dc=gtek-formation,dc=fr"
| %{Clear-DnsClientCache -CimSession $_.name}
187
188
Powershell Automatiser l'administration Windows
Get-netFirewallProfile -all
Affiche l'activation du pare-feu et des profiles
Get-netFirewallProfile | ft name, enabled
Affiche l'activation du pare-feu et des profiles en n'affichant que le nom et l'état
Le test suivant effectue un contrôle sur tous les serveurs du domaine de type 2012.
189
La cmdelette Set-netFirewallProfile
permet d'activer ou désactiver
votre pare-feu
Activation, désactivation du
pare-feu sur 2 serveurs
Set-NetFirewallProfile -all -
Enabled False -CimSession
srv2K12-R2,
srv2K12R2CD1
Get-NetFirewallProfile -
CimSession srv2K12-R2,
srv2K12R2CD1 | ft name ,
enabled -AutoSize
190
Powershell Automatiser l'administration Windows
Cette cmdlet permet d'afficher tout les rôles définit dans votre pare-feu (rôle pouvant
être considéré comme une règle de pare-feu)
Pour faire ce test, créer une règle entrant autorisant le ping sur le protocole ICMP type
8 code 0
192
Powershell Automatiser l'administration Windows
Get-netFirewallPortFilter
permet de voir l'onglet port de
cette règle
193
194
Powershell Automatiser l'administration Windows
195
La commande suivante permet de vérifier sur quel interface réseaux s'applique la règle
Get-NetFirewallRule -DisplayName "PingDomaineGtek" | Get-
NetFirewallInterfaceTypeFilter
196
Powershell Automatiser l'administration Windows
Get-NetFirewallRule -DisplayName
"PingDomaineGtek" | Get-
NetFirewallSecurityFilter
Permet de voir la sécurité de votre
règle
197
Windows defender
198
Powershell Automatiser l'administration Windows
199
Get-mpthreat permet de voir les derniers virus, spyware, trojan…détecté par windows
defender
Get-MpThreat
200
Powershell Automatiser l'administration Windows
201
202
Powershell Automatiser l'administration Windows
203
L'exemple suivant liste le journal système contenant le mot clé DHCP dans le
message
204
Powershell Automatiser l'administration Windows
205
Get-ComputerRestorePoint
206
Powershell Automatiser l'administration Windows
207
Microsoft permet aujourd'hui comme dans le monde Open Source d'installer des
logiciels à partir de dépôts.
Ils permettent d'installer des paquets en évitant les manipulations peu reluisante
comme le téléchargement, et les nombreux suivants, suivants, suivants…
208
Powershell Automatiser l'administration Windows
209
210
Powershell Automatiser l'administration Windows
Une des premières étapes intéressante est de lister le sources de paquets disponible
dans votre environnement:
Get-PackageProvider
• Permet de lister les dépôts de votre environnement
Find-PackageProvider
• Lister les providers de paquets disponible
211
212
Powershell Automatiser l'administration Windows
Installer un paquets
Ici on désire installer le paquet des service de communications d'Office365
• Install-Package -Name O365ServiceCommunications -Source PsGallery
213
214
Powershell Automatiser l'administration Windows
Installer le provider :
Install-PackageProvider -Name chocolatey
215
Application installé
216
Powershell Automatiser l'administration Windows
217
Le modèle de données
218
Powershell Automatiser l'administration Windows
Les API WMI sont basées sur la technologie COM, sous dotnet on y accède via les
classes de l’espace de nom [Link]
Pour récupérer l'instance d’une classe donnée (par ex les cartes réseaux, on doit
préciser sa clé. WMI étant un référentiel, c.-à-d. une base de données, chaque instance
possède un identifiant qui peut être une combinaison de clés (précisées lors de la
conception de la classe WMI ici win32_networkadapter)
219
Le référentiel CIM
220
Powershell Automatiser l'administration Windows
.
Windows Management Instrumentation (WMI) offre beaucoup de possibilités pour
des scripts qui gèrent le matériel et les logiciels
WMI est une énorme base de données répondant aux besoins d'uniformisation de la
gestion des accès aux ressources de l'O.S
WMI est présent depuis NT4 SP4 en tant que composant additionnel et est
aujourd'hui complètement intégré à tous les systèmes d'exploitation
Le but de cette organisation est d'établir des standards quelques soient l'os
(windows, ibm, …)
221
222
Powershell Automatiser l'administration Windows
Le modèle CIM:
CIM est un modèle orienté objet décrivant l'environnement système et réseau
d'une entreprise (matériel, logiciel et services).
CIM ne stocke pas les informations mais offre un chemin d'accès uniformisé à
l'information recherchée
Comme tout schéma (par ex l'ad), CIM est hiérarchisé en classes permettant de
regrouper les ressources WMI par famille
Le plus utilisé est root/cimV2 qui regroupe les classes les plus utilisé
223
WMI permet de faire de l'audit en tant réel grâce aux événements WMI
Toutes ces informations sont classées sur la base du modèle CIM permettant l'échange
d'information quelque soit la plateforme utilisé
224
Powershell Automatiser l'administration Windows
WMI est très vaste, vous pouvez donc pratiquement retrouver toutes les informations
nécessaires à une bonne gestion de parc comme par ex:
Les @mac, IP de vos machines (classe win32_networkadapterConfiguration)
Les applications installées aux postes clients (classe win32_product)
L'espace dispo sur les disques (win32_logicalDisk)
La version du bios, (win32_bios)
de votre OS, (win32_operatingSystem)
La marque et le modèle du PC (win32_computersystem)
Les partages (win32_share)
L’état des batteries de portable (win32_battery)
225
226
Powershell Automatiser l'administration Windows
228
Powershell Automatiser l'administration Windows
Pour rechercher les données affichées par une classe wmi, prenez le nom de la classe |
fl *:
231
232
Powershell Automatiser l'administration Windows
233
234
Powershell Automatiser l'administration Windows
And Timeout définit le temps à partir duquel on considère que la machine ne répond
pas, accélère les temps de réponse (TimeOut en ms, par défaut 4000 ms soit 4 s ce qui
est souvent trop long pour l’analyse de centaine de machine
if((gwmi win32_pingStatus -filter("Address='" + $pc + "' and Timeout=300"
)).statuscode -eq 0)
235
Outils de monitoring
Le script suivant récupère à partir d’un fichier une liste de serveur et retourne des
informations sur ces serveurs (adresse ip, mac, partage, os…)
236
Powershell Automatiser l'administration Windows
237
238
Powershell Automatiser l'administration Windows
Utilisation du .NET
239
240
Powershell Automatiser l'administration Windows
241
Pour charger une assemblie, il n’existe pas de commandelettes mais nous utilisons une
classe .NET :
[[Link]]::LoadWithPartialName(nomAssembly)
Exemple:
242
Powershell Automatiser l'administration Windows
243
L'option get-member –static permet d'obtenir les classes statique associé avec la
classe math (cos, pow, sqrt..)
244
Powershell Automatiser l'administration Windows
hasShutDownStarted indique si la
machine est en train de s’arrêter.
245
246
Powershell Automatiser l'administration Windows
Nous pouvons par exemple de cette classe utiliser les méthode To…
Exemple
$r=[[Link]]::ToInt32($r) convertit la valeur en entier long
[Link]
247
Envoi de mail
248
Powershell Automatiser l'administration Windows
Réveil ordinateur
Le WakeOnLan permet d’allumer un poste éteint via l’envoi sur le réseau d’une
suite d’octet (nommé paquet magique)
Suite de 102 octets -> 6 FF puis 16 * @mac
249
Utilisation du DNS
On peut interroger les serveurs comme le dns par ex
L’exemple suivant retourne le nom de la station via dns
L’exemple suivant
retourne les adresses ip
de l’ordinateur courant
250
Powershell Automatiser l'administration Windows
251
La classe [Link]
Cette classe est intéressante retourne des informations sur l’utilisateur courant
252
Powershell Automatiser l'administration Windows
253
Nous chargeons
l’assembleur pour les
formulaires
Titre du formulaire
255
256
Powershell Automatiser l'administration Windows
258
Powershell Automatiser l'administration Windows
Nous saisissons ici les différents champs nécessaires pour enregistrer notre user.
TextBox est un champ de type Texte
259
260
Powershell Automatiser l'administration Windows
261
L’exemple suivant permet toujours d’enregistrer des utilisateurs mais cette fois nous
donnons en plus le choix de l’unité d'organisation
262
Powershell Automatiser l'administration Windows
263
264
Powershell Automatiser l'administration Windows
265
266
Powershell Automatiser l'administration Windows
267
Nous pouvons par exemple aller chercher une info dans un fichier Excel, puis recopier
cette info dans un fichier Word, finir par une présentation Powerpoint, puis une
présentation sur IE…
268
Powershell Automatiser l'administration Windows
Cet exemple retourne sur les haut-parleurs le message "hello Mr Marot", nous
sommes aujourd'hui le puis la date du jour
Enfin nous listons tous les utilisateurs de la sam local qui nous sont retournés avec
le H-P
269
Ce premier exemple permet de créer un fichier Excel et d’enregistrer une valeur dans la
cellule A1.
270
Powershell Automatiser l'administration Windows
Cet exemple ouvre un fichier existant et écrit sur la feuille n°2 en A1 « ceci est
le titre »
271
L’exemple suivant récupère la taille des fichiers et les noms et les stocke dans
un fichier Excel, si la taille dépasse les 10000 octets, on écrit en rouge.
Dimension de la
colonne
272
Powershell Automatiser l'administration Windows
L’exemple suivant permet de lancer Internet Explorer, de définir une taille puis de
lancer [Link]
273
274
Powershell Automatiser l'administration Windows
275
276
Powershell Automatiser l'administration Windows
Nous pouvons rechercher dans notre fichier toutes les personnes de plus de 40 ans
L'exemple suivant récupère les données et les envois dans un fichier txt
277
278
Powershell Automatiser l'administration Windows
279
280
Powershell Automatiser l'administration Windows
Depuis 2008 R2 il est possible d'ajouter un module Active Directory pour travailler sur
les objets de l'Active Directory
281
Get-AddomainController
Affiche des informations sur les contrôleurs de domaine
Cette option permet de rechercher les CD qui sont aussi Catalogue global
282
Powershell Automatiser l'administration Windows
Get-Addomain
Obtient des informations sur un domaine comme le nom, les maitre FSMO…
283
Get-AdForest
Obtient des informations d'une foret
• Get-Adforest obtient des informations de l'utilisateur courant
Cet exemple permet d'avoir des informations sur la forêt nommé [Link]
284
Powershell Automatiser l'administration Windows
Get-Adcomputer
Permet de lister les ordinateurs de votre AD
Get-adcomputer –filter * (affiche les ordinateurs du domaine, filter filtre sur le
nom)
285
286
Powershell Automatiser l'administration Windows
Get-ADAccountAuthorizationGroup
Affiche les groupes appartenant à un utilisateur spécifié
L'exemple suivant affiche tous les groupe de la personne nommé administrateur
Get-ADAccountAuthorizationGroup administrateur
287
288
Powershell Automatiser l'administration Windows
Get-AdGroup
Permet d'obtenir des informations sur les groupes de l'ad
Get-Adgroup -filter * affiche tous les groupes de l'ad
289
Cet exemple recherche tous les groupe globaux de l'uo production (tiens comptes
aussi des sous uo
290
Powershell Automatiser l'administration Windows
Get-AdgroupMember
Affiche des informations sur les membres d'un groupe
Get-adGroupMember –identity administrateurs
• Retourne les membres du groupe administrateurs
291
Get-ADObject
Obtient des informations d'un objet de l'ad
Get-adobject –filter * affiche tous les objets de votre AD
Get-adobject –filter {objectClass –eq "group"} pour afficher les objets de type
group
292
Powershell Automatiser l'administration Windows
293
Cet exemple que nous aurions pu utiliser avec les autres commandes get permet
d'afficher les propriétés et méthodes que l'on peut utiliser
Get-adObject –filter {ObjectClass –eq "user"} –properties * | get-member
294
Powershell Automatiser l'administration Windows
295
Cet exemple filtre les objets groupes effacés, ne pas oublier d'ajouter –
IncludeDeletedObjects qui permet d'afficher les objets effacés de l'AD.
296
Powershell Automatiser l'administration Windows
Get-AddefaultDomainPasswordpolicy
Permet de voir les stratégies de mot de passe
Get-AddefaultDomainPasswordPolicy
297
Fichier CSV
d'importation
des utilisateurs
298
Powershell Automatiser l'administration Windows
L'exemple suivant permet de créer un dossier puis de créer les groupes associés à ce
dossier. Cas fréquemment utilisé en entreprise.
Ex: création d'un dossier nommé compta implique la création de 4 groupes globaux
+ 4 groupes Locaux formaté de la manière suivante:
• GG_compta_L
• GG_compta_LE
• -GG_compta_M
• -GG_compta_CT
• -DL_compta_L
• -DL_compta_LE
• -DL_compta_M
• -DL_compta_CT
On applique ensuite la règle préconisée par Microsoft, AGDLP. Cad on place les
groupes globaux dans des Groupes locaux.
On affecte enfin les permission NTFS avec les groupe du domaine local
299
300
Powershell Automatiser l'administration Windows
New-AdComputer
Permet d'ajouter des ordinateurs dans le domaine
301
Remove-ADUser
Vous pouvez supprimer des utilisateurs avec la commande Remove-Aduser
Get-AdUser –searchbase "ou=compta,dc=gtek,dc=local" –filter * | remove-ADUser
–confirm:$false
Va chercher tous les utilisateurs dans l'uo compta (y compris sous uo) et les efface
(-confirm;$false) permet de ne pas avoir à confirmer la suppression
Si l'on souhaite uniquement effacer les users de l'uo compta sans les sous uo,
ajouter –searchscope (0 pour uo mères, 1 pour uo mères et uo enfant, 2 pour tous
les niveaux
302
Powershell Automatiser l'administration Windows
Le module DHCP
303
Depuis l'arrivée de Windows 2012, les modules pour gérer les serveurs ont été
largement enrichi
304
Powershell Automatiser l'administration Windows
305
306
Powershell Automatiser l'administration Windows
307
308
Powershell Automatiser l'administration Windows
Script:
309
Le module DNS
310
Powershell Automatiser l'administration Windows
Sur 2012, vous pouvez gérer vos serveurs DNS avec Powershell, plusieurs dizaine de
cmdlette sont dédiées au DNS
Show-dnsservercache permet
de voir le cache DNS
Show-DnsServerCache -
ComputerName srv2012-2dc
pour analyser un DND distant
311
y L’exemple suivant retourne les enregistrements de type A présents dans la zone [Link]
sur le serveur srv2012-2dc
y Get-DnsServerResourceRecord -ZoneName [Link] -ComputerName srv2012-2dc -RRType A
312
Powershell Automatiser l'administration Windows
313
-IPAddress
-timeout
-useRootHint
314
Powershell Automatiser l'administration Windows
315
316
Powershell Automatiser l'administration Windows
317
Le module Hyper V
318
Powershell Automatiser l'administration Windows
319
320
Powershell Automatiser l'administration Windows
321
322
Powershell Automatiser l'administration Windows
Les exemples suivants retourne les config d’une VM (réseau, bios, dvd, Disk dur)
nommée 2012-DC
Get-VMNetworkadaptater –VMName 2012-dc | ft wrap
Get-VMDvdDrive –Name 2012-DC
Get-VMBios –VMName 2012-dc
Get-VMHardDiskDrive –VMName 2012-DC
323
324
Powershell Automatiser l'administration Windows
325
326
Powershell Automatiser l'administration Windows
L'exemple suivant permet de créer une VM nommé 2K12-R3 sur le serveur hôte
HyperV-2
327
Supprimer la carte réseau affectée de base et la remplacer par la carte nommé NIC1 que
l'on attache sur le switch virtuel nommé VLAN_20
Remove-VMNetworkAdapter -Name "carte réseau" -VMName 2K12R2-3
-ComputerName HyperV-2
Add-VMNetworkAdapter -name NIC1 -SwitchName VLAN_20 -VMName 2K12R2-3 -
ComputerName HyperV-2
329
Quelques commandelettes
330
Powershell Automatiser l'administration Windows
L’exemple suivant extrait une chaine puis compte les éléments de cette chaine
331
Nous voyons dans ce fichier ce que nous avons tapé et les résultats
332
Powershell Automatiser l'administration Windows
333
Cette commandelette permet de lire dans un fichier texte ou autre élément comme des
variables
Nous allons tester ce fichier
Retourne la liste complète
334
Powershell Automatiser l'administration Windows
Cette commande permet de récupérer par mot clé des listes comme par ex récupérer
les pc contenant MW, grâce à select-string
-totalcount permet de prendre dans cet ex les 5 premiers éléments de la liste, puis
de les copier dans un fichier nommé [Link]
335
Get-Hotfix
Retourne les correctifs logiciel sur les ordinateurs locaux ou distant
336
Powershell Automatiser l'administration Windows
Get-random
Obtient un nombre aléatoire ou sélectionne aléatoirement des objets dans une
collection
337
338
Powershell Automatiser l'administration Windows
Write-progress affiche une barre de progression qui peut être intéressant lorsque vous
exécutez des scripts nécessitant du temps de calcul
-activity indique le nom "Barre de progression" – status affiche en dessous
"%Effectué" et percentComplete $i*2 affiche la boucle avec un incrément de 2
rond à chaque fois
339
Out-Printer
Envoie la sortie à une imprimante
• Le premier imprime sur l’imprimante par défaut la date du jour.
• Le second imprime sur une imprimante réseau
340
Powershell Automatiser l'administration Windows
341
Group-object
Permet de regrouper en fonction d'un critère les objets.
Cet exemple regroupe par extension et affiche le nombre de fichier par extension
342
Powershell Automatiser l'administration Windows
Group-object
Cet exemple affiche le nom des processus étant présent plus de 2 fois
343
En ajoutant –includeEqual, nous affichons les égalités. Remarquez que l'ordre n'a
pas d'importance ainsi PC12 sur [Link] se trouve à la fin du fichier et au début avec
[Link]
344
Powershell Automatiser l'administration Windows
Compare-object
Cette cmdlet peut aussi être utilisé pour comparer des propriétés
L'ex suivant permet de comparer la taille de 2 fichiers
• On place dans 2 variables les fichiers, ensuite nous utilisons compare-object
avec la propriété length
345
Test-Path:
Cette cmdlet permet de tester l'existence d'un chemin
Test-path c: retourne true si c: existe ou false si il n'existe pas
346
Powershell Automatiser l'administration Windows
PSEdit
347
Une nouveauté fait son apparition dans Powershell ISE et le PSRemoting avec la
version 5:
PSEdit
Cet outil existait déjà et permettait d'ouvrir script dans un nouvel onglet dans
Powershell ISE lorsque l'on exécutait la commande suivante :
PSEdit chemin_de_mon_script.
Cependant, dans cette nouvelle version de Powershell ISE, il est possible d'ouvrir des
fichiers à distances.
Il n'y a donc plus besoin d'ouvrir Powershell ISE sur la machine où se trouve le
script pour l'éditer. Il suffit d'ouvrir une PSSession puis d'exécuter PSEdit.
348
Powershell Automatiser l'administration Windows
Pour mettre en œuvre cette fonctionnalité on ouvre une session sur une machine
distante:
$session = New-PSSession -computername 2K16-2
Enter-PSSession $session
Le fichier s'ouvre
automatiquement
349
350
Powershell Automatiser l'administration Windows
351
352
Powershell Automatiser l'administration Windows
y L’exemple suivant permet de récupérer les données netstat et de créer des propriétés pour pouvoir utilisé les filtres
$a=netstat
#on suprime les 5 premières lignes qui affichent des espaces et les entêtes
#on utilise ensuite convertFrom-string, la propriété « t » ne sert à rien mais est créé avec
convertfrom-string
$a[4..$[Link]] | ConvertFrom-String `
-PropertyNames "t","protocole","adlocale","addistante","état" |
Select-Object protocole,adlocale,addistante,état | where état -Match established
353
Convertit une chaîne contenant une ou plusieurs paires clé/valeur en une table de
hachage.
L’exemple suivant récupère dans une table de hash nommé alerte des codes erreurs
stockés dans un fichier
$code=get-content C:\temp\[Link] -Encoding UTF8
$alerte=$code | ConvertFrom-StringData
Write-Warning "la première erreur est : $($alerte.msg1)"
354
Powershell Automatiser l'administration Windows
355
Remplissage d'une chaîne à une longueur déterminée et qui ajoute des caractères
PadLeft()
blancs à gauche (aligné à droite de chaîne) ("Hello").PadLeft(10)
PadRight()
Remplissage d'une chaîne à une longueur déterminée et qui ajoute des caractères ("Hello").PadRight(10) +
blancs à droite (aligné à gauche de chaîne) "World!"
Remove() Supprime le nombre requis de caractères à partir d'une position spécifiée ("Hello World").Remove(5,6)
Replace() Remplace un caractère par un autre caractère
("Hello World").Replace("l",
"x")
Split() Convertit une chaîne avec des points de séparation spécifiés dans un tableau ("Hello World").Split("l")