Wake On Lan (WOL)

Plus d'informations
il y a 11 ans 11 mois #2479 par Arnaud
Réponse de Arnaud sur le sujet Re:wol
Ok autant pour moi. Désolé pour la coquille :whistle:. Merci de nous l'avoir signalé.

Nous le corrigerons lors d'une prochaine édition du livre.

Arnaud

Créateur du forum de la communauté PowerShell Francophone
Le sujet a été verrouillé.
Plus d'informations
il y a 11 ans 7 mois #3040 par chm69
Réponse de chm69 sur le sujet Re:wol
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?
:dry: :( :unsure: :sick:
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é.
Plus d'informations
il y a 11 ans 7 mois #3042 par chm69
Réponse de chm69 sur le sujet Re:wol
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
\&quot;00-1E-C9-2E-43-9C\&quot;
\&quot;00-12-3F-C9-AD-A2\&quot;


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.:) B) ;)<br><br>Message édité par: Arnaud, à: 22/10/08 17:01
Le sujet a été verrouillé.
Plus d'informations
il y a 7 ans 7 mois #12939 par Nicky
Réponse de Nicky 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 \&quot;p:\posh\PowerOn.txt\&quot;
{
\&quot;(.+) : (.*)\&quot;
{
$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é.
Plus d'informations
il y a 7 ans 7 mois #12940 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:wol
Salut,
Nicky écrit:

J'ai visiblement un soucis de format

Entre autres.
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 \&quot;$($Station.Key) return $result\&quot;
#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.199 secondes
Propulsé par Kunena