Question mystère du formalisme avec les cast

Plus d'informations
il y a 17 ans 4 mois #3279 par blanc
Bonjour,
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.

Plus d'informations
il y a 17 ans 4 mois #3280 par Laurent Dardenne
Salut,
noel écrit:

Dans le livre \"de référence\" et dans ce forum, je trouve souvent des instructions de cast comme \"[WMI], [WMIClass], [WMIsearcher]...\", parfois \"[WMI]''\",

Ici il ne s'agit pas d'un cast mais d'un raccourcis de type, plus précisément d'un nom de classe :
[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.

Plus d'informations
il y a 17 ans 4 mois #3284 par blanc
Je comprends mieux ma confusion entre cast et raccourci d'écriture.
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.

Plus d'informations
il y a 17 ans 4 mois #3285 par blanc
Je comprends mieux ma confusion entre cast et raccourci d'écriture.
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.

Plus d'informations
il y a 17 ans 4 mois #3286 par Laurent Dardenne
noel écrit:

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.

Là faut poser ta question à Bruce Payette !
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:

Il doit bien y avoir une commande pour l'afficher.

Si elle existe je ne la connais pas.
noel écrit:

Ai je bien compris ce qui suit?

Oui je pense, à ceci près :
noel écrit:

[datetime]::Now appelle la méthode now d'une classe static datetime de l'espace de nom \"system\" je crois.

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.
noel écrit:

Le format des dates wmi et .net sont différents et il y a souvent des cast à faire

C'est plus de la conversion qu'un cast. WMI étant multi-plateforme.
noel écrit:

N'ayant pas trop bien compris le formalisme suivant :
$c = Get-WmiObject -list |where {$_.Name -eq \"Win32_Process\"}

Là tu récupères la définition partiel de la classe WMI(cf. fichier MOF), enfin à vérifier
noel écrit:

J'ai voulu créer une instance de Win32_Process avec:
$d = gwmi -class Win32_Process

Ici tu récupères la liste de tous les process du référentiel WMI.
noel écrit:

Est ce exact?

Rapido, je dirais oui.
noel écrit:

Je n'ai pas encore compris comment remplir les paramètres de lancement du processus. Mais j'ai espoir.

Là faut creuser le fonctionnement de WMI, peut être qq infos ici mais pourquoi passer par WMI ?
J'utilise WMI quand je ne peux pas faire autrement ou pour le remote, la classe process existe en .NET.
noel écrit:

Je fais trop long.

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

Alors je fais pas souvent.

Il ne faut pas te gêner, le seul risque que tu prends est, au pire, de ne pas avoir de réponse ;-)
noel écrit:

Ce n'est pas le lieu d'une formation.

Certe mais le lieu d'échanges certainement.En même temps faut être patient et bosser un peu de son coté.
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.

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