如何使用 Powershell 中的 Get-Printer 计算 StartTime / UntilTime 参数?

如何使用 Powershell 中的 Get-Printer 计算 StartTime / UntilTime 参数?

我使用 GUI 设置了打印机,并将打印机可用性设置为从 18:40 到 3:00,同时我得到了 PS 命令“Get-Printer Printer1 | format-list”

该命令的结果是:

StartTime   1000
UntilTime   60

现在我有点沮丧,我不明白为什么 18:40 表示为值 1000,而 3:00 表示为值 60。

我尝试通过谷歌寻找答案,但技术参考资料只提供了以下信息

-StartTime UInt32——指定打印机可用的开始时间。

所以我的问题是如何计算参数 StartTime 和 UntilTime 所代表的值?如果需要,我可以添加更多值。只是搞不清楚。

答案1

我相信这两个值都是计算的自 GMT 上午 12:00 以来的分钟数。这样你就进入 GMT+2 了。这样可以正常工作吗?

答案2

只是为了澄清这一点 - 这个问题有多个技巧:

1) Johnathan 说得对——这是一个陷阱问题。不过,这个陷阱来自于用户可以随时向打印机提交作业,无论打印机是否可用。作业将一直保留在队列中,直到到达 StartTime - 此时,作业将进行打印。

2) 如前所述,打印机已暂停。无法打印任何内容,但用户可以随时发送作业。

3) StartTime 和 UntilTime 是使用 UTC 计算的,与时区无关,并且以分钟为单位。因此,如果您将 StartTime 设置为 0100 UTC,它将显示为“60”。此技巧使用“1000”来欺骗您,让您认为现在是“10 点”。实际上是 UTC 下午 4:40。“60”将是 UTC 凌晨 1:00。“600”将是 UTC 上午 10:00。

4) 由于问题没有指明时区,因此时间并不重要,因为问题中给出的时钟时间不会相同,例如,对于身处 UTC-7 的人来说,对于身处 UTC+2 的人来说,时间是不一样的。所以... 另一个技巧。

但是,破译这些技巧可以让我们学到很多东西。

至少微软没有为此使用纪元时间。

—佐

答案3

开始时间直到时间价值观分钟,最大值为1440(分钟),相当于24小时。

诀窍是了解实际设置的时区,以便能够识别该值代表哪个时间。例如:

UTC 协调世界时,0 = 12:00am(这很容易计算,因为每个值对应一分钟,60 = 01:00am,120 = 02:00am,等等)

UTC+01:00,0 = 凌晨 01:00(只需从午夜开始加 1 小时即可知道 0 的值在哪里。那么 60 就是凌晨 02:00,120 = 凌晨 03:00,等等。)

UTC-03:00,0 = 晚上 9 点(从午夜减去 3 小时得到 0,然后 60 就是晚上 10 点,依此类推)

对于与获取打印机结果相关的问题,还要检查打印机的状态,如果打印机暂停,则打印机不会打印,即使是在可用时间内。如果问题没有提到您所在的时区,我猜不可能知道该值代表哪个时间。

答案4

开始时间取决于时区。

假设您选择 UTC - 协调世界时,打印机从下午 4:40 开始可用 ==> StartTIME 将为 1000。如果您选择 UTC-06:00 - 中部时间(美国和加拿大),则 StartTime 变为:940。

如果您参加 410 测试,他们会问您这个问题 :) 这是个陷阱问题...

假设 UTC 协调世界时 (0)、StartTime: 1000 和 UntilTime 600 相当于可用时间:下午 4:40 至上午 10:00

因此,打印机将打印从下午 4:40 到上午 10:00 的任何内容。然而,Microsoft 在测试中玩的另一个花招是打印机处于暂停状态。因此,您将看到 PrinterStatus:已暂停。因此没有打印任何内容。

相关内容