powershell - nik charlebois
TRANSCRIPT
![Page 1: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/1.jpg)
PowerShell: Une perspective du développeur
![Page 2: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/2.jpg)
@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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/3.jpg)
@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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/5.jpg)
Historique
![Page 6: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/9.jpg)
Survol
![Page 10: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/12.jpg)
Opérateurs de Conditions
Opérateur PowerShell
Équivalent .NET
-eq =-le <=-ge >=-ne !=-gt >-lt <
![Page 13: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/13.jpg)
Opérateurs de Logique
Opérateur PowerShell
Équivalent .NET
-and &&! !
-not !-or ||
![Page 14: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/15.jpg)
Types .NET
[System.DateTime]::NowÞ 23 Avril 2015 14:48:14
[System.Console]::Beep()Þ BEEEEEEEEP
![Page 16: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/16.jpg)
.NET Assemblies
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
Þ GAC = True, Version=[…], Location = […]
![Page 17: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/19.jpg)
Demo #1Interface Graphique
![Page 20: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/21.jpg)
Demo #2Objets personnalisés
![Page 22: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/25.jpg)
Demo #3Développer des Cmdlets avec Visual Studio
![Page 26: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/27.jpg)
Fonctions[…]
• Ex:Function HelloWorld($name){Write-Host ‘’Hello $name’’’}
![Page 28: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/28.jpg)
Demo #4Fonctions de base
![Page 29: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/30.jpg)
Fonctions avancées […]• Ex:
Function Write-HelloWorld{
[CmdletBinding()] param ( [Parameter(Mandatory=$True)] [string]$name
)process{Write-Host ‘’Hello $name’’}
}
![Page 31: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/31.jpg)
Demo #5Fonctions avancées
![Page 32: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/33.jpg)
vNext
![Page 34: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/34.jpg)
PowerShell à distancePowerShell Web AccessNouvelle fonctionnalité avec
Windows Server 2012
Permet de faire une session PowerShell dans le navigateur;
![Page 35: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/36.jpg)
PowerShell Get (One-Get)
• Implémentation NuGet de PowerShell;• Toujours en bêta• https://msconfiggallery.cloudapp.net/
![Page 37: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/37.jpg)
PowerShell Tools for Visual Studio
• Partenariat entre Microsoft et Adam Driscoll (MVP)
• Disponible depuis le 20 avril 2015;
![Page 38: PowerShell - NIk Charlebois](https://reader036.vdocuments.site/reader036/viewer/2022062406/55b93de8bb61ebba7d8b46e6/html5/thumbnails/38.jpg)
Quest ions?