woraxor
Goto Top

WoL mit .TXT versenden Funktioniert nicht

Hallo Zusammen,

sitze hier gerade verzweifelt an einem Skript für WoL. Die Mac Adressen zum remote Auslesen, ist schon geschrieben und funktioniert auch. Nun möchte ich die Text-Datei mit den MAC-Adressen für den folgenden Skript auslesen lassen. Durch verschiedene Quellen habe ich mir einen Skript gebastelt, der bei einzelen MAC-Adressen funktioniert...nur mehrere Adressen über die Textdatei funktionieren nicht....


function Send-Wake
{


[CmdletBinding()]
param(
[Parameter(Mandatory=$True,Position=1)]
[string]$mac,
[string]$ip="255.255.255.255",
[int]$port=9
)
$broadcast = [Net.IPAddress]::Parse($ip)

$mac=(($mac.replace(":","")).replace("-","")).replace(".","")
$target=0,2,4,6,8,10 | % {[convert]::ToByte($mac.substring($_,2),16)}
$packet = (,[byte]255 * 6) + ($target * 16)

$UDPclient = new-Object System.Net.Sockets.UdpClient
$UDPclient.Connect($broadcast,$port)
[void]$UDPclient.Send($packet, 102)

}

$File = "MacAdressen.txt"
send-Wake (Get-Content $File | Out-String)


VG

Hanuta face-smile

Content-Key: 280498

Url: https://administrator.de/contentid/280498

Printed on: April 24, 2024 at 04:04 o'clock

Member: Chonta
Solution Chonta Aug 18, 2015 updated at 15:51:12 (UTC)
Goto Top
Hallo,

zum einen brauchst Du eine Schleife zum anderen einen sleeptimer nach jedem wol sonst bruzelst Du Dir dein Netzwerk weg, wenn du Erfolg hast und XX rechner in der selben Sekunde startetst.

Gruß

Chonta
Member: Woraxor
Woraxor Aug 18, 2015 at 11:06:44 (UTC)
Goto Top
Und genau da ist mein Hänger ^^ ich bekomm das iwie mit der Schleife zum Abfragen nicht gebacken...hast du da evt. einen Ansatz ?

VG

Hanuta
Member: Woraxor
Woraxor Aug 19, 2015 at 09:13:21 (UTC)
Goto Top
So, habe jetzt mal weiter ausprobiert:

$File = "Mac.txt"
$Position = -1 #fängt bei 0 an zu zählen

ForEach ($Position in $File) {
$Position+=1
send-wake (Get-content $File | Out-String)
}


Der Skript wird von PS akzeptiert....nur leider rührt sich kein Rechner face-confused .

Hat Jemand noch eine Idee ?

VG

Hanuta
Mitglied: 114757
114757 Aug 19, 2015 updated at 09:26:52 (UTC)
Goto Top
gc $file | %{send-wake $_}
Gruß jodel32
Member: Chonta
Solution Chonta Aug 19, 2015 updated at 11:29:41 (UTC)
Goto Top
Hallo,

da Du keine Zeitverzögerung drin hast auch besser so.

$Script:csv_path = "$env:USERPROFILE\Desktop\Macadressliste.csv"  
$Script:csv_import = import-csv $Script:csv_path -delimiter ";"  
foreach ($MAC in $Script:csv_import)
  {
    try {
#          write-host $MAC.MAC
          Start-Sleep -s 15
          $MAC.MAC = $MAC.MAC.split(':') | %{ [byte]('0x' + $_) }  
          $UDPclient = new-Object System.Net.Sockets.UdpClient
          $UDPclient.Connect(([System.Net.IPAddress]::Broadcast),9)
          $Packet = [byte[]](,0xFF * 6)
          $Packet += $MAC.MAC * 16
          Write-Verbose ([bitconverter]::tostring($Packet))
          [void] $UDPclient.Send($Packet, $Packet.Length)
          write-host "WOL command sent to $MAC.MAC" + "<br>"  
        }
          catch [system.exception] {
            write-host "ERROR: Unable to send WOL command to $MAC.MAC"  
        }
    }
#   write-host "$Script:csv_path" 

Die CSV
Erste Zeile MAC un ddann darunter die Macadressen mit : zwischen den Zeichen

Gruß

Chonta
Member: Woraxor
Woraxor Aug 19, 2015 at 11:29:22 (UTC)
Goto Top
Danke für die Antwort, hat funktioniert face-smile