Powershell
Powershell Sommaire 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration 1) Étude du cahier des charges (1.1.1) La société Intégrales Technologies rencontre fréquemment des problèmes de résolution de nom. Le service DNS de l entreprise souffre d interruptions de service. Hors le service DNS permet d assurer la corrélation entre les noms de domaine et les adresses IP des postes clients et des serveurs. Sans le service DNS cette résolution est impossible et ne permet pas l échange d informations entre les différents acteurs de l entreprise Intégrale Technologie. Le service DNS génère des fichiers correspondant à la résolution de nom directe et inverse. Le serveur possède un fichier de résolution directe integrale.lan.dns,, un fichier de résolution de nom inverse 1.168.192.in-addr.arpa.dns 1
1.1) Étude des fichiers 1.1.1) Résolution directe @ : Désigne toutes les adresses IP SOA : Donne les informations générales de la zone A : Fait correspondre un nom d'hôte à une adresse IPv4 AAA : Fait correspondre un nom d'hôte à une adresse IPv6 NS : Définit les serveurs DNS de ce domaine SRV : Propose aussi des fonctionnalités avancées comme le taux de répartition de charge pour un service donné MX :Fait correspondre le serveur de messagerie exchange. 1.1.2) Résolution inverse 2
PTR : Associe une adresse IP à un enregistrement de nom de domaine 1.1.3) HOST Le fichier host à pour chemin C:\Windows\System32\drivers\etc\host, il est composé d une adresse IP puis du FQDN (Fully Qualified Domaine Name) qui correspond au nom complet de la machine. 2) Veille technologique (5.2.2) Pour effectuer le script demandé j ai réalisé une veille technologique sur Powershell. Powershell est un langage de Scripting en ligne de commande intégrée à Windows depuis 2006. Il exploite une technologie de Scripting orientée objet ce qui le rend plus complet que ses prédécesseurs comme MS-DOS ou Windows Host Script. Ce nouveau langage de Scripting permet également les points suivants : - Auto-complétion des commandes - Possibilité d'interagir avec les applications Windows (ex: Active Directory) -Apparition des Break Points (Points d'arrêt pour faciliter le debugging) Liste des sources : http://www.powershell-scripting.com/ http://technet.microsoft.com/fr-fr/library/bb978526.aspx 3
2.1) Présentation 2.1.1) Les environnements Powershell possède deux environnements, un environnement console et développement. -Environnement console : -Environnement développement : Environnement de développement Affiche les erreurs Correspond à la console utile pour tester une commande. 4
2.1.2) les bases Opération mathématique + Addition - Soustraction * Multiplication / Division % Modulo Instancier une variable $mavariable= texte ou encore $mavariable=3 pour une écriture plus stricte : [string]$mavariable= texte [int]$mavariable=3 Les comparateurs -eq = -nq # -lt < -gt > -le <= -ge >= -Like -Notlike Contient les caractères (string) Ne contient pas les caractères (string) Quelques commandes Get-childitem : obtient les nœuds enfants du répertoire Get-date : obtient la date Get-content : obtient le contenue d un fichier Get-start : lance un processus Get-process : obtient la liste des processus New-item : crée un nouveau fichier ou répertoire Copy-item : copie un répertoire ou un fichier Remove-item : supprime un répertoire ou un fichier Les commandes peuvent être complétées par des options en voici quelques exemple Get-childitem patch c:\windows\ -recursif l option patch désigne le chemin tandis que recursif signifie que la commande get-childitem sera récursive, on parcourt toute l arborescence du fichier Windows. 5
3) Administration sur site (3.3.1) Pour résoudre le problème du serveur DNS, il m est demandé de réaliser un script, il devra mettre à jour le fichier Host des postes clients. 3.1) Procédure d installation de Powershell Powershell est équipé en natif depuis Windows vista. Pour Windows XP ou Windows serveur 2003 je dois procéder à l installation de composants additionnels. Windows serveur 2003 Windows XP SP2 SP3 Framework 2.0 Framework 2.0 Framework 3.0 Framework 3.0 Framework 3.5 Framework 3.5 Framework 3.5.1 Framework 3.5.1 Powershell2.0 Powershell2.0 Pour Windows serveur 2003 : -Télécharger à l adresse suivante le pack SP2 http://www.microsoft.com/frfr/download/details.aspx?id=41 et l installer -Télécharger à l adresse suivante Powershell http://www.microsoft.com/frfr/download/details.aspx?id=4045 et l installer Pour Windows XP : - Télécharger à l adresse suivante le pack SP3 http://www.microsoft.com/frfr/download/details.aspx?id=25129 puis l installer --Télécharger à l adresse suivante Powershell http://www.microsoft.com/frfr/download/details.aspx?id=16818 et l installer Les Framework : -Télécharger à l adresse suivante le Framework 2.0 http://www.microsoft.com/frfr/download/details.aspx?id=1639 puis installer -Télécharger à l adresse suivante le Framework 3.0 http://www.microsoft.com/enus/download/details.aspx?id=34595 puis installer -Télécharger à l adresse suivante le Framework 3.5 http://www.microsoft.com/frfr/download/details.aspx?id=21 puis installer -Télécharger à l adresse suivante le Framework 3.5.1 http://www.microsoft.com/frfr/download/details.aspx?id=22 puis installer 6
3.2) Activation Après avoir installé les contenus téléchargés, je dois procéder à l activation des scripts puisque pour des raisons de sécurité les scripts sont désactivés. Pour activer les scripts je lance la console en tant qu administrateur. Puis tape la commande suivante : set-executionpolicy puis entre unrestrited es je sélectionne O pour oui. 7 L activation permet à Windows d accepter d exécuter tous les scripts, sans certification. 3.3) Élaboration du script 3.3.1) Principe : - Je dois parser le fichier de résolution directe pour récupérer l adresse IP et le nom de l hôte, ils seront écrits dans un fichier hosts. - Pour envoyer le fichier hosts sur les postes clients j utiliserai le serveur FTP de l entreprise, en effet ce serveur permet de transférer des fichiers par le port 21.L envoi du script se fera en deux temps, un upload du serveur DNS vers le serveur ftp puis un download du serveur FTP vers le poste client.
- Pour réaliser le script je propose d utiliser Powershell son orientation vers du Scripting objet me permettra plus facilement de l intégrer dans le serveur FTP 3.3.2) Script 3.3.2.1) Script coté serveur Récupération du FQDN et de l adresse IP La première partie du script consiste à parser le fichier de résolution directe, je vais stocker son contenu grâce à la commande get-content dans une variable notée $fichier. Je parcours ensuite pour chaque ligne le fichier que je découpe par caractère vide dans un tableau noté $i. -Si le premier caractère re correspond au nom du serveur, je récupère la valeur caractère suivant, c est adresse IP du serveur, j inscris alors le nom du serveur et l adresse IP lui correspondant dans le fichier Host.txt. -Si le caractère stocké dans le tableau $i contient 1200 je récupère le 2éme caractère qui suit c est l adresse IP, puis j écris dans un fichier host.txt, le nom de l ôte qui correspond à la première valeur du tableau et l adresse IP récupérée. Upload Pour envoyer le fichier host.txt sur le serveur FTP j utilise l objet system.net.webclient. Je stocke dans une variable l adresse URL du serveur FTP suivi du nom du fichier qu il aura sur le serveur HOSTS. J envois le fichier host.txt sur le serveur avec la fonction uploadfile de l objet. Pour finir je contrôle que le fichier host.txt a bien été envoyé si c est le cas je le supprime du coté serveur puis j affiche envoi ok sinon j affiche problème d envoi 3.3.2.2) Script coté client 8
J utilise l objet system.net.webclient mais en lui attribuant la fonction downloadfile, je précise dans la variable $url le chemin du serveur FTP avec le fichier a télécharger. Quand la fonction downloadfile est appelée, elle va télécharger le fichier host et le placer sur le bureau. Je vais donc, dans un deuxième temps, déplacer le fichier host dans le répertoire du fichier HOSTS. 4) Automatisation des tâches d administration (3.3.4) 4.1) Pour le serveur Powershell ne s exécute pas par défaut,en effet le lancement de l application démarre le bloc-note,il va donc falloir changer l ouverture par défaut du programme. Je clique droit sur l icône du script->modifier Je sélectionne l icône Powershell (si l icône n est pas disponible je clique sur parcourir- >c:\windows\systeme32\windowspowershell\powershell.exe) 9
Après avoir changé l ouverture par défaut il faut maintenant automatiser la tâche Dans Démarrer->Panneau de configuration->taches planifiées Je clique sur Parcourir Je sélectionne le script dns.ps1. Je choisi la fréquence d exécution. 4.2) Pour les postes clients Pour que l utilisation du script soit transparente pour les clients, je vais utiliser le fichier c:\windows\sysvol\domain\script du serveur d annuaire dans lequel je vais placer le fichier dns2.ps1. Dans le service d annuaire, sur le profil des utilisateurs je vais faire un clique droit et dans l onglet Profil je vais indiquer le nom du script. 10
Le script ce lancera a l ouverture du compte Le compte utilisateur ne possède pas le droit d écriture dans le répertoire e Windows, il faut soit que les utilisateurs soit admin du domaine, mais cela peut compromettre la sécurité du réseau. soit utiliser le compte administrateur qui est capable d écrire dans le répertoire Windows. J opte pour la deuxième solution pour des raisons de sécurité. 11