Como removo uma conexão de impressora sem a intervenção do usuário?

2

A situação é a seguinte: estamos substituindo 11 impressoras por modelos mais novos, e os instalaremos em nosso servidor de impressão e os compartilharemos. O plano é compartilhar as novas impressoras com nomes diferentes dos que estão substituindo e desfazer a distribuição das antigas.

Por isso, preciso criar uma maneira de remover automaticamente as conexões do cliente para impressoras antigas. Os clientes são principalmente o Windows 7 com alguns XP.

Minha primeira ideia foi chamar prnmngr.vbs do script de login para remover cada impressora antiga explicitamente pelo nome. O problema é que alguns usuários não fazem logout quando são feitos no dia, por isso não posso contar com o script de login em execução antes da próxima impressão. Eu poderia executar remotamente prnmngr.vbs usando o SCCM, mas se ele não estiver "representando" o usuário, não acho que ele removerá suas impressoras. Alguma ideia? Eu poderia procurar como acessar o WMI usando código c # e escrever um "trojan" para remover impressoras específicas sem exigir que o usuário faça alguma coisa? (Eu estou apenas meio brincando).

Estou aberto a qualquer sugestão! Obrigado!

    
por 1.618 19.12.2012 / 23:57

2 respostas

4

Preferências da impressora de política de grupo contém uma opção "Excluir". Se você estiver implantando as novas impressoras com um GPO GPP, poderá adicionar os itens Excluir ao final dele ou criar um novo Delete Printers GPO.

Eu fiz uma transição assim para cerca de 75 impressoras e tudo correu muito bem. Temos um Deploy Printers GPO vinculado no nível do domínio com todas as impressoras contidas nele e os mapeamentos são controlados por meio de associação ao grupo usando a segmentação por nível de item. Também temos um Deleted Printers GPO no nível do domínio que possui todas as impressoras antigas no antigo servidor de impressão. Eu não me incomodei em filtrar isso, porque realmente não há necessidade. Se é velho e está mapeado, tem que ir!

A coisa boa sobre itens GPP é que eles são executados em intervalos de atualização de política, o que significa que nenhum logon / logoff / reinicialização é necessário. Basta configurar a política, vinculá-la e sentar-se. Não mexer com scripts ou WMI ou qualquer outra coisa.

    
por 20.12.2012 / 00:30
3

Realmente remover as impressoras é a parte fácil .

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

A parte difícil (ou pelo menos dolorosa) está empurrando isso para todos os usuários sem que eles tenham que fazer algo (como reiniciar). Francamente, minha solução seria enviar um e-mail informando aos usuários para reiniciar para obter as novas impressoras mapeadas. Dessa forma, você pode colocar o script de remoção da impressora na configuração Run Once do registro por meio do GPO e mapear as novas impressoras por meio do GPP posteriormente.

Se você tiver um ambiente menor ou bem organizado, poderá sempre executar um script para enviar para todas as estações de trabalho do usuário com psexec (exigiria um .csv ou outro arquivo de texto delimitado com uma lista de suas estações de trabalho) mas, novamente, isso parece mais uma dor que vale a pena, e minha preferência seria apenas dizer aos usuários para reiniciarem.

    
por 20.12.2012 / 00:24