Question
[Résolu] Objet COM Network list manager
- JoJo
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 15 ans 5 mois #8282
par JoJo
[Résolu] Objet COM Network list manager a été créé par JoJo
Bonjour,
Je cherche à utiliser l'API introduite dans windows vista \"Network List Manager\", afin de determiner les propriétés de connexion des cartes réseaux (Type de réseau, Connectivité). Je cherche notamment à récupérer le GUID de la carte en question. j'utilise le script suivant sur un windows 7 entreprise
[code:1]$NLMType = [Type]::GetTypeFromCLSID(‘DCB00C01-570F-4A9B-8D69-199FDBA5723B’)
$INetworkListManager = [Activator]::CreateInstance($NLMType)
$INetworkConnections=$INetworkListManager.GetNetworkconnections()
foreach($network in $INetworkConnections){
$network.GetAdapterID()
}[/code:1]
Quand je fais un get-member sur l'objet $network, la méthode GetAdapterID() est listée comme une de ces methodes...
Malheuresement le script me retourne une exception sur la methode GetAdapterID().
je ne sais pas comment faire...
Merci
Message édité par: crousti, à: 12/12/10 13:57
Message édité par: crousti, à: 12/12/10 13:58<br><br>Message édité par: Arnaud, à: 5/01/11 10:12
Je cherche à utiliser l'API introduite dans windows vista \"Network List Manager\", afin de determiner les propriétés de connexion des cartes réseaux (Type de réseau, Connectivité). Je cherche notamment à récupérer le GUID de la carte en question. j'utilise le script suivant sur un windows 7 entreprise
[code:1]$NLMType = [Type]::GetTypeFromCLSID(‘DCB00C01-570F-4A9B-8D69-199FDBA5723B’)
$INetworkListManager = [Activator]::CreateInstance($NLMType)
$INetworkConnections=$INetworkListManager.GetNetworkconnections()
foreach($network in $INetworkConnections){
$network.GetAdapterID()
}[/code:1]
Quand je fais un get-member sur l'objet $network, la méthode GetAdapterID() est listée comme une de ces methodes...
Malheuresement le script me retourne une exception sur la methode GetAdapterID().
je ne sais pas comment faire...
Merci
Message édité par: crousti, à: 12/12/10 13:57
Message édité par: crousti, à: 12/12/10 13:58<br><br>Message édité par: Arnaud, à: 5/01/11 10:12
Connexion ou Créer un compte pour participer à la conversation.
- JoJo
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 15 ans 5 mois #8288
par JoJo
Réponse de JoJo sur le sujet Re:Objet COM Network list manager
L'exception que j'obtiens :
Exception calling \"GetAdapterId\" with \"0\" argument(s): \"Value does not fall within the expected range.\"
At C:\Untitled3.ps1:7 char:26
+ $network.GetAdapterID <<<< ()
+ CategoryInfo : NotSpecified: (: ) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation<br><br>Message édité par: crousti, à: 13/12/10 09:31
Exception calling \"GetAdapterId\" with \"0\" argument(s): \"Value does not fall within the expected range.\"
At C:\Untitled3.ps1:7 char:26
+ $network.GetAdapterID <<<< ()
+ CategoryInfo : NotSpecified: (: ) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation<br><br>Message édité par: crousti, à: 13/12/10 09:31
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 5 mois #8290
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Objet COM Network list manager
D'après la documentation que j'ai trouvé sur la méthode GetAdapterId(), sa valeur de retour est simplement un Ok ou non; l'ID à proprement parlé est stocké dans la variable passée en paramètre.
msdn.microsoft.com/en-us/library/aa370757(v=vs.85).aspx
Dans la définition de la méthode, la variable est de type [out], c'est-à-dire qu'elle sera modifiée par la méthode. Pour passer une telle variable dans PowerShell, il faut utiliser le type [ref]. J'utilise un poste XP donc je ne peux pas illustrer [ref] avec la méthode en question, mais le principe est le suivant :
[code:1]
PS> function maj ([ref]$s) {$s.Value = $s.Value.ToUpper()}
PS> $text = \"Hello\"
PS> maj ([ref]$text)
PS> $text
HELLO
[/code:1]
En clair dans le texte, la fonction maj modifie directement la variable $text, sans qu'il y ait besoin de réaffecter son résultat à la variable comme on le ferait d'habitude.
Tu noteras la syntaxe pour passer la variable en paramètre à la fonction : ([ref]$mavariable).
Je dirais que dans ton script ça donne quelque chose comme ça :
[code:1]
foreach($network in $INetworkConnections){
$guid = ''
$network.GetAdapterID(([ref]$guid))
$guid
}
[/code:1]
Pas sûr à 100% que le deuxième jeu de parenthèses soit nécessaire dans le passage du paramètre, à toi de tester.
msdn.microsoft.com/en-us/library/aa370757(v=vs.85).aspx
Dans la définition de la méthode, la variable est de type [out], c'est-à-dire qu'elle sera modifiée par la méthode. Pour passer une telle variable dans PowerShell, il faut utiliser le type [ref]. J'utilise un poste XP donc je ne peux pas illustrer [ref] avec la méthode en question, mais le principe est le suivant :
[code:1]
PS> function maj ([ref]$s) {$s.Value = $s.Value.ToUpper()}
PS> $text = \"Hello\"
PS> maj ([ref]$text)
PS> $text
HELLO
[/code:1]
En clair dans le texte, la fonction maj modifie directement la variable $text, sans qu'il y ait besoin de réaffecter son résultat à la variable comme on le ferait d'habitude.
Tu noteras la syntaxe pour passer la variable en paramètre à la fonction : ([ref]$mavariable).
Je dirais que dans ton script ça donne quelque chose comme ça :
[code:1]
foreach($network in $INetworkConnections){
$guid = ''
$network.GetAdapterID(([ref]$guid))
$guid
}
[/code:1]
Pas sûr à 100% que le deuxième jeu de parenthèses soit nécessaire dans le passage du paramètre, à toi de tester.
Connexion ou Créer un compte pour participer à la conversation.
- JoJo
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 15 ans 5 mois #8291
par JoJo
Réponse de JoJo sur le sujet Re:Objet COM Network list manager
Merci pour ta réponse et le temps que tu y as consacré Janel.
Lorsque j'execute le script, j'ai toujours une exception :
Cannot find an overload for \"GetAdapterId\" and the argument count: \"1\".
At Untitled3.ps1:9 char:26
+ $network.GetAdapterID <<<< (([ref]$guid))
+ CategoryInfo : NotSpecified: (
[], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
Lorsque j'execute le script, j'ai toujours une exception :
Cannot find an overload for \"GetAdapterId\" and the argument count: \"1\".
At Untitled3.ps1:9 char:26
+ $network.GetAdapterID <<<< (([ref]$guid))
+ CategoryInfo : NotSpecified: (
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 5 mois #8292
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Objet COM Network list manager
Tu peux redonner le code complet que tu utilises ?
J'essaierai ce soir de tester sur mon poste à la maison, il est sous Windows 7.
J'essaierai ce soir de tester sur mon poste à la maison, il est sous Windows 7.
Connexion ou Créer un compte pour participer à la conversation.
- JoJo
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 15 ans 5 mois #8293
par JoJo
Réponse de JoJo sur le sujet Re:Objet COM Network list manager
Le script renvoie bien tout sauf l'AdapterID
[code:1]$NLMType = [Type]::GetTypeFromCLSID(‘DCB00C01-570F-4A9B-8D69-199FDBA5723B’)
$INetworkListManager = [Activator]::CreateInstance($NLMType)
$INetworkConnections=$INetworkListManager.GetNetworkConnections()
function getconnectivity {
param($network1)
switch ($network1.GetConnectivity()) {
0x0000 { 'disconnected' }
{ $_ -band 0x0001 } { 'IPV4_NOTRAFFIC' }
{ $_ -band 0x0002 } { 'IPV6_NOTRAFFIC' }
{ $_ -band 0x0010 } { 'IPV4_SUBNET' }
{ $_ -band 0x0020 } { 'IPV4_LOCALNETWORK' }
{ $_ -band 0x0040 } { 'IPV4_INTERNET' }
{ $_ -band 0x0100 } { 'IPV6_SUBNET' }
{ $_ -band 0x0200 } { 'IPV6_LOCALNETWORK' }
{ $_ -band 0x0400 } { 'IPV6_INTERNET' }
}
}
function getcategory {
param($network1)
switch ($network1.GetNetwork().GetCategory()) {
2 { 'Domain' }
1 { 'Private' }
0 { 'Public' }
}
}
foreach($connection in $INetworkConnections){
$guid = ''
$name=$connection.GetNetwork().GetName()
$description=$connection.GetNetwork().GetDescription()
$category=getcategory $connection
$connection.GetAdapterID(([ref]$guid))
$connectivity=getconnectivity $connection
new-object PsObject -property @{Name=$name; Category=$category; Connectivity=$connectivity; Description=$description; AdapterID=$guid }
}
[/code:1]
Encore merci pour ton aide
<br><br>Message édité par: crousti, à: 13/12/10 15:54
[code:1]$NLMType = [Type]::GetTypeFromCLSID(‘DCB00C01-570F-4A9B-8D69-199FDBA5723B’)
$INetworkListManager = [Activator]::CreateInstance($NLMType)
$INetworkConnections=$INetworkListManager.GetNetworkConnections()
function getconnectivity {
param($network1)
switch ($network1.GetConnectivity()) {
0x0000 { 'disconnected' }
{ $_ -band 0x0001 } { 'IPV4_NOTRAFFIC' }
{ $_ -band 0x0002 } { 'IPV6_NOTRAFFIC' }
{ $_ -band 0x0010 } { 'IPV4_SUBNET' }
{ $_ -band 0x0020 } { 'IPV4_LOCALNETWORK' }
{ $_ -band 0x0040 } { 'IPV4_INTERNET' }
{ $_ -band 0x0100 } { 'IPV6_SUBNET' }
{ $_ -band 0x0200 } { 'IPV6_LOCALNETWORK' }
{ $_ -band 0x0400 } { 'IPV6_INTERNET' }
}
}
function getcategory {
param($network1)
switch ($network1.GetNetwork().GetCategory()) {
2 { 'Domain' }
1 { 'Private' }
0 { 'Public' }
}
}
foreach($connection in $INetworkConnections){
$guid = ''
$name=$connection.GetNetwork().GetName()
$description=$connection.GetNetwork().GetDescription()
$category=getcategory $connection
$connection.GetAdapterID(([ref]$guid))
$connectivity=getconnectivity $connection
new-object PsObject -property @{Name=$name; Category=$category; Connectivity=$connectivity; Description=$description; AdapterID=$guid }
}
[/code:1]
Encore merci pour ton aide
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.044 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Objet COM Network list manager