locked
win8執行Script刪除所有印表機 RRS feed

  • 問題

  • 有做作業系統的判斷在XP、WIN7測試過上都可執行

    但到WIN8上時卻會出現錯誤是否是WMI與法的問題

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colOperatingSystems = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")

    For Each objOperatingSystem in colOperatingSystems
        OS = "Caption: " & objOperatingSystem.Caption
    Next

    'Microsoft Windows 2000 Professional
    'Microsoft Windows XP Professional
    IF InStr(OS, "Microsoft Windows XP Professional") then
      REMOVE_P 
    End If

    IF InStr(OS, "Microsoft Windows 8 專業版") then
      REMOVE_D 
    End If
    '--------------------------------------------------------------------------------------------

    Sub REMOVE_P 
      strComputer = "."
      Set objWMIService = GetObject("winmgmts:" _
          & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

      Set colInstalledPrinters =  objWMIService.ExecQuery _
          ("Select * from Win32_Printer Where DeviceID like '%%'")

      For Each objPrinter in colInstalledPrinters
          objPrinter.Delete_
      Next
    End Sub

    Sub REMOVE_D 
      strComputer = "."
      Set objWMIService = GetObject("winmgmts:" _
          & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

      Set colInstalledPrinters =  objWMIService.ExecQuery _
          ("Select * from Win32_Printer Where DeviceID like '%%'")

      For Each objPrinter in colInstalledPrinters
          objPrinter.Delete_    ←44行
      Next
    End Sub

    錯誤來自44行第七個字元

    2013年6月4日 上午 04:06

所有回覆

  • 您好

    該 script 我在 Windows 8 作業系統下可以刪除印表機,以下連結是我測試的 vbs 檔案

    http://Files.Dotblogs.com.tw/chou/1306/201364131653359.zip

    如果還有問題的話,請提供詳細錯誤訊息與畫面

    另外,請嘗試以系統管理員身分執行該檔案看看


    歡迎參觀我的Blog【菜鳥自救會】


    2013年6月4日 上午 05:17
  • 目前無法貼圖不過錯誤是寫Access denied

    感覺是權限上的問題但我是用管理者去執行的

    且我有寫一個runas的vbs和批次去執行結果都是一樣

    2013年6月4日 上午 10:34
  • 您好

    請按 [Win 標誌鍵] + X,選擇命令提示字元(系統管理員)

    然後再去執行你的 vbs 檔案


    歡迎參觀我的Blog【菜鳥自救會】

    2013年6月4日 上午 10:46
  • 由於我是要放在AD的指令碼使用所以AD可成功移除



    • 已編輯 Rexal 2013年6月6日 下午 01:41
    2013年6月6日 上午 09:52
  • 由於我是要放在AD的指令碼使用所以AD可成功移除

    是放在使用者的設定資料裡,
    讓他在登入時自動執行該批次檔嗎?

    蘇老碎碎念
    資訊無涯,回頭已不見岸
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    2013年6月7日 上午 06:10
  • 是在指令碼裡面呼叫批次再由批次呼叫上面所寫的VBS

    測試時直接在本機執行是不行

    但是藉由上述方法由AD去執行確定可以

    2013年6月8日 下午 02:32