2011-08-08 76 views
1

因此,我有以下scipt,當用戶使用組策略中的註銷腳本部分註銷時運行(我想運行檢查以查看它是否已經在特定計算機上運行過,如果它之前運行過我想腳本退出如果它沒有那麼我希望它運行的腳本和自己標記爲「已運行」我怎麼能做到這一點):?檢查腳本是否已經在特定機器上運行過?

strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 

Set colInstalledPrinters = objWMIService.ExecQuery _ 
    ("Select * from Win32_Printer Where Network = TRUE") 

For Each objPrinter in colInstalledPrinters 
    objPrinter.Delete_ Next 
+0

簡單地運行兩次會出現什麼問題?畢竟,如果你第二次運行它,它不會做任何壞事...... – Tomalak

+0

它刪除所有的網絡打印機。然後我有GPP,在登錄時添加了一堆打印機。我不希望用戶每次都必須重新選擇默認打印機。不需要多次刪除打印機。我們正在移動辦公室,並擁有所有新打印機,因此我只需要在每臺計算機上一次卸下打印機。 – user597875

+0

那麼,簡單地寫一個鎖定文件(或一些註冊表項)作爲腳本的最後一步,並將其作爲第一步檢查。當它在那裏,你已經運行腳本,並可以立即退出。 – Tomalak

回答

1

我想通了。這裏是修改後的腳本:

Option Explicit 

Dim oShell,strComputer,objWMIService,colInstalledPrinters,objPPrinter 

Private Function KeyExists (keyName) 
    Dim bKey 

    On Error Resume Next 

    bKey = oShell.RegRead(keyName) 

    If TypeName (bKey) = "Empty" Then 
     KeyExists = False 
    Else 
     KeyExists = True 
    End If 
End Function 



Set oShell = CreateObject("Wscript.Shell") 

If keyExists("HKEY_LOCAL_MACHINE\Software\CRusse\RemovePrinters") Then 
    wscript.quit 
Else 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 

Set colInstalledPrinters = objWMIService.ExecQuery _ 
    ("Select * from Win32_Printer Where Network = TRUE") 

For Each objPrinter in colInstalledPrinters 
    objPrinter.Delete_ 
Next 
    oshell.RegWrite "HKEY_LOCAL_MACHINE\Software\CRusse\RemovePrinters", 1, "REG_SZ" 
End If 

Set oShell = Nothing 
相關問題