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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 280498
Url: https://administrator.de/contentid/280498
Printed on: April 24, 2024 at 04:04 o'clock
6 Comments
Latest comment
gc $file | %{send-wake $_}
Hallo,
da Du keine Zeitverzögerung drin hast auch besser so.
Die CSV
Erste Zeile MAC un ddann darunter die Macadressen mit : zwischen den Zeichen
Gruß
Chonta
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