Project

General

Profile

Function New-Struct » History » Version 4

Laurent Dardenne, 09/15/2009 03:34 PM

1 1 Laurent Dardenne
h1. Function New-Struct
2 2 Laurent Dardenne
3 1 Laurent Dardenne
<pre>function New-Struct param([HashTable]$Structs) </pre>
4 3 Laurent Dardenne
Cette fonction permet de créer une structure (struct en C#) : 
5 3 Laurent Dardenne
<pre>
6 3 Laurent Dardenne
New-Struct @{Album=@{Numero=[Int32];Titre=[String]}}
7 3 Laurent Dardenne
$A=new-object Album
8 3 Laurent Dardenne
$A.Numero=7
9 3 Laurent Dardenne
$A.Titre="SLF"
10 3 Laurent Dardenne
</pre>
11 3 Laurent Dardenne
ou des structures imbriquées :
12 3 Laurent Dardenne
<pre>
13 3 Laurent Dardenne
 #Windowinfo -> http://msdn.microsoft.com/en-us/library/ms632610(VS.85).aspx
14 3 Laurent Dardenne
$R=@{
15 3 Laurent Dardenne
     Rect=@{
16 3 Laurent Dardenne
       Left=[UInt32];
17 3 Laurent Dardenne
       Top=[UInt32];
18 3 Laurent Dardenne
       Right=[UInt32];
19 3 Laurent Dardenne
       Bottom=[UInt32];
20 3 Laurent Dardenne
     }; 
21 3 Laurent Dardenne
    Windowinfo=@{
22 3 Laurent Dardenne
       cbSize=[UInt32];
23 3 Laurent Dardenne
       rcWindow="Rect";
24 3 Laurent Dardenne
       rcClient="Rect";
25 3 Laurent Dardenne
       dwStyle=[UInt32];
26 3 Laurent Dardenne
       dwExStyle=[UInt32];
27 3 Laurent Dardenne
       dwWindowStatus=[UInt32];
28 3 Laurent Dardenne
       cxWindowBorders=[UInt16];
29 3 Laurent Dardenne
       cyWindowBorders=[UInt16];
30 3 Laurent Dardenne
       atomWindowType=[UInt16];
31 3 Laurent Dardenne
       wCreatorVersion=[UInt16];
32 3 Laurent Dardenne
    }
33 3 Laurent Dardenne
} 
34 3 Laurent Dardenne
New-Struct $R
35 3 Laurent Dardenne
$Wi=new-object WindowInfo
36 3 Laurent Dardenne
$Wi
37 3 Laurent Dardenne
$Wi.RcClient
38 3 Laurent Dardenne
</pre>
39 4 Laurent Dardenne
Il est possible de créer un tableau de structure :
40 4 Laurent Dardenne
<pre>
41 4 Laurent Dardenne
 #Crée un tableau d'album à une dimension contenant  4 éléments
42 4 Laurent Dardenne
$TabAlbum= new-object Album[]  4
43 4 Laurent Dardenne
$TabAlbum[0]=$A
44 4 Laurent Dardenne
$TabAlbum[0]
45 4 Laurent Dardenne
$TabAlbum[0].Titre
46 4 Laurent Dardenne
</pre>
47 4 Laurent Dardenne
48 3 Laurent Dardenne
Une fois créée une structure ne peut plus être modifiée dans la session PowerShell courante.
49 3 Laurent Dardenne
Un assembly chargé dans un domaine d'application .NET ne peut plus être déchargé, à moins de créer un domaine d'application dédié.
50 3 Laurent Dardenne
51 3 Laurent Dardenne
Par défaut cela n'est pas possible sous PowerShell, on doit utiliser les classes .NET dédiées.