420-PKF-SL Sécurité Informatique Automatiser notre traitement Les Scripts
Introduction Cas pratique : Vous êtes face à un petit réseau de 10 postes en point-à-point. Vous avez à créerles mêmes 10 comptes utilisateur sur les 10 postes. Si vous activez le partage protégé par mots de passessur tous les postes, il sera impossible de communiquer à un dossier partagé sur un autre poste si celui-ci n'a pas de mot de passe à son compte. Si vous créez un mot de passe pour chaque utilisateur, ce mot de passe devra être fournis pour accéder les dossiers partagés du poste. Faisable mais ennuyeux. Si par contre, le compte de l'utilisateur est défini sur tout les postes (avec le même mot de passe), la communication deviens possible entre tous les postes sans avoir à fournir le mot de passe. En effet : l'utilisateur qui tente d'accéder un dossier sur le poste voisin peux le faire puisque son propre compte existe aussi sur ce poste voisin. Vous avez donc tout un travail devant vous Pas tout à fait si vous savez manier les Scripts. Voyons comment.
Installation Après l'installation du MSCM, PowerShell est installé sur votre poste. S'il ne l'est pas, vous trouverez un hyperlien pour le charger à l'onglet Référencessous l'entête Automatisation (Scripts). Le second hyperlien libellé : Téléchargement Windows Management Framework. Le «Framework» contiens PowerShell. Le manuel Windows Server 2008 Security (1) fournis quelques scripts pour démontrer l'utilité d'une telle approche. Téléchargez le fichier contenant ces scripts de l'onglet Références sous l'entête Automatisation (Scripts). Le troisième hyperlien libellé : Fichier ZIP : Plusieurs Scripts). Créez-vous un dossier, placez-y les scripts Lancez PowerShell( menu Démarrage Exécuter PowerShell.exe ) PowerShell se comporte à peu de chose près comme cmd.exe(la console Windows) mais offre un langage de Scriptspuissant permettant d'exécuter des tâches qui ne seraient autrement disponibles qu'à l'aide de clics de souris. (1) Référez-vous à la section Référencesdu site web pour les détails à propos de ce manuel.
Configuration Par défaut, l'exécution de Scripts est désactivée dans PowerShell. Une des multiples mesure exagérée de sécurité de Microsoft. Pour remédier à ça: lacez PowerShell comme Administrateur. Vérifier si les scripts sont permis en lançant la commande Get-ExecutionPolicy PowerShell vous répondra par Restricted ou Unrestricted Dans le cas où la réponse est Restrictedvous devez lancer la commande suivante : Set-ExecutionPolicy unrestricted. PowerShell vous répondra par Unrestricted. Vous pouvez maintenant lancer un script en tapant simplement le nom du fichier.
Lancez PowerShell si ce n'est déjà fait. Préambule aux exercices Notez l'invite de PowerShell, elle est presqu'identique à celle de la console Windows avec les lettres PS ajoutés au début de l'invite. PS C:\Batch> PowerShell possède un jeu complet de commandes pouvant court-circuiter les manipulations faites avec la souris. Tout comme dans la console, plusieurs de ces commandes peuvent êtres regroupées dans un fichier. A la différence des fichiers par lot«batch» l'extension du fichier sera.ps1et non.bat. Cependant, PowerShell est comme Java en ce sens qu'il ne reconnait pas automatiquement le dossier courant quand vous lancez une application.
Premier exercice Donc, si vous tapez le nom d'un fichier Script, celui-ci ne sera pas trouvé par PowerShell qui vous répondra en caractères rouges. PowerShell signifie ceci par la phrase Le terme «ListUserLastLogon»n'est pas reconnu comme. Il faut donc préfixer le nom de nos fichiers scripts par le chemin complet où, s'il s'agit du dossier courant, d'un simple point tel :.\ListUserLastLogon. Le chemin ajouté, le script s'exécute.
Prenons le script ListUserLastLogon. Premier cas Ce script a été conçu pour lister la dernière date de connexion d'un usager «spécifié en paramètre de ligne de commande» ou de tous les usagers à l'aide du paramètre all. Le script a été conçu pour fournir de l'aide si les paramètres requis ne sont pas fournis tel que vous pouvez le constater dans la figure de droite. Si les bons paramètres sont fournis, le script effectue son travail (figure ci-dessous)
Source du script Bien entendu, il est impensable d'apprendre le langage de script du PowerShell dans le cadre d'une ou deux périodes de cours. Cependant, examinons simplement le langage pour constater qu'il ne pose pas plus de difficultés que les autres langages. D'abord, ces scripts acceptent des paramètres de ligne de commande. param( À gauche, on voit la fonction if($help) { funhelp} $domain, param(qui est utilisé pour créer if($examples) { funhelp} $users, la liste des paramètres pouvant if($full) { funhelp} [switch]$all, être utilisés avec la fonction. if($domain) [switch]$whatif, [switch]$help, [switch]$examples, [switch]$min, [switch]$full )#end param Le [switch]avant certains paramètres indique q'unou l'autre est attendu. À droite on apperçoitune suite de if ( )traitant ces paramètres. { $domain = "LDAP://$domain"} if($whatif) { funwhatif} if($users) { fungetusers } if($all) { fungetallusers} if(!$users -and!$all) { funhelp}
Source du script (suite) Les variables sont définies comme en PHP, avec un signe de dollars comme premier caractère. Les constantes texte sont définies d'une façon similaire à la différence qu'on as recours à la séquence de caractères @" et"@pour border la chaine. La définition de fonctions ressemble étrangement à celle de JavaScript. Une particularité, une fonction ne semble pas avoir besoin d'instruction returnpour retourner du texte. Function funwhatif() { "what if: Perform operation obtain lastlogon time for user $user from the $domain domain" exit }#end funwhatif