38
PowerShell: Une perspective du développeur

PowerShell - NIk Charlebois

Embed Size (px)

Citation preview

Page 1: PowerShell - NIk Charlebois

PowerShell: Une perspective du développeur

Page 2: PowerShell - NIk Charlebois

@NikCharlebois

• Ingénieur logiciel de formation• MCTS SharePoint 2013/2007 & HTML5• Fonctionnaire fédéral à temps plein

• Collab & systèmes corporatifs BAC

• Fondateur du groupe d’usager SharePoint Outaouais

• PowerShell Microsoft MVP• Développeur .NET• Blog: NikCharlebois.com

Page 3: PowerShell - NIk Charlebois

@NikCharlebois […]

Auteur« Beginning PowerShell for SharePoint 2013 »

Amazon, Apress, Springer

The best shit since the Da Vinci Code- My Mom

Page 4: PowerShell - NIk Charlebois

Réduire la séparation entre les IT Pro et les développeurs;

Faire comprendre les mécanismes internes de PowerShell;

Démontrer l’utilisation de PowerShell;

Donner un aperçu de ce que le futur réserve;

Pourquoi cette session

Page 5: PowerShell - NIk Charlebois

Historique

Page 6: PowerShell - NIk Charlebois

Dans mon temps…

Command Prompt – Batch Files

Outil très limité pour automatiser des opérations

Difficulté de réutilisation

Considéré comme étant une solution IT Pro

Page 7: PowerShell - NIk Charlebois

Encore pire…

Console Application

Boîtes noires n’exposant aucunement la logique

Difficulté de réutilisation

Considéré comme étant une solution Dev

Page 8: PowerShell - NIk Charlebois

PowerShell

- Introduit en 2006 avec Windows XP SP2 et Windows Server 2003;

- Nécessitait d’être téléchargé et installé avec Windows Server 2003;

- Venait en tant que Feature sur Windows Server 2008

- Vient pré-installé sur Windows Server 2008 R2 et plus récent

Page 9: PowerShell - NIk Charlebois

Survol

Page 10: PowerShell - NIk Charlebois

Qu’est-ce que PowerShell?- Un « Shell » Orienté Object;

- Un langage interprété;

- Un outil de définition de configuration (Desired State Configuration);

- Votre meilleur ami lorsque vous vous sentez seul;

Page 11: PowerShell - NIk Charlebois

Variables

$a = 5$b = 10$a + $b => 15

$c = “My name is”$d = “Nik”$c + “ “ + $d => “My name is Nik”

Page 12: PowerShell - NIk Charlebois

Opérateurs de Conditions

Opérateur PowerShell

Équivalent .NET

-eq =-le <=-ge >=-ne !=-gt >-lt <

Page 13: PowerShell - NIk Charlebois

Opérateurs de Logique

Opérateur PowerShell

Équivalent .NET

-and &&! !

-not !-or ||

Page 14: PowerShell - NIk Charlebois

Itérateurs

for($i = 1; $i -le 10; $i++)

{$i

}Þ 1Þ 2Þ 3Þ …Þ 10

$fruits = @(‘’Banane’’, ‘’Pomme’’)

foreach($fruit in $fruits){

Write-Host ‘’Je mange une $fruit’’

}Þ Je mange une BananeÞ Je mange une Pomme

Page 15: PowerShell - NIk Charlebois

Types .NET

[System.DateTime]::NowÞ 23 Avril 2015 14:48:14

[System.Console]::Beep()Þ BEEEEEEEEP

Page 16: PowerShell - NIk Charlebois

.NET Assemblies

