Flash info

Les vrais admins utilisent la ligne de commande... (dixit le mag Windows IT Pro du 6/02/07) Avis aux amateurs pour affirmer leur virilité Surprised.
La suite est ici.

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5468
graph
Karma: 204  
[Tutoriel] Les classes sous Powershell v5 - 25/10/15 09:57 Salut,
voici un document sur la mise en œuvre des classes sous Powershell version 5 preview, ce n'est pas un cours sur la POO.

Le chapitre 3,'Introduction', aborde les principes de base de la syntaxe d'une classe.
Le chapitre 5 'Compléments' passe en revue les différentes possibilités et limite de la version actuelle.

Bonne lecture.



1 RAPPEL 4
2 A PROPOS DE TYPE 5
3 INTRODUCTION 6
3.1 CONSTRUCTEUR 6
3.2 PROPRIETE 8
3.2.1 Préciser un type 8
3.2.2 Valeur par défaut 9
3.2.1 Attributs de validation 9
3.2.2 Hidden 9
3.3 METHODE 11
3.3.1 $This 11
3.3.2 Paramètre 12
3.3.3 Valeur de retour 14
3.3.4 Hidden 16
3.3.5 Usage de variable Powershell 16
3.3.6 Surcharge de méthode 17
4 ENUM 21
5 COMPLEMENTS 23
5.1 CONSTRUCTEUR 23
5.1.1 Initialiseur 23
5.1.2 Statique 27
5.1.3 Exception 28
5.2 PROPRIETE 29
5.2.1 Attributs de validation 29
5.2.2 Statique 30
5.2.3 Valeur par défaut 31
5.2.4 Scope 33
5.2.5 Accesseurs 34
5.3 METHODE 35
5.3.1 Statique 35
5.3.2 Exception 36
6 AUTRES ASPECTS 37
6.1 PROPRIETE DE TYPE SCRIPTBLOCK 37
6.2 SCOPE 37
6.2.1 Script 40
6.2.2 Module 42
6.3 HERITAGE 47
6.3.1 Appel d’un constructeur d’une classe de base 48
6.3.2 Substitution de méthode 50
6.3.3 Classe générique 52
6.4 INTERFACE 54
6.5 INDEXEUR 56
6.5.1 Usage dans une boucle Foreach 57
6.5.2 Redéfinir la propriété Count 58
6.5.3 Accès multiple 60
6.5.4 Interface et indexeur 61
6.6 DELEGUE 62
6.7 VARIABLE LIEE 63
6.8 SURCHARGE D’OPERATEUR 64
6.8.1 Additionner des choux ou des carottes 67
6.8.2 Un peu de cast..agne 68
6.8.3 Liste des opérateurs 74
6.9 SERIALISATION 75
7 INTERACTION C# ET CLASSE POWERSHELL 78
7.1 ADD-TYPE 78
7.2 HERITAGE D’UNE CLASSE C# 81
7.3 HERITAGE DE CLASSE ENTRE MODULES 82
8 DSC 84
9 CONCLUSION 85


Un complément (C#) sur les classes sans constructeur :
http://codeblog.jonskeet.uk/2016/01/08/to-base-or-not-to-base-that-is-the-question/

[ref] doesn't work with class members

Résolution de conflit lorsqu'une classe possède une méthode statique nommée New

using assembly and class

Return dans une classe
[gotcha]Cannot Implement an Interface with Properties.

v6 bug de déclaration d'Enum corrigé

Bug avec new-module 5.1 et 6 alpha.

Breaking change PowerShell class instance methods cannot run concurrently 5.0 -> 5.1 ?

Bug 5.0->5.1

Class-definition syntax should support calling the same class's other constructors

Creating A DSC Class-Based Resource

Bug autour de 'FunctionToExport' ou 'CmdletToExport'

Apostrophe in filepath breaks Import-Module when the module has a class in it

bug: If a module 'test' has multiple nested .psm1 modules that define powershell classes, then `using module test` can only load the classes defined in `test.psm1` but not other .psm1 files

Inheritance from interface and class are inconsistent

Module d'aide à la création d'interface.

les membres ETS prime sur les membres de classe.
Message édité par: Laurent Dardenne, à: 26/05/17 17:37

Message édité par: Laurent Dardenne, à: 4/07/17 07:34

Message édité par: Laurent Dardenne, à: 17/07/17 07:19

Message édité par: Laurent Dardenne, à: 22/07/17 08:09

Message édité par: Laurent Dardenne, à: 8/11/17 09:41

Message édité par: Laurent Dardenne, à: 10/11/17 11:13

Message édité par: Laurent Dardenne, à: 13/12/17 13:37

Message édité par: Laurent Dardenne, à: 18/03/18 19:43
Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5468
graph
Karma: 204  
Re:[Tutoriel] Les classes sous Powershell v5 - 24/11/15 08:56 Un bug (plutôt une limite) qui ne sera pas résolu. Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5468
graph
Karma: 204  
Re:[Tutoriel] Les classes sous Powershell v5 - 8/02/16 11:21 On peut créer des exceptions :
Code:

  $Error.Clear() $result=Start-job -ScriptBlock { class myException:System.ApplicationException{     myException()     {     }     myException([string$message):base($message)     {     }     myException([string$message, [System.Exception$innerException)     : base($message$innerException)     {     } }  throw (New-Object myException "My error inside job") }|Receive-Job -Wait -AutoRemoveJob $e=$Error[0] $e.Exception.GetType() $e.Exception|select *


Sous réserve de rester dans l'environnement PS, car l'attribut [Serializable()] n'est pas accessible,
Ceci ne pose pas de problème dans le remoting :


The remote instance of Windows PowerShell can be a separate application domain, process, or computer.
This remote entity can be PS.exe (the default host application) or a custom host application.

The type of the original exception might not be available in the local application domain, process, or computer,
so the original exception is available only as a serialized PSObject object.
Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5468
graph
Karma: 204  
Re:[Tutoriel] Les classes sous Powershell v5 - 14/07/16 11:46 Fonction permettant de déterminer si une instance de classe est une classe Powershell native :
Code:

 function Test-PowershellDynamicClass { #Teste si le type est une classe PS dynamique #requiert PS v5 # Test-PowershellDynamicClass Psobject # Test-PowershellDynamicClass MyClass  # extrait et adapté de  https://github.com/PowerShell/PowerShell-Tests  Param (    [ValidateNotNullOrEmpty()]    [Parameter(Position=0Mandatory=$true,ValueFromPipeline $true)]    [type$Type  )  Process {     $attrs = @($Type.Assembly.GetCustomAttributes($true))      $result = @($attrs Where $_  -is [System.Management.Automation.DynamicClassImplementationAssemblyAttribute] })      return ($result.Count -eq 1)  } }



Message édité par: Laurent Dardenne, à: 23/08/16 12:25
Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5468
graph
Karma: 204  
Re:[Tutoriel] Les classes sous Powershell v5 - 4/03/17 09:41 L'usage de using module autorise la qualification d'un nom de classe avec le nom du module qui l'héberge :
Code:

  [NomDeClasse] [NomDeModule.NomDeClasse]

Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5468
graph
Karma: 204  
Re:[Tutoriel] Les classes sous Powershell v5 - 14/04/18 09:48 Un post référençant les points à améliorer et à corriger. Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
© 2018 PowerShell-Scripting.com