PowerShell - NIk Charlebois

Preview:

Citation preview

PowerShell: Une perspective du développeur

@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

@NikCharlebois […]

Auteur« Beginning PowerShell for SharePoint 2013 »

Amazon, Apress, Springer

The best shit since the Da Vinci Code- My Mom

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

Historique

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

Encore pire…

Console Application

Boîtes noires n’exposant aucunement la logique

Difficulté de réutilisation

Considéré comme étant une solution Dev

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

Survol

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;

Variables

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

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

Opérateurs de Conditions

Opérateur PowerShell

Équivalent .NET

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

Opérateurs de Logique

Opérateur PowerShell

Équivalent .NET

-and &&! !

-not !-or ||

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

Types .NET

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

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

.NET Assemblies

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

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

Objets .NET

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

Þ

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

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

Pousser les limites

PowerShell a accès à toutes les librairies .NET

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

Demo #1Interface Graphique

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”)

Demo #2Objets personnalisés

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.

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

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;

Demo #3Développer des Cmdlets avec Visual Studio

Fonctions

• Déclarées directement en PowerShell;

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

• Introduites avec PowerShell v1.0

Fonctions[…]

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

Demo #4Fonctions de base

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

Fonctions avancées […]• Ex:

Function Write-HelloWorld{

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

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

}

Demo #5Fonctions avancées

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!

vNext

PowerShell à distancePowerShell Web AccessNouvelle fonctionnalité avec

Windows Server 2012

Permet de faire une session PowerShell dans le navigateur;

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.).

PowerShell Get (One-Get)

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

PowerShell Tools for Visual Studio

• Partenariat entre Microsoft et Adam Driscoll (MVP)

• Disponible depuis le 20 avril 2015;

Quest ions?

Recommended