使用PowerShell在“设备和打印机”中删除然后添加设备

时间:2013-09-01 08:40:25

标签: python windows powershell automation powershell-v3.0

背景:在“设备和打印机”(在控制面板中)中列为“Bravia KDL-32EX720”的我的电视灰显,因此停止响应“播放到”DLNA命令。我知道的唯一解决方案是删除并重新添加电视。过程是这样的:

  1. 转到控制面板 - >设备和打印机。
  2. 右键点击“Bravia KDL-32EX720。”
  3. 点击“删除设备”,然后点击确认提示。
  4. 删除后,单击“设备和打印机”窗口中的“添加设备”按钮。
  5. 等待可用设备列表显示。
  6. 电视出现在这里。双击添加它。
  7. 现在,我想自动化这个过程,因为我必须重复*。

    我知道一点PowerShell并知道可以通过此命令打开设备和打印机窗口:

    control printers
    

    但是,我不知道如何继续这样做。请指导我为完整任务制作脚本。我不介意是否提供Python或AutoHotKey中的脚本。我使用Windows 8 64位专业版。提前谢谢。

    Screenshot taken while I was removing the device

    *每次关闭并开启电视时,我都必须完成整个过程。我已经完成了在Microsoft Answers上提供给我的所有步骤来解决这个问题(运行SFC,重新启动一些服务等)但是没有一个帮助过。

1 个答案:

答案 0 :(得分:0)

您可以使用Powershell脚本中的MS UI Automation自动执行此操作。

这是一个问候世界的UIA Powershell脚本,以了解如何开始:

[Reflection.Assembly]::LoadFile('C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\UIAutomationClient.dll')
[Reflection.Assembly]::LoadFile('C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\UIAutomationTypes.dll')

# Get the root/desktop element
$rootElement = [Windows.Automation.AutomationElement]::RootElement
# Print its Name and ClassName
Write-Host "Note: In the managed UIA API, the desktop name is empty:"
"'" + $rootElement.Current.Name + "'"
Write-Host "Instead, you can identify the desktop by its ClassName, #32769:"
"'" + $rootElement.Current.ClassName + "'"

除此之外,您可能会受益于WASP Powershell snapin,尽管它似乎暂时没有更新:

http://wasp.codeplex.com/

此外,由于对于此项目,您希望自动化控制面板的UI,因此您很可能需要使用“以管理员身份运行”权限执行脚本。如果不这样做,对控制面板进行更改是不可能的。