Zum Inhalt wechseln


Foto

Netzwerk Drucker per vbs entfenen


  • Bitte melde dich an um zu Antworten
6 Antworten in diesem Thema

#1 Refnex

Refnex

    Newbie

  • 18 Beiträge

Geschrieben 23. August 2012 - 07:21

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

#2 Sunny61

Sunny61

    Expert Member

  • 13.735 Beiträge

Geschrieben 23. August 2012 - 07:48

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. ;)
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#3 Refnex

Refnex

    Newbie

  • 18 Beiträge

Geschrieben 23. August 2012 - 08:04

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.

#4 Stefan W

Stefan W

    Board Veteran

  • 1.493 Beiträge

Geschrieben 23. August 2012 - 08:34

Hi,
du kannst auch per Gruppenrichtlinie einschränken (zB nur Mitglieder einer Sicherheitsgruppe)
lg

#5 Sunny61

Sunny61

    Expert Member

  • 13.735 Beiträge

Geschrieben 23. August 2012 - 10:25

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. ;)

Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#6 Stefan W

Stefan W

    Board Veteran

  • 1.493 Beiträge

Geschrieben 23. August 2012 - 10:28

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


#7 Refnex

Refnex

    Newbie

  • 18 Beiträge

Geschrieben 23. August 2012 - 12:27

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