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-ID: 280498

Url: https://administrator.de/forum/wol-mit-txt-versenden-funktioniert-nicht-280498.html

Ausgedruckt am: 09.04.2025 um 09:04 Uhr

Chonta
Lösung Chonta 18.08.2015 aktualisiert um 17:51:12 Uhr
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
Woraxor
Woraxor 18.08.2015 um 13:06:44 Uhr
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
Woraxor
Woraxor 19.08.2015 um 11:13:21 Uhr
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
114757
114757 19.08.2015 aktualisiert um 11:26:52 Uhr
Goto Top
gc $file | %{send-wake $_}
Gruß jodel32
Chonta
Lösung Chonta 19.08.2015 aktualisiert um 13:29:41 Uhr
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
Woraxor
Woraxor 19.08.2015 um 13:29:22 Uhr
Goto Top
Danke für die Antwort, hat funktioniert face-smile