Question [Résolu] Paramètres de fonction à choix multiples

Plus d'informations
il y a 7 ans 10 mois #21894 par Philippe
Bonjour à tous,

Je suis en quête d'une solution a un appel d'une fonction où certains paramètres sont au conditionnel et où le créateur n'as pas implémenté le pipeline ni/ou les positions.
Du coup impossible de l'appeler avec un objet
[code:1]$Object = New-Object PSObject -Property @{
DeploymentType = $DeploymentType
Edition = $Edition
Verbose = $true
}
If ($ComputerName) { $Object | Add-Member -NotePropertyName ComputerName -NotePropertyValue $ComputerName }
If ($EnableRemoteManagementPort) { $Object | Add-Member -NotePropertyName EnableRemote -NotePropertyValue $true }

$Object | New-LaFunction[/code:1]

et forcement si je lance la commande
[code:1]New-LaFunction -ComputerName $ComputerName -DeploymentType $DeploymentType etc....[/code:1]
avec $ComputerName vide, il me sort une erreur.

Voila en gros où j'en suis et je me dit qu'il doit bien y avoir une solution.
Style : call(lafunction, lesarguements)
ou alors un modificateur a la volé :
update-function -name lafunction -allparam [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
J'en demande trop sur le dernier? Mouai, certainement ;)

Je précise par avance que cette fonction est tiré d'un module fait par une autre personne. Pour des raisons d'évolution, je ne peux pas le modifier.

Merci par avance de votre aide.

Très cordialement

Morta

Message édité par: Mortasgus, à: 6/06/16 11:24<br><br>Message édité par: Mortasgus, à: 10/06/16 16:58

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 10 mois #21911 par Laurent Dardenne
SaLut,
peux-tu nous communiquer l'entête de la fonction ( clause param) et nous dire quels blocs sont implémentés (begin,process,end) ?<br><br>Message édité par: Laurent Dardenne, à: 8/06/16 00:24

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 10 mois #21914 par Philippe
Bonjour Laurent,

la fonction est New-NanoServerImage que tu peux retrouver sur l'ISO de Windows Server 2016 Technical Preview 5
dans le répertoire NanoServer\NanoServerImageGenerator\NanoServerImageGenerator.psm1

Le module est en PJ.

La pièce jointe NanoServerImageGenerator.txt est absente ou indisponible



Si cela peux vous aider.

Cordialement.

Morta<br><br>Message édité par: Mortasgus, à: 8/06/16 16:51

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 10 mois #21920 par Laurent Dardenne
Mortasgus écrit:

où certains paramètres sont au conditionnel

Que veux-tu dire par là ? Tu parles des paramètre de type de switch ?

Mortasgus écrit:

où le créateur n'as pas implémenté le pipeline ni/ou les positions.

Pour quels scénarios ?

Qu'est-ce que tu cherches à faire exactement ?

En attendant tes réponses, regarde si le splatting peut t'aider.
Enfin dans ton cas le mieux serait de poster ta demande d'évolution/correction ici .

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 10 mois #21924 par Philippe
Bonjour Laurent,

J'avais essayé le splatting avec new-macommande @Object sous plusieurs formes mais ça n'avais pas l'air de marcher.
Nouvelle tentative ce jour et ça passe déjà mieux... Va comprendre Charle... Une formulation de la variable que je n'avais pas due essayer sans doute.

Le scénario:
hummm : L'idée c'est un winpe sur une clé usb ou un iso bootable où il y a un fichier HTA automatiquement lancé qui contient des pages de configurations pour générer une installation personnalisée d'un nanoserver. Diskpart, récupérer des informations, VBscript, envoi du tout à un petit ps1 powershell qui va créer l'image wim voulu avec les options choisis et la déployer sur le disque nouvelle préparer. Bcdboot, reboot et hop nouveau nanoserver prêt à être utilisé.

Merci pour l'url, je connaissais social.technet.microsoft.com/Forums/wind...ome?forum=NanoServer et blogs.technet.microsoft.com/nanoserver/2...ew-nano-server-blog/ pour les nano serveurs ;) mais pas celle-ci.

Je teste tout ça et je vous fait un retour.

Merci

Morta

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 10 mois #21930 par Philippe
C'est bon, avec la bonne écriture de l'objet, ça fonctionne.

[code:1]$Object = @{
'DeploymentType' = $DeploymentType;
'Edition' = $Edition;
'Verbose' = $true;
}
If ($ComputerName) { $Object.add('ComputerName', $ComputerName) }

New-NanoServerImage @Object[/code:1]

Merci à vous ;)

Morta

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.086 secondes
Propulsé par Kunena