Refnex 10 Geschrieben 23. August 2012 Melden Teilen Geschrieben 23. August 2012 Hallo zusemmen. Ich habe eine Frage an euch, ich Habe mir ein Script gemacht das einen Netzwerk Drucker entfernen und dann einen neuen Mappen soll. Das Hinzufügen funktioniert auch einwandfrei aber das entfernen Bereitet Probleme. on error resume next Const HKEY_CURRENT_USER = &H80000001 strComputer = "." strPrinter = "PrinterXR6_PCL6" strServer = "ServerPRN01" strPrintdel = "PrinterXR6-PCL6" Set netPrinter = CreateObject("WScript.Network") UNCpath = "\\" & strServer & "\" & strPrinter netPrinter.AddWindowsPrinterConnection UNCpath Set objNetwork = WScript.CreateObject("WScript.Network") objNetwork.RemovePrinterConnection "\\" & strComputer & "\" & strPrintdel wscript.sleep 2000 Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & _ "\root\default:StdRegProv") strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Windows" strEntryName = "Device" strValue = "\\" & strServer & "\" & strPrinter & ",winspool,Ne04" objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, strEntryName, strValue Der code wir ohne Fehler ausgeführt der neue Drucker eingerichtet und als Standart Markiert, jedoch der alte nicht gelöscht :confused: Hoffe es kann mir jemand weiterhelfen. Gruss an alle Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 23. August 2012 Melden Teilen Geschrieben 23. August 2012 Muss es unbedingt per Script sein? Die Group Policy Preferences bieten dafür eine richtig gut GUI an: GPP - Group Policy Preferences - Gruppenrichtlinien Einstellungen EDIT: Es heißt immer noch Standard. ;) Zitieren Link zu diesem Kommentar
Refnex 10 Geschrieben 23. August 2012 Autor Melden Teilen Geschrieben 23. August 2012 Ja es währe besser per script da es nicht auf alle angewendet werden soll. vorher läuft noch ein logging script wo die betreffenden PC`s aus einem TXT file einliest und dann das script aufruft. Zitieren Link zu diesem Kommentar
Stefan W 14 Geschrieben 23. August 2012 Melden Teilen Geschrieben 23. August 2012 Hi, du kannst auch per Gruppenrichtlinie einschränken (zB nur Mitglieder einer Sicherheitsgruppe) lg Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 23. August 2012 Melden Teilen Geschrieben 23. August 2012 Ja es währe besser per script da es nicht auf alle angewendet werden soll. Dann schau dir die Group Policy Preferences doch genau an, da kannst Du diesen Wunsch und solche, die Du noch nicht kennst, umsetzen. ;) Off-Topic: BTW: Es heißt in diesem Fall immer noch wäre ohne h. ;) Zitieren Link zu diesem Kommentar
Stefan W 14 Geschrieben 23. August 2012 Melden Teilen Geschrieben 23. August 2012 da kannst Du diesen Wunsch und solche, die Du noch nicht kennst, umsetzen Off-Topic: Damit kann man Probleme Lösen, die man vorher garnicht als solche identifiziert hat :P Zitieren Link zu diesem Kommentar
Refnex 10 Geschrieben 23. August 2012 Autor Melden Teilen Geschrieben 23. August 2012 Hi Thx für die Antworten, habe mir das mit den GPO`s auch angesehn und denke so werde ich es die tage auch umsetzten ( späterstens mit dem neuen Printserver). habe nun auch das Problem mit dem Drucker löschen können im script, das problem war das die drucker nicht auf die maschiene sondern auf den user gemappt werden und somit er natürilich nicht in HKLM sondern in HKCU suchen muss ;-) wer das script noch benötigen sollte nu iss es lauffähig. Danke nochmal an alle und gruss an alle on error resume next Const HKEY_CURRENT_USER = &H80000001 strComputer = "." strComputer-srv = "PRN01" strPrinter = "XR6_PCL6" strServer = "PRN01" strPrintdel = "XR6-PCL6" Set netPrinter = CreateObject("WScript.Network") UNCpath = "\\" & strServer & "\" & strPrinter netPrinter.AddWindowsPrinterConnection UNCpath regKey = "Printers\Connections\,,HOHPRN01,HOHXR6-PCL6" RegDeleteTree HKEY_CURRENT_USER, regKey Sub RegDeleteTree(hiveParam, keyParam) Dim aSubKeys, strKey, strSubKey, ccode, reo ' get the registry WMI provider Set reo = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") ' we add a backslash in tail If (Right(keyParam,1)<>"\") Then keyParam = keyParam & "\" On Error Resume Next ' deactivate RunTime Errors ccode = reo.EnumKey(hiveParam, keyParam, aSubKeys) ' check for key content If ccode = 0 And IsArray(aSubKeys) Then For Each strSubKey In aSubKeys If Err.Number <> 0 Then ' wrong key or other error => exit Err.Clear Exit Sub End If RegDeleteTree hiveParam, keyParam & strSubKey ' for each content do recursion Next End If reo.DeleteKey hiveParam, keyParam ' last action: delete the key End Sub wscript.sleep 2000 ' get the registry WMI provider Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & _ "\root\default:StdRegProv") strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Windows" ' SET ENTRY PATH strEntryName = "Device" ' SET ENTRY NAME strValue = "\\" & strServer & "\" & strPrinter & ",winspool,Ne04" objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, strEntryName, strValue Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.