Question
mystère du formalisme avec les cast
- blanc
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 54
- Remerciements reçus 0
Dans le livre \"de référence\" et dans ce forum, je trouve souvent des instructions de cast comme \"[WMI], [WMIClass], [WMIsearcher]...\", parfois \"[WMI]''\", voire même \"[WMI]::\" mais pour ce dernier je ne suis pas si sûr de moi avec WMI (peut être pour appeler une méthode \"static\" de conversion de date?).
Je sais \"un peu\" de quoi il retourne car je \"caste\" en C. Au passage, je conçois de manière primaire les objets avec d'un côté la notion de classe de l'objet et de l'autre celle d'instance de l'objet. J'ai l'impression que le vocable \"type\" souvent employé avec PS est en fait une classe.
Pour en revenir aux casts, comment trouver tous ces noms qui apparaissent entre crochets et qui me semblent parachutés? Où est expliqué le formalisme \"[WMI]''\" avec deux simples cote?
Je relis encore le livre cet après midi...
Je vous remercie d'avance si vous pouvez me faire comprendre le mystère de ce parachutage....le formalisme, et les concepts sous-jaccents.
Mais la tâche sera rude;)
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
noel écrit:
Ici il ne s'agit pas d'un cast mais d'un raccourcis de type, plus précisément d'un nom de classe :Dans le livre \"de référence\" et dans ce forum, je trouve souvent des instructions de cast comme \"[WMI], [WMIClass], [WMIsearcher]...\", parfois \"[WMI]''\",
[code:1]
PS > [wmi]
IsPublic IsSerial Name BaseType
----
True True ManagementObject System.Management.ManagementBaseObject
[/code:1]
Cela évite la saisie du nom complet de la classe et ce pour les classes que l'équipe de dev a jugée comme étant les plus fréquentes.
[code:1]
voire même \"[WMI]::\" mais pour ce dernier je ne suis pas si sûr de moi avec WMI (peut être pour appeler une méthode \"static\" de conversion de date?).
[/code:1]
Oui c'est un appel de méthode static. Cette syntaxe est utilisée pour toutes les classes.
[code:1]
J'ai l'impression que le vocable \"type\" souvent employé avec PS est en fait une classe.
[/code:1]
Oui par abus de langage, en même temps le terme 'cast' est traduit en Français par transtypage. Class en anglais signifie aussi genre, catégorie.
La confusion provient souvent d'un choix de traduction discutable, par exemple la réfléxion...
[code:1]
Pour en revenir aux casts, comment trouver tous ces noms qui apparaissent entre crochets et qui me semblent parachutés ?
[/code:1]
Recherche sur le blog de l'équipe de dev de PS. Le .doc livré avec PS contient les plus courants.
[code:1]
Où est expliqué le formalisme \"[WMI]''\" avec deux simples cote?
[/code:1]
As-tu un exemple précis ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- blanc
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 54
- Remerciements reçus 0
La page thepowershellguy.com/blogs/posh/archive/...me-of-a-service.aspx
montre un emploi de \"[WMI]''\" avec ([WMI]'').ConvertToDateTime($toto)
J'avoue que je reste dans l'expectative. Et peut importe l'écriture plus \"efficace\" finale, c'est le formalisme qui m'interpelle.
Je vais reprendre le .doc pour chercher les fameux raccourcis mais je n'ai pas de souvenir d'en avoir vu. Ils devraient bien se retrouver dans msdn/library mais je n'ai trouvé que cela :
blogs.msdn.com/powershell/archive/2006/06/26/647038.aspx
Mais il ne dit pas où trouver les mots clés dans msdn/library. La liste n'est pas uniquement définit dans le blog:
blogs.msdn.com/powershell/archive/2006/07/12/663540.aspx
Il doit bien y avoir une commande pour l'afficher.
Ai je bien compris ce qui suit?
- un appel :
[datetime]::Now appelle la méthode now d'une classe static datetime de l'espace de nom \"system\" je crois.
- un cast (inutile car automatique) de l'int32 de now.day en string
$s = [string] [datetime]::now.day
Le format des dates wmi et .net sont différents et il y a souvent des cast à faire mais je ne retrouve plus les liens que j'ai lu à ce sujet, peut être même est ce dans ce site qui est presque une bible.
J'ose à peine parler du point suivant. Tant pis je me lance.
N'ayant pas trop bien compris le formalisme suivant :
$c = Get-WmiObject -list |where {$_.Name -eq \"Win32_Process\"}
J'ai voulu créer une instance de Win32_Process avec:
$d = gwmi -class Win32_Process
Mais ce n'est pas un objet de même classe/type
(j'ai vu plus loin que l'on peut le faire facilement avec $c = [WMICLASS]\"root\cimv2:WIn32_Process\")
$c | gm
TypeName: System.Management.ManagementClass#ROOT\cimv2\Win32_Process
$d | gm
TypeName: System.Management.ManagementObject#root\cimv2\Win32_Process
$c est une classe et $d semble être une instance \"vide\". Est ce exact?
Avec $c on lance un prg :
$c.Create(\"Calc.exe\")
Je n'ai pas encore compris comment remplir les paramètres de lancement du processus. Mais j'ai espoir.
Je fais trop long. Je sais. Alors je fais pas souvent. Ce n'est pas le lieu d'une formation. Mais je m'efforce de ne pas abuser.
Merci d'avance.
Connexion ou Créer un compte pour participer à la conversation.
- blanc
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 54
- Remerciements reçus 0
La page thepowershellguy.com/blogs/posh/archive/...me-of-a-service.aspx
montre un emploi de \"[WMI]''\" avec ([WMI]'').ConvertToDateTime($toto)
J'avoue que je reste dans l'expectative. Et peut importe l'écriture plus \"efficace\" finale, c'est le formalisme qui m'interpelle.
Je vais reprendre le .doc pour chercher les fameux raccourcis mais je n'ai pas de souvenir d'en avoir vu. Ils devraient bien se retrouver dans msdn/library mais je n'ai trouvé que cela :
blogs.msdn.com/powershell/archive/2006/06/26/647038.aspx
Mais il ne dit pas où trouver les mots clés dans msdn/library. La liste n'est pas uniquement définit dans le blog:
blogs.msdn.com/powershell/archive/2006/07/12/663540.aspx
Il doit bien y avoir une commande pour l'afficher.
Ai je bien compris ce qui suit?
- un appel :
[datetime]::Now appelle la méthode now d'une classe static datetime de l'espace de nom \"system\" je crois.
- un cast (inutile car automatique) de l'int32 de now.day en string
$s = [string] [datetime]::now.day
Le format des dates wmi et .net sont différents et il y a souvent des cast à faire mais je ne retrouve plus les liens que j'ai lu à ce sujet, peut être même est ce dans ce site qui est presque une bible.
J'ose à peine parler du point suivant. Tant pis je me lance.
N'ayant pas trop bien compris le formalisme suivant :
$c = Get-WmiObject -list |where {$_.Name -eq \"Win32_Process\"}
J'ai voulu créer une instance de Win32_Process avec:
$d = gwmi -class Win32_Process
Mais ce n'est pas un objet de même classe/type
(j'ai vu plus loin que l'on peut le faire facilement avec $c = [WMICLASS]\"root\cimv2:WIn32_Process\")
$c | gm
TypeName: System.Management.ManagementClass#ROOT\cimv2\Win32_Process
$d | gm
TypeName: System.Management.ManagementObject#root\cimv2\Win32_Process
$c est une classe et $d semble être une instance \"vide\". Est ce exact?
Avec $c on lance un prg :
$c.Create(\"Calc.exe\")
Je n'ai pas encore compris comment remplir les paramètres de lancement du processus. Mais j'ai espoir.
Je fais trop long. Je sais. Alors je fais pas souvent. Ce n'est pas le lieu d'une formation. Mais je m'efforce de ne pas abuser.
Merci d'avance.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Là faut poser ta question à Bruce Payette !montre un emploi de \"[WMI]''\" avec ([WMI]'').ConvertToDateTime($toto)
J'avoue que je reste dans l'expectative. Et peut importe l'écriture plus \"efficace\" finale, c'est le formalisme qui m'interpelle.
Il n'y a pas beaucoup de raccourcis de ce type,
dir ~ ( pour le chemin par défaut d'un provider je crois)
% (pour Foreach-Object)
? (pour Where-Object)
noel écrit:
Si elle existe je ne la connais pas.Il doit bien y avoir une commande pour l'afficher.
noel écrit:
Oui je pense, à ceci près :Ai je bien compris ce qui suit?
noel écrit:
C'est une structure, en Net un type valeur, alloué sur la pile pas dans le heap, et elle n'est pas statique c'est la méthode now qui l'est.[datetime]::Now appelle la méthode now d'une classe static datetime de l'espace de nom \"system\" je crois.
noel écrit:
C'est plus de la conversion qu'un cast. WMI étant multi-plateforme.Le format des dates wmi et .net sont différents et il y a souvent des cast à faire
noel écrit:
Là tu récupères la définition partiel de la classe WMI(cf. fichier MOF), enfin à vérifierN'ayant pas trop bien compris le formalisme suivant :
$c = Get-WmiObject -list |where {$_.Name -eq \"Win32_Process\"}
noel écrit:
Ici tu récupères la liste de tous les process du référentiel WMI.J'ai voulu créer une instance de Win32_Process avec:
$d = gwmi -class Win32_Process
noel écrit:
Rapido, je dirais oui.Est ce exact?
noel écrit:
Là faut creuser le fonctionnement de WMI, peut être qq infos ici mais pourquoi passer par WMI ?Je n'ai pas encore compris comment remplir les paramètres de lancement du processus. Mais j'ai espoir.
J'utilise WMI quand je ne peux pas faire autrement ou pour le remote, la classe process existe en .NET.
noel écrit:
Déjà de suivre la régle une question (un sujet)-un post ça aiderai. A mons avis plus les échanges sont brefs plus la base de connaissances, que constitue un forum en ligne, est pertinente.Je fais trop long.
Trop long ? Non puisqu'on peut répondre rapidement à tes questions, il faut aussi prendre le temps d'énoncer clairement la question et/ou le pb.
noel écrit:
Il ne faut pas te gêner, le seul risque que tu prends est, au pire, de ne pas avoir de réponseAlors je fais pas souvent.
noel écrit:
Certe mais le lieu d'échanges certainement.En même temps faut être patient et bosser un peu de son coté.Ce n'est pas le lieu d'une formation.
Ce forum reste agréable à fréquenter à la différence d'autres où on trouve des personnes n'ayant pas la force de tourner les pages d'un livre ou de saisir une requête sur Google.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- mystère du formalisme avec les cast