Transcript of hamzaderraz.files.wordpress.com€¦ · Web view2018. 2. 12. · Windows PowerShell ajoute...
Qu’est ce que le Windows PowerShell ?
Windows PowerShell ajoute énormément de fonctionnalités permettant
de scripter et d’interagir beaucoup plus facilement avec
l’environnement et le système et permet aussi une grande
automatisation pour la plupart des tâches d’administration. Dans un
actif directory, produit de Microsoft, il sera possible de créer
des scripts en langage PowerShell pour automatiser des tâches comme
la création d’utilisateurs ou encore faire rejoindre des machines
distantes dans le domaine.
Qu’est-ce qu’un script ?
C’est un programme dans un langage qui permet de manipuler les
fonctionnalités d'un système informatique configuré pour fournir à
l' interpréteur de ce langage, un environnement et une
interface qui déterminent les possibilités de celui-ci.
Autrement dit le script permet d’automatiser un certain nombre de
tâches en se passant d’un langage reel.
1- Débuter en PowerShell
Premièrement, sous Windows, il va falloir commencer par activer la
fonction PowerShell pour pouvoir faire fonctionner un script écrit
dans ce langage.
Par défaut, PowerShell est configuré en mode "Restricted", nous
allons le basculer en mode "Unrestricted" pour faciliter sa prise
en main.
Il est possible d'indiquer à PowerShell plusieurs modes
d'exécution. Chaque mode implique un certain comportement.
· Restricted : aucun script ne peut être exécuté. PowerShell
est utilisable uniquement en mode interactif.
· AllSigned : seuls les scripts signés peuvent être
exécutés.
· RemoteSigned : les scripts téléchargés depuis Internet
doivent être signés pour être exécutés. Les scripts présents sur
votre poste de travail ne sont pas concernés et peuvent être
exécutés.
· Unrestricted : pas de restrictions. Les scripts peuvent être
exécutés.
Dans un environnement de production, il est recommandé fortement le
mode "AllSigned".
Comme ci-dessous :
· La commande : Set-ExecutionPolicy RemoteSigned cette commande
modifie la stratégie d’exécution et permet d’utiliser les scripts
que l’on crée nous-même. Mais avant d’éxécuter cette commande il
faudra exécuter le Windows PowerShell en tant
qu’admnistrateur.
· La commande : Get-ExecutionPolicy permet de connaître le
mode actuellement utilisé.
· La commande : Set-ExecutionPolicy permet changer de
mode.
Importer des modules dans vos scripts
L'utilisation de module est parfois nécessaire afin de pouvoir
profiter de certaines fonctions déjà existantes. Pour obtenir
les modules chargés sur la machine, il suffit d'exécuter la
commande suivante :
Si vous souhaitez en ajouter, vous pouvez lister les modules
disponibles :
Lorsque vous avez identifié le module dont vous aurez besoin
pour la rédaction de votre script, il vous suffira
de l'importer via la commande Import-Module. Dans
l’exemple ci-dessous, on décide d'importer le module Active
Directory :
1.1- Creation du Script :
Maintenant nous allons créer un premier script qui sera
relativement simple mais qui nous facilitera la gestion de nos
utilisateurs dans l'Active Directory.
On souhaite obtenir la liste de tous les utilisateurs Active
Directory dont la dernière connexion est supérieure à 90
jours afin de verrouiller leur compte pour des
raisons de sécurité et nous ajouterons l'envoi d'un email
automatique au help desk (assistance) pour les informer de
cette désactivation.
Commencez par ouvrir votre éditeur préféré, Windows PowerShell
ISE ou autre puis indiquer quelques commentaires sur le
contenu de votre script, suivis du type d'exécution que vous
souhaitez. Et enfin, importez le module PowerShell Active
Directory.
· La recherche Active Directory
Pour lister les utilisateurs concernés, vous
pouvez utiliser la commande Search-ADAccount suivie
de plusieurs paramètres :
· UsersOnly : recherche uniquement des objets de type
"account"
· AccountInactive : recherche les comptes qui ne se sont pas
connectés depuis une certaine période
· TimeSpan : indique la durée d'inactivité
· SearchBase : recherche uniquement dans cette unité
d'organisation
Terminez en filtrant uniquement sur les comptes actifs via la
clause Where-Object.
Vous disposez maintenant d'une liste de comptes dont la dernière
connexion est supérieure à 90 jours via la
variable $LockedAccount.
À présent, vous pouvez facilement désactiver tous ces comptes via
la commande suivante :
$LockedAccount | Set-ADUser.
· L'envoi de l'email
Il ne vous reste plus qu'à envoyer un email au help desk afin
de lui indiquer la liste des comptes désactivés. Pour cela,
déclarez quelques variables (serveur SMTP, expéditeur,
destinataire, sujet du mail, corps du mail) : vous les utilisez
ensuite dans la cmdlet Send-MailMessage, vous permettant ainsi
d'envoyer l'email. Voici le script PowerShell complet que
vous venez de rédiger :
1.2- Quelques commandes en PowerShell :
Il existe une multitude de commande en PS, je vais vous en montrer
quelques-unes :
Celle-ci sert à fermer un processus, ici, le moteur de rechercher
mozilla firefox. Il suffit de savoir le nom du processus.
Ici, dans un premier temps, un simple « ipconfig » permettant de
savoir nos adresses ip. Ensuite, un condensé de cette commande en
choisissant d’afficher que les lignes contenant le mot « Adresse
»
Dans cette commande, nous ajoutons du contenu dans un fichier nommé
« test.1 »
Ici, on supprime le contenu du fichier :
Avec cette commande, nous écrivons le résultat d’une commande dans
un fichier texte.
La commande « getmac » permet d’afficher les adresses mac des
cartes réseaux.
Ici, grâce à la commande Get-WmiObject –List, nous affichons toute
la liste des composants. Ensuite, avec « Select-String » on choisit
ce que l’on souhaite pour un affichage restreint à l’objet
choisi.
Ensuite, en récupérant l’adresse de la carte réseau, on peut
directement lui attribuer une adresse ip, un masque et une
passerelle. Très pratique si l’on veut changer une adresse d’un pc
à distance si on veut passer par les lignes de commande.
Avec cette commande, on a les caractéristiques de nos disques
durs.
Cette commande copie tous les fichiers et sous-dossiers du dossier
C:\Perflogs dans le dossier R:\Backup. Le paramètre "-recurse" est
utilisé quand les sous-dossiers doivent être copiés.
Voyons maintenant tous les paramètres :
Copy-Item [ -path ] ( string[] ) [ [ -destination ] ( string ) ] [
-container ] [ -recurse ] [ -force ] [ -include ( string[] ) ] [
-exclude ( string[] ) ] [ -filter ( string ) ] [ -passThru ] [
-credential ( PSCredential ) ] [ -whatIf ] [ -confirm ] [ (
CommonParameters ) ]
gps | Out-GridView : Cette commande permet de donner des
informations arrangés en lignes et colonnes sur les processus ( gps
est un alias de la commande GetProcess) dans une fenêtre
d’affichage qu’on peut explorer manuellement.
On peut cliquer sur l’en-tête des colonnes pour pouvoir trier les
processus selon un critère défini :
Filtrer un processus avec le CPU time avec une mémoire de travail
supérieur à 20000 :
1- Cliquez sur le bouton Ajoutez des critères et cochez l’item
CPU(s).
2- Ajouter Critère CPU(s) contient … et CPU(s) n’est pas vide
3- Ajouter un autre critère en cochant la case WS(K) item.
4- Ajouter un prédicat « n’est pas égale » et
remplir l’espace avec 20000.
· Créer une liste de processus triés :
1- Afficher les processus .
2- Envoyez la sortie de la commande Get-Process à l'applet de
commande Get-Member:
3- Envoyez la sortie de la commande Get-Process à l'applet de
commande Sort-Object en utilisant la propriété cpu
4- Envoyez le tout à l'applet de commande Out-GridView. La commande
apparaît ici:
On remarque que les processus sont triés de manière décroissante
selon le CPU(s), l’usage de commande peut s’avérer plus rapide que
le tri de façon manuelle en cliquant sur la colonne.
On peut aussi gérer l’affichage de l’Out-GridView selon les
colonnes en faisant un click droit sur la colonne le résultat est
ci-dessous :
gsv | ogv : Cette commande permet d’afficher dans une fenêtre
un ensemble de services ( gsv : alias de la commande
getService
La commande Out-GridView détecte automatiquement le type de données
des propriétés entrantes. Il
utilise ce type de données pour déterminer comment vous présenter
les informations filtrées et triées. Cliquez sur le bouton Ajouter
des critères, en sélectionnant la propriété de statut, et en
sélectionnant Ajouter un filtre qui permet de choisir différentes
manières d'interagir avec le texte stocké dans la propriété statut.
Les options changent en fonctionsur le type de données perçu de la
propriété entrante.
Pour filtrer uniquement les services en cours d'exécution, vous
pouvez remplacer le filtre égal et la valeur de l'exécution. Si
vous choisissez un opérateur d'égalité, votre chaîne filtrée doit
correspondre exactement.
D'un autre côté, si vous choisissez une lettre vous trouverez tous
les services en cours d'exécution avec la première lettre choisi. À
mesure que vous continuez à taper, les correspondances continuent à
être affinées dans la sortie.
2- Du PowerShell dans un Active Directory
Le but principal d’un script étant d’automatiser des tâches, il est
très intéressant de coupler ça à un AD, cela va permettre de
déployer les scripts à distance sur des machines dans un même
domaine ce qui permet d’optimiser le travail d’un administrateur
réseau au maximum.
2.1- Script de création automatique d’utilisateur ou de remonter
dans le domaine
La commande « New-ADUser » permet de créer un utilisateur. Le
problème, quand l’on utilise cette commande c’est que le compte ne
sera pas activé. Pour voir si il est activé ou pas, la commande «
Get-ADUser » permet de voir les caractéristiques d’un compte.
Ici : Enabled : False : Cela veut dire que le compte n’est pas
activé.
La stratégie de création de compte chez Windows désactive
automatiquement les comptes quand ces derniers n’ont pas eu de mot
de passe définis. Par conséquent, la commande «
Set-ADAccountPassword –Identity » permet de déterminer un mot de
passe.
Pour finir, on active le compte « Enable-ADAccount –Identity »
permet d’activer le compte.
On peut aussi créer automatiquement des comptes en enregistrant un
fichier texte au format CSV. Ci-dessous, on importe le fichier CSV
pour créer les comptes.
Conclusion :
Le langage PowerShell est par conséquent très puissant. Comme on a
pu le voir, à partir d’une ligne de commande, on est capable de
créer des utilisateurs dans un AD, ou encore afficher des
caractéristiques matérielles.