hamzaderraz.files.wordpress.com€¦  · web view2018. 2. 12. · windows powershell ajoute...

22
Initiation au langage PowerShell

Upload: others

Post on 23-Jun-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

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.