atribuições de impressora para estações de trabalho do windows xp em um ambiente de diretório ativo

2

Estou usando o seguinte script para lidar com a remoção de todas as antigas impressoras em rede de máquinas e, em seguida, atribuir as mais adequadas e tornar um deles o padrão. Esse script é atribuído à unidade organizacional na qual as estações de trabalho residem e usa o loopback de política de grupo para que todos os usuários que fizerem login obtenham as impressoras apropriadas mapeadas para eles.

Eu tentei usar o novo Gerenciador de Impressora como parte do W2K3 R2, mas ao atribuir o padrão dessa forma, recebi um erro de que a impressora não existe, então voltei a usar o script.

Uma falha que estou percebendo é que ele não remove nenhuma impressora que tenha sido mapeada de uma sessão RDP (não vemos isso em todos os lugares, mas há alguns locais). Existe alguma maneira de enumerar todas as impressoras RDP e removê-las de forma semelhante ao modo como estou enumerando e removendo impressoras em rede?

' 
' Printers.vbs - Windows Logon Script.
'

RemovePrinters
AddPrinters

Sub RemovePrinters()
   On Error Resume Next
   Dim strPrinter
   Set objNetwork = WScript.CreateObject("WScript.Network")
   Set colPrinters = objNetwork.EnumPrinterConnections
   For i = 0 to colPrinters.Count -1 Step 2
      strPrinter=CStr(colPrinters.Item(i+1))
      If Not InStr(strPrinter,"\") = 0 Then
         objNetwork.RemovePrinterConnection strPrinter, True, True
      End If
   Next
End Sub


Sub AddPrinters()
   On Error GoTo 0
   Set objNetwork = CreateObject("WScript.Network") 
   objNetwork.AddWindowsPrinterConnection "\printers1\JH120-DELL5310"
   objNetwork.SetDefaultPrinter "\printers1\Jh120-DELL5310"
End Sub
    
por another_netadmin 20.07.2010 / 17:22

2 respostas

0

Eu uso isso para remover impressoras parece funcionar em todos os cenários.

    Dim objNetwork, objPrinters
Set objNetwork = CreateObject("WScript.Network")
Set objPrinters = objNetwork.EnumPrinterConnections
' ### Delete selected network printer
objNetwork.RemovePrinterConnection "\GARCIA\Dell Printer 3100cn PS", True, True
objNetwork.RemovePrinterConnection "\HENDRIX\Dell Printer 3100cn PS", True, True
objNetwork.RemovePrinterConnection "\HENDRIX\Brother PCL5e Driver", True, True
objNetwork.RemovePrinterConnection "\HENDRIX\HP LaserJet 4250 PS", True, True
objNetwork.RemovePrinterConnection "\STANLEY\HP LaserJet 4250 PS", True, True
    
por 20.07.2010 / 17:53
0

Não sei ao certo como o SO lida com impressoras RDP, independentemente de as tratar como impressoras "locais" ou impressoras de "rede". Se as impressoras aparecerem no registro em HKLM \ System \ CurrentControlSet \ Control \ Print \ Printers, use printui.dll para excluir o objeto da impressora da seguinte forma:

rundll32 printui.dll, PrintUIEntry / dl / n "NOME DA IMPRESSORA VAI AQUI"

OTOH, se as impressoras aparecerem no registro em HKCU \ Printers \ Connections, o método que você está usando deve ter feito o truque. Talvez haja algo mais impedindo que as conexões sejam excluídas? Os usuários estão conectados a um servidor de terminal quando o script é executado?

    
por 24.07.2010 / 08:19