如何在win8中使用PowerShell在睡眠状态后重新启动网络适配器?

时间:2013-05-07 12:16:14

标签: powershell wifi scheduled-tasks

当我的上网本从睡眠状态开始时,我需要自动重启我的Wi-Fi。我在任务计划程序中创建了具有以下属性的任务:

(常规标签)

  • 运行用户是否已登录
  • 以最高特权运行
  • 配置Windows 8

(触发器)

  • 关于活动
  • 日志:系统
  • 来源:Kernel-Power
  • 事件ID:42
  • 启用

(条件)

  • 我取消选中此标签中的每个选项

(设置)

  • 允许任务按需运行
  • 如果任务运行时间更长,则停止任务:15秒
  • 如果正在运行的任务未在请求时结束,则强制其停止

(操作)

  • 启动程序:我的以下powershell脚本的路径:
$wifi = Get-WmiObject win32_networkadapter|where {$_.name -like "*wireless*"}
$wifi.disable()
$wifi.enable()

当我手动运行脚本时,一切正常,但是当我尝试使用上述任务时没有任何反应,“最后一次运行结果”等于0x41301,我认为这意味着“任务仍在运行”。它不应该,因为手动启动时需要大约1秒才能完成。

干杯,
卡斯帕

2 个答案:

答案 0 :(得分:1)

正如@mike在他的评论中所说,在Windows 8中,有一个名为Restart-NetAdapter的特定命令。您不需要WMI。也许它比直接WMI更可靠。使用:

get-netadapter "wi-fi" | restart-netadapter

PowerShell v3的自动加载将负责加载正确的模块。另外,请注意您正在使用哪个用户执行任务。某些系统帐户可能缺乏执行此项工作的权利。

答案 1 :(得分:1)

好的,我找到了解决问题的方法。

这是由于“操作”标签中的字段标题误导 - 在“设置”部分的“程序/脚本”中。我的直觉告诉我,可以直接将路径放到PowerShell脚本中,但是......

NO!

我必须将路径放到PowerShell上(默认情况下为C:\ windows \ system32 \ windowspowershell \ v1.0 \ powershell.exe)并提供我的restart-netadapter脚本的路径作为参数('添加参数(可选) '领域)。现在它就像一个魅力。

这不是很直观。

感谢您的帮助! :)