Question Wake On Lan (WOL)
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 16 ans 2 mois #2479
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:wol
Ok autant pour moi. Désolé pour la coquille . Merci de nous l'avoir signalé.
Nous le corrigerons lors d'une prochaine édition du livre.
Arnaud
Nous le corrigerons lors d'une prochaine édition du livre.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Le sujet a été verrouillé.
- michault
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 128
- Remerciements reçus 0
il y a 15 ans 10 mois #3040
par michault
A partir de ce script je voudrais récupérer les adressesMAC dans un csv et réveiller un lot de PC.
Voilà mon script:
[code:1]Param($path)
$var=Import-Csv $path
#Définition des constantes
[Byte[]]$paquet = 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
foreach($v in $var)
{
[Byte[]]$Adresse_MAC = [string]$v.Adresse_MAC
$paquet += $Adresse_MAC * 16
$UdpClient= New-Object system.Net.Sockets.UdpClient
$udpClient.Connect(([System.Net.IPAddress]::Broadcast),1600)
$UdpClient.Send($paquet,$paquet.length)
}[/code:1]
Mon csv
Adresse_MAC
\"0x00,0x18,0x8b,0x7a,0x5e,0x1c\"
J'ai le message suivant
Impossible de convertir la valeur « » en type « System.Byte[] ». Erreur : « Invalid cast from 'System.String' to 'Syst
em.Byte[]'. »
Comment faire?
Je sais j'abuse mais vous ètes tellement réactif que j'en profile.<br><br>Message édité par: Arnaud, à: 22/10/08 17:00
Voilà mon script:
[code:1]Param($path)
$var=Import-Csv $path
#Définition des constantes
[Byte[]]$paquet = 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
foreach($v in $var)
{
[Byte[]]$Adresse_MAC = [string]$v.Adresse_MAC
$paquet += $Adresse_MAC * 16
$UdpClient= New-Object system.Net.Sockets.UdpClient
$udpClient.Connect(([System.Net.IPAddress]::Broadcast),1600)
$UdpClient.Send($paquet,$paquet.length)
}[/code:1]
Mon csv
Adresse_MAC
\"0x00,0x18,0x8b,0x7a,0x5e,0x1c\"
J'ai le message suivant
Impossible de convertir la valeur « » en type « System.Byte[] ». Erreur : « Invalid cast from 'System.String' to 'Syst
em.Byte[]'. »
Comment faire?
Je sais j'abuse mais vous ètes tellement réactif que j'en profile.<br><br>Message édité par: Arnaud, à: 22/10/08 17:00
Le sujet a été verrouillé.
- michault
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 128
- Remerciements reçus 0
il y a 15 ans 10 mois #3042
par michault
En me balladant, j'ai trouvé des infos
voilà mon script qui fonctionne:
[code:1]
# Paramètres: $path :Fichier des Adresses MAC
Param($path)
$var=Import-Csv $path
#Définition des constantes
[Byte[]]$paquet = [Byte[]] (,0xFF * 6)
foreach($v in $var)
{
$Adresse_MAC = [string]$v.Adresse_MAC
$paquet += (($Adresse_MAC.split('-') | foreach {[byte] ('0x' + $_)}) * 16)
$UdpClient= New-Object system.Net.Sockets.UdpClient
$udpClient.Connect(([System.Net.IPAddress]::Broadcast),1600)
$UdpClient.Send($paquet,$paquet.length)
}[/code:1]
et un exemple de CSV
Adresse_MAC
\"00-1E-C9-2E-43-9C\"
\"00-12-3F-C9-AD-A2\"
Merci encore à tous
C'est peut-être un peu prétentieux mais je vais le déposer pour contribution.
Peut-être certains y trouveront un intérêt. <br><br>Message édité par: Arnaud, à: 22/10/08 17:01
voilà mon script qui fonctionne:
[code:1]
# Paramètres: $path :Fichier des Adresses MAC
Param($path)
$var=Import-Csv $path
#Définition des constantes
[Byte[]]$paquet = [Byte[]] (,0xFF * 6)
foreach($v in $var)
{
$Adresse_MAC = [string]$v.Adresse_MAC
$paquet += (($Adresse_MAC.split('-') | foreach {[byte] ('0x' + $_)}) * 16)
$UdpClient= New-Object system.Net.Sockets.UdpClient
$udpClient.Connect(([System.Net.IPAddress]::Broadcast),1600)
$UdpClient.Send($paquet,$paquet.length)
}[/code:1]
et un exemple de CSV
Adresse_MAC
\"00-1E-C9-2E-43-9C\"
\"00-12-3F-C9-AD-A2\"
Merci encore à tous
C'est peut-être un peu prétentieux mais je vais le déposer pour contribution.
Peut-être certains y trouveront un intérêt. <br><br>Message édité par: Arnaud, à: 22/10/08 17:01
Le sujet a été verrouillé.
- MEURY Nikolaus
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 11 ans 11 mois #12939
par MEURY Nikolaus
Réponse de MEURY Nikolaus sur le sujet Re:wol
Bonjour à tous,
Je reviens sur ce script face à un petit besoin similaire de réveiller des postes dont l'adresse MAC se trouverait initialement dans un fichier plat externe.
La seule différence est que je voudrais alimenter mon script avec un fichier qui contient les noms et les adresses mac des machines :
STATION1 : 0x00,0x18,0x8b,0x7a,0x5e,0x1c
STATION2 : 0x00,0x18,0x8b,0x7a,0x5e,0x9f
Tout simplement pour avoir la correspondance avec les postes.
Mon script :
[code:1]
$list = @{}
switch -regex -file \"p:\posh\PowerOn.txt\"
{
\"(.+) : (.*)\"
{
$key, $value = $matches[1..2]
$list[$key] = $value
}
}
foreach ($_ in $list.values)
{
[byte[]] $paquet = $_
[byte[]] $paquet = 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
$paquet += $_ *16
$UdpClient = New-Object System.Net.Sockets.UdpClient
$UdpClient.Connect(([System.Net.IPAddress]::Broadcast) ,1600)
$UdpClient.Send($paquet,$Paquet.length)
}[/code:1]
J'ai visiblement un soucis de format, si je remplace la première ligne d'instruction de ma boucle par une adresse mac, ça fonctionne, si j'affiche $_ ça me retourne bien une adresse mac.
L'utilisation d'une table de hash n'est peut être pas la meilleure solution mais je ne vois pas pourquoi ça ne serait pas possible.
D'avance merci !
Je reviens sur ce script face à un petit besoin similaire de réveiller des postes dont l'adresse MAC se trouverait initialement dans un fichier plat externe.
La seule différence est que je voudrais alimenter mon script avec un fichier qui contient les noms et les adresses mac des machines :
STATION1 : 0x00,0x18,0x8b,0x7a,0x5e,0x1c
STATION2 : 0x00,0x18,0x8b,0x7a,0x5e,0x9f
Tout simplement pour avoir la correspondance avec les postes.
Mon script :
[code:1]
$list = @{}
switch -regex -file \"p:\posh\PowerOn.txt\"
{
\"(.+) : (.*)\"
{
$key, $value = $matches[1..2]
$list[$key] = $value
}
}
foreach ($_ in $list.values)
{
[byte[]] $paquet = $_
[byte[]] $paquet = 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
$paquet += $_ *16
$UdpClient = New-Object System.Net.Sockets.UdpClient
$UdpClient.Connect(([System.Net.IPAddress]::Broadcast) ,1600)
$UdpClient.Send($paquet,$Paquet.length)
}[/code:1]
J'ai visiblement un soucis de format, si je remplace la première ligne d'instruction de ma boucle par une adresse mac, ça fonctionne, si j'affiche $_ ça me retourne bien une adresse mac.
L'utilisation d'une table de hash n'est peut être pas la meilleure solution mais je ne vois pas pourquoi ça ne serait pas possible.
D'avance merci !
Le sujet a été verrouillé.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 11 ans 11 mois #12940
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:wol
Salut,
Nicky écrit:
Je ne sais pas d'où tu sors la variable $_ ?
Relit le poste de chm69.
Quant à la hashtable le pb n'est pas là, tu pourrais juste t'en passer, car tu parcours le fichier ligne par ligne.
Attention également au retour de la méthode Send :
[code:1]$Result=$UdpClient.Send($paquet,$Paquet.length)
Write-Warning \"$($Station.Key) return $result\"
#ou
[void]$UdpClient.Send($paquet,$Paquet.length)[/code:1]
Nicky écrit:
Entre autres.J'ai visiblement un soucis de format
Je ne sais pas d'où tu sors la variable $_ ?
Relit le poste de chm69.
Quant à la hashtable le pb n'est pas là, tu pourrais juste t'en passer, car tu parcours le fichier ligne par ligne.
Attention également au retour de la méthode Send :
[code:1]$Result=$UdpClient.Send($paquet,$Paquet.length)
Write-Warning \"$($Station.Key) return $result\"
#ou
[void]$UdpClient.Send($paquet,$Paquet.length)[/code:1]
Tutoriels PowerShell
Le sujet a été verrouillé.
Temps de génération de la page : 0.121 secondes
- Vous êtes ici :
- Accueil
- forum
- Nos livres sur PowerShell
- Besoin d'infos complémentaires ?
- Wake On Lan (WOL)