Question Fonction d'adressage IP
- Richard Lazaro
- Auteur du sujet
- Hors Ligne
- Membre platinium
-
- Messages : 530
- Remerciements reçus 0
Import-Module permet de le faire automatiquement via -Prefix.
Je ne l'avais jamais utilisé en fait ... honte à moi. C'est vrai que c'est pas forcement utile alors.
Laurent Dardenne écrit:
Le couplage C#-PS est judicieux pour la déclaration de classe, comme je m'efforce de tout faire en natif je vais peut être succomber à cet usage
Mais cela limite le script à PS v2
Enfait, je trouve cela très contraignant la mise en place de .dll ... après, il faut savoir que le Add-Type est limité ou j'ai pas su le pousser dans ses derniers retranchement. J'ai eu pas mal de soucis avec certains objet (Gestion des connections SQL et des objets de transactions) qui ne voulais pas trouver ... obligé de passer par la classe System.Object (que c'est crade)
Après, je me tourne sur l'avenir ... PS V1 est à la ramasse, pour moi si un system utilise PS v1 il est tout a fait possible de le passer à la v2. Et quand les gens ne sont pas sur PowerShell v2, ils sont le plus souvent sur du VBScript :/
Laurent Dardenne écrit:
Reste un point que je n'ai pas mentionné, la présence du Read-Host est à reconsidérer dans un contexte d'automatisation.
J'ai pris en compte le contexte d'automatisation, pour cela on valorisera le passage du masque dans le NetworkAddress sous la forme <IpAddress>/<Mask> (ex : 172..67.23.0/22)
C'est la meilleure façon que j'ai trouver pour donner le plsu de choix à l'utilisateur.
Laurent Dardenne écrit:
Pour la variable $OFS j'ai un doute sur sa portée globale ou locale à la fonction ou au pipe ?
Tu viens de me faire découvrir la variable $ofs ... d'ailleurs si tu pouvais m'en dire un peu plus, j'ai pas trouver de renseignement sur google :/
Laurent Dardenne écrit:
De renommer la propriété Hosts ou de lui coller un alias permettrait de lier la sortie de ta fonction à Test-Connection. Voir ce post, si ce n'est pas déjà fait.
Un alias vers ComputerName pour le pipe sur Test-Connection ?
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Par exemple ?En fait, je trouve cela très contraignant la mise en place de .dll ...
Richard Lazaro écrit:
Ici aussi, si tu as un exemple.J'ai eu pas mal de soucis avec certains objet (Gestion des connections SQL et des objets de transactions) qui ne voulais pas trouver
Richard Lazaro écrit:
Tu veux dire limitéAprès, je me tourne sur l'avenir ... PS V1 est à la ramasse
Richard Lazaro écrit:
Celle-ci est documentée, voir le fichier About_Preference_Variables.help.txt.Tu viens de me faire découvrir la variable $ofs ... d'ailleurs si tu pouvais m'en dire un peu plus, j'ai pas trouver de renseignement sur google :/
$OFS (Output Field Separator) est utilisé lors de la conversion d'un tableau en une chaîne.
Richard Lazaro écrit:
Oui, enfin c'est le premier qui me vient à l'esprit, ceux de WMI peuvent aussi être candidat.Un alias vers ComputerName pour le pipe sur Test-Connection ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Auteur du sujet
- Hors Ligne
- Membre platinium
-
- Messages : 530
- Remerciements reçus 0
Richard Lazaro écrit:
Par exemple ?En fait, je trouve cela très contraignant la mise en place de .dll ...
Ben, avoir une chemin. L'utilisateur copie mal, déplace le .ps1 sans la .dll (sauf si on la référence dans le gac) dans ce cas c'est des manip supplémentaire à faire .. etc. Elle est chiante Mme Michu ;]
Laurent Dardenne écrit:
Richard Lazaro écrit:
Ici aussi, si tu as un exemple.J'ai eu pas mal de soucis avec certains objet (Gestion des connections SQL et des objets de transactions) qui ne voulais pas trouver
Je me suis codé un petit module qui me permet de créer des connections à des BDD et executer des query SQL dessus avec une gestion des transactions.
J'ai donc créé un objet perso pour stocker tout cela et ya deux attributs :
connection [type : System.Data.OleDb.OleDbConnection]
transaction [type : System.Data.OleDb.OleDbTransaction]
Mais quand je les ai déclaré dans mon C# (dasn le Add-Type) celui ni ne voulait pas être interprété ... il merde sur l'assembly ou je sais pas trop quoi.
J'ai cherché un bon moment, pas trouvé et je suis donc passé avec un System.Object
Sinon, j'ai changé le nom de l'attribut de mon objet à ComputerName. Par contre, je vois pas comment faire des \"Alias\" en C# ... sinon je dois faire des doublons d'attributs mais c'est laid.
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Bah en c'est en faisant n'importe quoi qu'on devient n'importe quiElle est chiante Mme Michu ;]
De lier une DDL à un module via un fichier manifest.psd1, peut restreindre les cas d'erreurs.
On copie juste le répertoire du module :
[code:1]
#note: Les entrées absentes ne sont pas
# significatives dans ce contexte
@{
CLRVersion=\"2.0\"
GUID = 'f796dd07-541c-4ad8-bfac-a6f15c4b06a0'
#contient le code PS
ModuleToProcess=\"Log4Posh.psm1\"
ModuleVersion=\"1.0.0.0\"
PowerShellVersion=\"2.0\"
# StopLog indique si on on arrête le Framework de Log
#lors du déchargement du module.
PrivateData = @{StopLog = $True}
##recherche dans le répertoire du module ou dans le GAC (à vérifier)
RequiredAssemblies=\"log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821\"
}
[/code:1]
[Richard Lazaro écrit:
Il te manque peut être des références d'assemblies ?Mais quand je les ai déclaré dans mon C# (dasn le Add-Type) celui ni ne voulait pas être interprété ... il merde sur l'assembly ou je sais pas trop quoi.
Dans ce cas vérifie si ta portion de code compile sous Visual Studio ou un autre EDI.
[Richard Lazaro écrit:
Désolé, j'utilisais l'alias en tant que notion PowerShell, dans le code PS suivant :Sinon, j'ai changé le nom de l'attribut de mon objet à ComputerName.
Par contre, je vois pas comment faire des \"Alias\" en C#
[code:1]
...
$return = New-Object ThinkMS.TMSubnet -ArgumentList @(
$NetworkAddress,
$rtnSubnetMask,
$rtnWildcardMask,
$Mask,
$rtnNumberOfHosts,
$rtnNetworkAddress,
$rtnBroadcastAddress,
$rtnHosts)
$Return
$PSCmdlet.WriteObject($return)
...
[/code:1]
Tu crées un objet dotnet adapté par PS (PSObject), tu peux donc lui ajouter un alias avec Add-member avant de l'émettre dans le pipe :
[code:1]
...
$Return|Add-Member AliasProperty Hosts ComputerName
$PSCmdlet.WriteObject($return)
...
[/code:1]
Voir ce tutoriel
Soit tu codes l'alias dans le cmdlet, soit tu le codes à la volée dans chaque scripts et selon le besoin ( on peut vouloir lier tes objets à d'autres cmdlets) :
[code:1]
'127.4.0.2/22','10.34.0.9/31','165.45.23.0/12' |
Get-TMSubnet -Host |
Add-Member AliasProperty Hosts ComputerName -Passthru|
Test-Connection
#A tester
[/code:1]
Mais il me semble comprendre que tu crées des fonctions pour des utilisateurs/admins ?
Si c'est le cas peut être faut-il laisser en l'état et préciser ce point dans la doc.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Auteur du sujet
- Hors Ligne
- Membre platinium
-
- Messages : 530
- Remerciements reçus 0
Mais dieu sait que je l'utilise énormément pourtant juste mon projet actuel qui m'assomme on va dire ;]
Pour la .dll ... d'accord avec tout un module et autre. Mais dans mon cas, c'est juste une CmdletScript donc qui peut être mise partout, et transporter à droite et à gauche. Lui attacher une .dll c'est perdre un peu de cet adaptabilité, enfin c'est mon avis ^^.
Pour le Add-Type ... non j'ai tout essayé il me semble. La référence d'assembly est la première chose qui m'est venu à l'idée of course.
Bon allez, go le Add-Member dès mon temps libre
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Auteur du sujet
- Hors Ligne
- Membre platinium
-
- Messages : 530
- Remerciements reçus 0
As tu essayé sur mon script ?
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- Fonction d'adressage IP