VB Code ( http://cwashington.netreach.net/depo/view.asp?Index=415&ScriptType=component ):
code:
<?xml version="1.0"?>
<component>

<?component error="true" debug="true"?>

<registration
description="MagicPacket"
progid="MagicPacket.WSC"
version="1.01"
classid="{37bab79c-5e27-4cf2-b0e2-73979683a479}"
>
</registration>

<public>
<property name="IPBroadcastAddress">
<put/>
</property>
<property name="MacAddress">
<get/>
<put/>
</property>
<method name="Send">
</method>
</public>

<script language="VBScript">
<![CDATA[
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Component: MagicPacket.WSC
' Properties: IPBroadcastAddress:
' The IP Broadcast Address of the host you would like to wake up.
This is typically
' something like 10.10.118.255
' MacAddress:
' The Hardware address of the host you would like to wake up. This can either
' be in the form 11:22:33:44:55:66 (as it is in SMS) or 11-22-33-44-55-66 as is
' the output from getmac.exe
' Methods: Send
' Sends the packet, and hopefully wakes up the machine
' Requires: mswinsck.dll
' Comes with VisualStudio
'
' Example: dim o
' Set o = CreateObject("MagicPacket.WSC")
' o.IPBroadcastAddress = "10.10.224.255"
' o.macaddress = "00-08-C7-59-2D-17"
' o.send
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim IPBroadcastAddress
dim MacAddress

function put_IPBroadcastAddress(newValue)
IPBroadcastAddress = newValue
end function

function get_MacAddress()
get_MacAddress = MacAddress
end function

function put_MacAddress(newValue)
MacAddress = newValue
end function

function Send()
SendWakeUp MacAddress, IPBroadcastAddress
end function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Function: parseMac
' Params: Hardare address of network adapter in either colon(:) or dash(-) delimited form
' Return: Array of byte size mac address elements for later processing
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Function parseMAC(strMacAddr)
Dim arMacAddr

Select Case Len(strMacAddr)
Case 17
arMacAddr = Split(strMacAddr, ":")
If Ubound(arMacAddr) <> 5 Then
arMacAddr = Split(strMacAddr, "-")
If Ubound(arMacAddr) <> 5 Then
parseMac = -1 'Error
Else
parseMac = arMacAddr
End If
Else
parseMac = arMacAddr
End If

Case Else
parseMac = -1 'Error
End Select
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Function: CreatePacket
' Params: array of bytes representing Mac address of target
' Return: String of data representing Magic Packet data
' Notes: Magic Packet is six bytes of chr(&HFF) folowed by 16 copies of the target adapter's
' Mac address
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Function CreatePacket(arMacAddr)
Dim Item
Dim strTemp
Dim strData

For Each Item in arMacAddr
Item = "&H" & Item
strTemp = strTemp & chr(Item)
Next
For i = 1 to 16
strData = strData & strTemp
Next
CreatePacket = String(6, &HFF) & strData
End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Function: SendWakeUp
' Params: Mac Address of target machine, IP Broadcast address of target machine
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Function SendWakeUp(MacAddr, BCastAddr)
Dim objSocket
Set objSocket = CreateObject("MSWinsock.Winsock")
objSocket.Protocol = 1 'UDP
objSocket.RemoteHost = BCastAddr
objSocket.SendData CreatePacket(ParseMac(MacAddr))
objSocket.Close
End Function
]]>
</script>

</component>

KiXtart Code (not functional):
code:
; to be run with KiXtart 4.21 or later

break on
cls
dim $iRC
$iRC=SetOption("WrapAtEOL","On")
$iRC=SetOption("Explicit","On")
$iRC=SetOption("NoVarsInStrings","On")

dim $sMAC, $sBCast

$sMAC=@ADDRESS
$sBCast='128.197.181.255'
? 'MAC Address = '+$sMAC
? 'Broadcast Address = '+$sBCast

$iRC=WakeOnLAN($sMAC, $sBCast)
? 'Error '+@ERROR+' - '+@SERROR
? 'WakeOnLAN = '+$iRC
exit 0

function WakeOnLAN($sMAC, $sBCast, optional $bWait)
dim $iIndex, $asMAC[5], $sMagicPacket, $sByte
dim $objSocket

; format the MAC address
select
case len($sMAC)=12
for $iIndex=0 to 5
$asMAC[$iIndex]=substr($sMAC,$iIndex*2+1,2)
next
case len($sMAC)=17
select
case instr($sMAC,':')
$asMAC=split($sMAC,':')
case instr($sMAC,'-')
$asMAC=split($sMAC,'-')
case 1
exit 87
endselect
case 1
exit 87
endselect

; create the magic packet (six bytes of FF followed by 16 copies of the MAC address
$sMAC=''
for each $sByte in $asMAC
? 'Byte = '+$sByte+' = '+chr(val('&'+$sByte))
$sMAC=$sMAC+chr(val('&'+$sByte))
next
? 'MAC = ('+len($sMAC)+') = '+$sMAC
redim $sMagicPacket[6], $WakeOnLAN[16]
$sMagicPacket=join($sMagicPacket,chr(&FF))
$WakeOnLAN=join($WakeOnLAN,$sMAC)
$sMagicPacket=$sMagicPacket+$WakeOnLAN
? 'Magic Packet = '+len($sMagicPacket)

; create the Winsock object and send the magic packet
$objSocket=createobject('MSWinsock.Winsock')
$objSocket.Protocol = 1
$objSocket.RemoteHost = $sBCast
$objSocket.SendData = $sMagicPacket
$objSocket.Close
$objSocket = 0

$WakeOnLAN=@ERROR
exit @ERROR
endfunction

_________________________
There are two types of vessels, submarines and targets.