1 Introduction 2 Pipeline

Transcription

1 Introduction 2 Pipeline
TP Licence Réseaux et Télécommunication
Administration windows - Powershell
1
Introduction
Du point de vue de l’interface Windows PowerShell ressemble beaucoup au fameux cmd. Nous allons
voir qu’il est en réalité bien différent.
Commencer par exécuter une commande dir ou une commande ls dans le répertoire courant. Exécuter
maintenant dir /w dans un cmd et sous powershell.
Sous powershell, dir est un alias de la commande Get-Childitem. PowerShell propose 130 commandes (sans compter les alias), notamment destinées à superviser la gestion de services, de processus,
de journaux d’événements ou encore celle de la base de registre. Il est évidemment hors de propos de
connaı̂tre ces 130 commandes. On commence par s’intéresser aux commandes :
Get-Alias, Get-Childitem, Get-Process, Get-Command
Notez que la commande get-command retourne la liste des commandes disponibles. Une des autres
commandes incontournables est get-help. En effet, Get-help get-Childitem retourne l’aide de
Get-childitem. Le site internet http://www.powershell-scripting.com/ fournit de nombreux exemples de script et peut être utilisé pour vous aider tout au long de ce TP Powershell.
2
Pipeline
PowerShell est plus proche de langage de script orienté objet comme Perl que de langages de shell,
comme bash. Il n’y a finalement que très peu de ressemblances entre le PowerShell et le très simpliste
langage batch des fichiers .BAT de DOS/Windows.
Le but de Microsoft est de faire un langage de script complètement intégré, avec autant de fonctionnalités que ceux qui existent sous Unix (et linux) et avec le même niveau de sécurité. Par contre, les
échanges entre composants se feront sous forme d’objets et non pas de texte : Sous Unix, les échanges se
font sous forme d’un pipeline au format texte entre l’entrée d’un composant et la sortie d’un composant.
À l’opposé, avec PowerShell, les échanges se font au format objet de .NET. Il est néanmoins possible de
“pipe-liner” avec Powershell.
Exemple : la commande Get-Childitem | more renvoie à more le résultat de Get-Childitem.
Exercice 1
Créez un dossier dossier essai qui contient 2 sous répertoires et 100 fichiers. Placez vous dans ce
répertoire. Testez ces commandes :
• $variable = Get-ChildItem
• $variable
• $variable[1]
• $variable[1] | Get-member
La dernière commande pipeline $variable[1] à Get-Member. Elle nous renvoie donc tous les membres (méthodes et propriétés) disponibles pour l’objet $variable[1]. On pourra tester un
$variable[1].get LastAccessTime() et d’autres membres de $variable[1] ou de variable . . .
On voit que la commande get-Childitem renvoie non pas une chaı̂ne de caractères qui contient les
fichiers/dossier du répertoire courant mais un tableau d’objets. On peut accéder aux éléments de ce
tableau grâce aux crochets [ ] et aux membres de cet objet grâce au point. (orientée objet).
1
TP Licence Réseaux et Télécommunication
Exercice 2
Ecrire une ligne de commande qui liste les fichiers d’un répertoire qui ont pour extension .txt.
indication : utiliser la commande Where-Object).
Exercice 3
1. Ecrire une ligne de commande qui liste les fichiers d’un répertoire dans l’ordre de dernière modification et qui affiche les autorisations de chacun des fichiers.
2. Lancer trois fois le bloc note de windows à la main, puis écrire une ligne de commande qui tue
tous les processus qui s’appellent notepad.
3
Scripts
Microsoft a introduit des sécurités pour qu’un script non autorisé ne puisse pas s’exécuter à l’insu de
l’utilisateur, comme cela pouvait être le cas en VBScript.
Nous allons devoir jouer avec deux composantes :
1. le mode de sécurité du shell, appelé aussi ”stratégie d’exécution”
2. la signature des scripts
Pour déterminer votre stratégie d’exécution, tapez la commande suivante :
Get-ExecutionPolicy
Si vous n’avez rien changé, vous devriez vous trouver dans le mode “Restricted”.
Il existe 4 stratégies d’exécution dans PowerShell :
1. Restricted :
• Ne permet que la saisie interactive de commandes, c’est-à-dire uniquement dans le shell
• Les scripts ne sont pas autorisés.
2. AllSigned :
• Les scripts peuvent être exécutés mais seulement s’ils sont signés,
• Demande confirmation avant l’exécution de chaque script .
3. RemoteSigned :
• Les scripts exécutés localement peuvent être exécutés sans être signés.
• Les scripts téléchargés à partir d’internet doivent être signés.
• Ne demande pas de confirmation avant d’exécuter des scripts signés ou non par une autorité
de certification connue de votre ordinateur.
4. Unrestricted :
• Tous les scripts signés ou non peuvent être exécutés.
Le mode “AllSigned” est le mode le plus sécurisé mais il est tout de suite plus délicat de créer des
scripts lorsqu’on débute car il faut les signer. Pour débuter, il est recommandé de se mettre dans le
mode RemoteSigned. Ainsi les scripts développés localement pourront être exécuté tout en préservant
un peu de sécurité vis-à-vis d’Internet.
Exercice 4
Ecrire un script qui ne contient que la commande dir. Exécuter ce script. Cela ne devrait fonctionner.
Penser à modifier votre niveau d’exécution.
Note : il faudra lancer powershell en tant qu’administrateur.
2
TP Licence Réseaux et Télécommunication
Exercice 5
Ecrire un script qui, à partir d’un fichier texte qui contient des noms d’utilisateurs, crée un répertoire
pour chaque utilisateur.
Indication : On pourra utiliser les commandes get-content et new-item avec les bonnes options.
Exercice 6
En utilisant ADSI, développer un script qui à un utilisateur fait correspondre un répertoire personnel.
Le nom de l’utilisateur et le répertoire en question devront être passés en argument de ce script.
3