[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

Þ GAC = True, Version=[…], Location = […]

Page 17: PowerShell - NIk Charlebois

Objets .NET

[System.Windows.Forms.MessageBox]::Show(‘’Hellow World’’)

Þ

$list = New-Object System.Collections.Generic.List’’[System.String]

$list.Add(‘’Nik’’)$listÞ Nik

Page 18: PowerShell - NIk Charlebois

Pousser les limites

PowerShell a accès à toutes les librairies .NET

Possibilité d’utiliser les librairies reliées aux interfaces graphiques et autres;

Page 19: PowerShell - NIk Charlebois

Demo #1Interface Graphique

Page 20: PowerShell - NIk Charlebois

Objets personnalisés

• Possibilité de créer ses propres objets dans Visual Studio et de les utiliser dans PowerShell;

• Même processus que pour les objets prédéfinis .NET

[Reflection.Assembly]::LoadFile(“c:\xxxx”)

Page 21: PowerShell - NIk Charlebois

Demo #2Objets personnalisés

Page 22: PowerShell - NIk Charlebois

Cmdlet

• Un Cmdlet est comme une méthode .NET Prend des arguments en entrée; A un type d’objet comme retour;

• Combinaison Verbe-Nom: Ex: Get-Service, Set-Date, Clear-Content, etc.

Page 23: PowerShell - NIk Charlebois

Tuyautage…..restons en à Piping ok?

• Permet de passer automatiquement le résultat d’une opération vers l’entrée d’une autre; Ex: Get-Random 1,2,3,4,5 | Write-Host –

BackgroundColor Red

Page 24: PowerShell - NIk Charlebois

Obtenir de l’information concernant les objets

• Cmdlet Get-Member pour obtenir de l’information concernant les méthodes et propriétés exposées par les objets;

Page 25: PowerShell - NIk Charlebois

Demo #3Développer des Cmdlets avec Visual Studio

Page 26: PowerShell - NIk Charlebois

Fonctions

• Déclarées directement en PowerShell;

• Peuvent accepter des paramètres d’entrée;

• Introduites avec PowerShell v1.0

Page 27: PowerShell - NIk Charlebois

Fonctions[…]

• Ex:Function HelloWorld($name){Write-Host ‘’Hello $name’’’}

Page 28: PowerShell - NIk Charlebois

Demo #4Fonctions de base

Page 29: PowerShell - NIk Charlebois

Fonctions avancées

• Introduites avec PowerShell v2.0

• Permette le « Piping »

• Sont réellement des Cmdlets déclarées (non-compilées)

• Param, Begin, Process

Page 30: PowerShell - NIk Charlebois

Fonctions avancées […]• Ex:

Function Write-HelloWorld{

[CmdletBinding()] param ( [Parameter(Mandatory=$True)] [string]$name

)process{Write-Host ‘’Hello $name’’}

}

Page 31: PowerShell - NIk Charlebois

Demo #5Fonctions avancées

Page 32: PowerShell - NIk Charlebois

Quand utiliser une Fonction vs un Cmdlet?• Ça dépend!

• Fonction est interprété, donc moins performant;

• Fonction est plus lisible, facile la réutilisation (selon moi);

• Cmdlet est plus performant et utilise .NET directement;

• Allez-y avec ce que vous êtes le plus à l’aise!

Page 33: PowerShell - NIk Charlebois

vNext

Page 34: PowerShell - NIk Charlebois

PowerShell à distancePowerShell Web AccessNouvelle fonctionnalité avec

Windows Server 2012

Permet de faire une session PowerShell dans le navigateur;

Page 35: PowerShell - NIk Charlebois

PowerShell Desired State Configuration (DSC)

Nouveau avec PowerShell v4 (Windows Server 2012 R2)

« Offre aux administrateurs un mécanisme pour pousser des configurations consistantes entre différentes machines ou serveurs »

Permet de spécifier à l’aide d’un script comment une machine devrait être configurée (rôles, services, etc.).

Page 36: PowerShell - NIk Charlebois

PowerShell Get (One-Get)

• Implémentation NuGet de PowerShell;• Toujours en bêta• https://msconfiggallery.cloudapp.net/

Page 37: PowerShell - NIk Charlebois

PowerShell Tools for Visual Studio

• Partenariat entre Microsoft et Adam Driscoll (MVP)

• Disponible depuis le 20 avril 2015;

Page 38: PowerShell - NIk Charlebois

Quest ions?