Flash info

"Those who forget to script are doomed to repeat their work."

Jeffery Hicks (PowerShell MVP)

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
tarakaf
Utilisateur

PowerShelleur Débutant
Messages: 3
graphgraph
Karma: 0  
Wake On Lan (WOL) - 16/06/08 17:11 Bonjour, j'ai feuilleté le livre et executé le script wol (wake on lan):
et une erreur sur la ligne:
$UdpClient.Connect (([System.Net.IPAddress] ::Broadcast) , 1600)


message d'erreur:

Jeton « ( » inattendu dans une expression ou une instruction.
Au niveau de C:tempmadpspowershelloswol.ps1 : 7 Caractère : 21
+ $UdpClient.Connect (( <<<< [System.Net.IPAddress] : : Broadcast) ,1600)

Merci de votre aide.

Message édité par: Arnaud, à: 19/06/08 23:02
  | | Le sujet a été verrouillé.
Robin
Admin

Administrateur
Messages: 262
graphgraph
Karma: 8  
Re:wol - 16/06/08 22:54 Salut tarakaf et bienvenue,

As-tu ajouté la ligne suivante avant de faire $UdpClient.Connect ? (ligne indiquée en bas de page précedente)

Code:

  $UDPclient = new-Object System.Net.Sockets.UdpClient $UDPclient.Connect(([System.Net.IPAddress]::Broadcast),1600)



Tiens nous au courant !

@+ et bonne lecture
Robin MVP PowerShell
  | | Le sujet a été verrouillé.
tarakaf
Utilisateur

PowerShelleur Débutant
Messages: 3
graphgraph
Karma: 0  
Re:wol - 17/06/08 11:40 Rebonjour,oui j'ai écrit la ligne, étant donné que le script complet est dans le livre: pour info, le script complet, et toujours la meme erreur:

# Wol.ps1
# script permettant d'allumer une machine distante
[byte []] $Adresse_Mac = 0x00, 0x0F, 0xFE, 0x9F, 0xBD, 0x8B
[byte []] $paquet = 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
$paquet += $Adresse_Mac *16
$UdpClient = New-Object System.Net.Socket.UdpClient
$UdpClient.Connect ( ( [System.Net.IPAdress] : : Broadcast) ,8080)
$UdpClient.Send ($Paquet,$Paquet.length)

j'ai toujours pas trouvé la solution, meme en changeant de port et la machine cible est visible dans les favoris reseaux (quand elle sest allumée bien sur )
  | | Le sujet a été verrouillé.
theanimal
Utilisateur

PowerShelleur Débutant
Messages: 5
graphgraph
Karma: 0  
Re:wol - 19/06/08 14:53 Bonjour à tous,
l'erreur est dans
$UdpClient = New-Object System.Net.Sockets.UdpClient
voici le script fonctionnant,

Code:

 # Wol.ps1 # script permettant d'allumer une machine distante [byte[]] $Adresse_Mac 0x000x0F0xFE0x9F0xBD0x8B [byte[]] $paquet 0xFF0xFF0xFF0xFF0xFF0xFF $paquet += $Adresse_Mac *16 $UdpClient = New-Object System.Net.Sockets.UdpClient $UdpClient.Connect(([System.Net.IPAddress]::Broadcast) ,8080) $UdpClient.Send($paquet,$Paquet.length)



bonne journée
  | | Le sujet a été verrouillé.
Arnaud
Admin

Administrateur
Messages: 1079
graphgraph
Karma: 35  
Re:wol - 19/06/08 15:05 Bien vu l'animal !!

J'ai regardé trop vite car j'avais pas vu l'erreur dans le script de tarakaf.

Arnaud
MVP PowerShell (depuis 2007)
Suivez moi sur Twitter !
  | | Le sujet a été verrouillé.
tarakaf
Utilisateur

PowerShelleur Débutant
Messages: 3
graphgraph
Karma: 0  
Re:wol - 19/06/08 16:33 yes merci beaucoup theanimal, jje l'ai meme corrigé dans le livre, thanks it' okay...
  | | Le sujet a été verrouillé.
Arnaud
Admin

Administrateur
Messages: 1079
graphgraph
Karma: 35  
Re:wol - 19/06/08 23:00 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
MVP PowerShell (depuis 2007)
Suivez moi sur Twitter !
  | | Le sujet a été verrouillé.
chm69
Utilisateur

PowerShelleur Confirmé
Messages: 128
graphgraph
Karma: 1  
Re:wol - 22/10/08 13:42 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:

 Param($path) $var=Import-Csv $path #Définition des constantes [Byte[]]$paquet 0xFF0xFF0xFF0xFF0xFF0xFF 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) }



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.

Message édité par: Arnaud, à: 22/10/08 17:00
  | | Le sujet a été verrouillé.
chm69
Utilisateur

PowerShelleur Confirmé
Messages: 128
graphgraph
Karma: 1  
Re:wol - 22/10/08 16:48 En me balladant, j'ai trouvé des infos

voilà mon script qui fonctionne:
Code:

  # 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) }



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.

Message édité par: Arnaud, à: 22/10/08 17:01
  | | Le sujet a été verrouillé.
Nicky
Utilisateur

PowerShelleur Débutant
Messages: 14
graphgraph
Karma: 0  
Re:wol - 18/10/12 17:51 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:

  $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) }




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
Utilisateur

PowerShelleur Platinum
Messages: 5129
graph
Karma: 186  
Re:wol - 18/10/12 19:41 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:

 $Result=$UdpClient.Send($paquet,$Paquet.length) Write-Warning "$($Station.Key) return $result" #ou [void]$UdpClient.Send($paquet,$Paquet.length)

Tutoriels PowerShell
  | | Le sujet a été verrouillé.
© 2017 PowerShell-Scripting.com