0

我正在编写一个 Wake-On-Lan 脚本,我有这段代码正在运行,我只是想更好地理解它。

这是我遇到问题的摘录:

$mac = "78ab78ab78ab" #some user input mac address reformatted to something like this one
$packet = [byte[]](,0xFF * 102)
6..101 |% { $packet[$_] = $mac[($_%6)] }

[byte[]](,0xFF * 102)

这就是说要使一个字节值数组0xFF正确 102 次?所以packet[0]应该等于0xFF通过packet[101] = 0xFF

6..101 |% { $packet[$_] = $mac[($_%6)] }

这是一个循环,它对我们之前声明的 $packets 数组的一个元素进行操作,基于迭代器,该迭代器($_)在循环中进行时增长一。我不确定$_%6特别是%6操作员的作用。我已经遍历了循环并输出了值(确实发生了变化),但由于我不熟悉操作员,我不确定输出的真正含义。

4

1 回答 1

1

我认为你的主要问题是$_%6。您应该将其阅读为$_ % 6, where$_6are 您的操作数,并且%在 Powershell 中是Mod来自 VB.NET world 的二元运算符。它返回整数除法的余数。所以,例如5 Mod 2 = 1

于 2013-04-10T18:00:16.730 回答