1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
#----------Function
#New-PSCustomObjectFunction -Noun UserInfo -Parameters Name,Groupe -File
Function New-UserInfo{
#crée un objet User de test
param(
[Parameter(Mandatory=$True,position=0)]
[string]$Name,
[Parameter(Mandatory=$True,position=1)]
[string[]]$Groupe
)
[pscustomobject]@{
PSTypeName='UserInfo';
Name=$Name;
Groupe=$Groupe;
}
}# New-UserInfo
Function New-PSCustomObjectFunctionGroupe {
#crée une fonction génèrant un objet personnalisé simple
#tous ses paramètresne sont pas typé
#
# Par défaut génère du code sans la signature du mot clé Function
# Le paramètre -FILE génére du code avec la signature du mot clé Function
# Le paramètre -AsPSVariableProperty génére un objet dont
# les propriétés sont basées sur la classe PSVariableProperty. Requière le module PSObjectHelper
param(
[Parameter(Mandatory=$true,position=0)]
[ValidateNotNullOrEmpty()]
$Noun,
[Parameter(Mandatory=$true,position=1)]
[ValidateNotNullOrEmpty()]
[String[]]$Parameters,
[switch] $File,
[switch] $AsPSVariableProperty
)
$ofs=' '
$Borne=$Parameters.count-1
$code=@"
#Requires -version 3
$(if ($AsPSVariableProperty) {"#Requires -Modules PSObjectHelper"})
$(if ($File) {"Function New-$Noun{"})
param(
$(For ($I=0;$I -le $Borne;$I++)
{ $Name=$Parameters[$I]
@"
`t [Parameter()]
`t`$${Name}$(if ($I -Ne $borne) {",`r`n"})
"@
}
)
)
$( if ($AsPSVariableProperty)
{
@'
$O=[pscustomobject]@{
PSTypeName=$Noun
}
$PSBoundParameters.GetEnumerator()|
Foreach {
$O.PSObject.Properties.Add( (New-PSVariableProperty $_.Key $_.Value -ReadOnly) )
}
$O
'@
}
else
{
"`r`n [pscustomobject]@{`r`n"
" PSTypeName='$Noun';"
$( $Parameters|
Foreach {
"`r`n {0}=`${1};" -F $_,$_
}
)
"`r`n }"
}#else
)
$(if ($File) {"`r`n}# New-$Noun"})
"@
$Code
}#New-PSCustomObjectFunctionGroupe |
Partager