Question Fonction d'adressage IP

Plus d'informations
il y a 15 ans 8 mois #7433 par Richard Lazaro
Réponse de Richard Lazaro sur le sujet Re:Fonction d'adressage IP
Laurent Dardenne écrit:

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.

Plus d'informations
il y a 15 ans 7 mois #7435 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Fonction d'adressage IP
Richard Lazaro écrit:

En fait, je trouve cela très contraignant la mise en place de .dll ...

Par exemple ?
Richard Lazaro écrit:

J'ai eu pas mal de soucis avec certains objet (Gestion des connections SQL et des objets de transactions) qui ne voulais pas trouver

Ici aussi, si tu as un exemple.
Richard Lazaro écrit:

Après, je me tourne sur l'avenir ... PS V1 est à la ramasse

Tu veux dire limité :-)
Richard Lazaro écrit:

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 :/

Celle-ci est documentée, voir le fichier About_Preference_Variables.help.txt.
$OFS (Output Field Separator) est utilisé lors de la conversion d'un tableau en une chaîne.
Richard Lazaro écrit:

Un alias vers ComputerName pour le pipe sur Test-Connection ?

Oui, enfin c'est le premier qui me vient à l'esprit, ceux de WMI peuvent aussi être candidat.

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 7 mois #7437 par Richard Lazaro
Réponse de Richard Lazaro sur le sujet Re:Fonction d'adressage IP
Laurent Dardenne écrit:

Richard Lazaro écrit:

En fait, je trouve cela très contraignant la mise en place de .dll ...

Par exemple ?


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:

J'ai eu pas mal de soucis avec certains objet (Gestion des connections SQL et des objets de transactions) qui ne voulais pas trouver

Ici aussi, si tu as un exemple.


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 :whistle:

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.

Plus d'informations
il y a 15 ans 7 mois #7438 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Fonction d'adressage IP
Richard Lazaro écrit:

Elle est chiante Mme Michu ;]

Bah en c'est en faisant n'importe quoi qu'on devient n'importe qui ;-)
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:

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.

Il te manque peut être des références d'assemblies ?
Dans ce cas vérifie si ta portion de code compile sous Visual Studio ou un autre EDI.
[Richard Lazaro écrit:

Sinon, j'ai changé le nom de l'attribut de mon objet à ComputerName.
Par contre, je vois pas comment faire des \"Alias\" en C#

Désolé, j'utilisais l'alias en tant que notion PowerShell, dans le code PS suivant :
[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.

Plus d'informations
il y a 15 ans 7 mois #7439 par Richard Lazaro
Réponse de Richard Lazaro sur le sujet Re:Fonction d'adressage IP
Putain, je suis con ... j'avais zappé le Add-Member :/
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 :p

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.

Plus d'informations
il y a 15 ans 7 mois #7440 par Richard Lazaro
Réponse de Richard Lazaro sur le sujet Re:Fonction d'adressage IP
Je ne dois pas bien écrire le Add-Member car je n'arrive pas à rajouter l'AliasProperty à mon obj $return.

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.

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