使用.vbs发送“Magic Packet”

时间:2013-10-22 03:22:38

标签: vbscript

我是日本的服务台,虽然我一直在为我自己的项目学习Python,现在我需要编写VBScript,将'Magic Packet'广播到呼叫中心的200多台PC。

有人可以请我告诉我如何实现这个目标或者只是教我代码吗?

例如,我们公司的合规性不允许我下载任何免费软件,但不知何故,如果我可以打开它并使用.txt复制源代码并将其带入公司就可以了....

或者......我发现下面有一些VB6脚本,我相信这正是我需要的,所以也许有人可以把它翻译成VBS?

Dim strIP As String = "192.168.1.1" 'IPアドレス
Dim strMAC As String = "00-00-00-00-00-00" 'マックアドレス

'送信データを作成
Dim intCounter As Integer = 0
Dim sendBytes(0 To 101) As Byte

'最初に&hFFを6個付ける
For I = 1 To 6
    sendBytes(intCounter) = &HFF
    intCounter += 1
Next
'MACアドレスを16回繰り返す
For I = 1 To 16
    'MACアドレス読込み
    For J = 0 To 5
        '16進数を変換して読込み
        sendBytes(intCounter) = Byte.Parse(strMAC.Substring(J * 3, 2), Globalization.NumberStyles.HexNumber)
        intCounter += 1
    Next
Next

'データを送信するポート番号
Dim RemotePort As Integer = 2304 '何でも良い

'送信先IP指定(ブロードキャストとピンポイントの両方に送信してみる)
Dim BCIP As System.Net.IPAddress
Dim EP As System.Net.IPEndPoint
Dim UDP As New System.Net.Sockets.UdpClient'UDP接続

'ブロードキャストアドレス指定で送信するとき
BCIP = System.Net.IPAddress.Parse("255.255.255.255")
EP = New System.Net.IPEndPoint(BCIP, RemotePort)
'送信先を指定してデータを送信する
UDP.Send(sendBytes, sendBytes.Length, EP)

'ピンポイントのIPアドレス指定して送信するとき
BCIP = System.Net.IPAddress.Parse(strIP)
EP = New System.Net.IPEndPoint(BCIP, RemotePort)
'送信先を指定してデータを送信する
UDP.Send(sendBytes, sendBytes.Length, EP)

'UDP接続を終了
udp.Close()

我知道这种愚蠢的开放性问题会激怒一些中级技术人员,所以如果你对此感到不舒服,就不理我。

1 个答案:

答案 0 :(得分:4)

您拥有的代码是VB.NET,而不是VB6或VBScript。 VBScript没有内置的套接字支持,Windows也没有COM库来处理套接字,但第三方库可用(例如来自Chilkat):http://www.example-code.com/vbscript/socket_connect.asp

如果您处于系统管理员方面,那么最好使用PowerShell:

以下是您想要的示例(发送魔术包):http://powershell.com/cs/media/p/1506.aspx