powershell - nik charlebois
Post on 30-Jul-2015
114 Views
Preview:
TRANSCRIPT
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?
top related