我能够
通过以下方式关闭远程计算机
shutdown /s /m \\\MachineName
;以及切断远程计算机的电源(想象一下具有 TelNet 通信功能的 IP 电源开关)。
我想按顺序执行这两个任务,但出于显而易见的原因,在任务 1 完全成功之前不应调用任务 2。
两个任务都在应用程序 (VB6) 中执行。它们单独按预期运行。但连续地,我需要在执行任务 2 之前可靠地找出远程计算机何时完全关闭。
所以问题是:我如何才能可靠地检测任务 1 的终止?这可能吗?例如,我可以使用 shell 脚本吗?
计时任务 1 不是一个选项:它可以运行一段不可预测的时间(想想 Windows 更新,“完成之前不要关闭这台机器”)。
答案1
你不能。
在某些时候,Windows 会禁用网络,从那一刻起,您根本无法从 PC 本身知道它是否仍在运行。如果您的电源开关可以测量所消耗的电压(UPS 可以),那么您可以测量电压,一旦电压达到 0,您就会知道 PC 已关闭。
为了阐明 Windows 更新的工作原理,当您仍在 Windows 中时,会下载更新。然后 Windows 关闭并退出内核。在 Windows 之外,会安装更新。这是必需的,以便更新可以更改正在使用的文件。我以 UPS 为例。也有可以通过网络控制的电源块。必须有一个可以读取所有设备瓦数的电源块。