Por motivos fora do meu controle, fui encarregado de configurar GPO / GPPs para implantar mais de 100 impressoras em mais de 1000 clientes.
A boa notícia é que temos mais de uma dúzia de sites e, na maior parte, tenho permissão para enviar todas as impressoras no site X a todos os PCs clientes no site X.
A má notícia é que as duas maneiras pelas quais sei fazê-lo ( "Implantar com a Diretiva de Grupo ...", do servidor de impressão " e usar as Preferências da Diretiva de Grupo / GPP ) envolvem muito mais trabalho manual do que estou disposto a fazer. Parece que não consigo selecionar todas as impressoras em um servidor de impressão e usar a Deploy with Group Policy...
opção, por exemplo - ela espera que eu faça isso uma a uma, o que não vai acontecer.Os GPPs são ainda piores , pois espera que eu selecione o caminho de uma impressora no servidor de impressão e insira manualmente um monte de informações (como o IP da impressora) que ela poderá obter da conexão da impressora.
Meu Google-Fu para um script para adicionar todas as impressoras em um servidor de impressão a um GPO / GPP ficou vazio, e parece que não vejo outra maneira de fazer isso, mesmo de maneira semi-automatizada, mas estou insistindo com a crença de que estou perdendo alguma coisa, porque nenhuma pessoa sã escolheria adicionar manualmente centenas de impressoras aos GPOs.
Idealmente, eu gostaria de encontrar uma maneira programática de usar os GPPs, mas nessas circunstâncias, qualquer solução que não envolva dezenas de horas adicionando impressoras manualmente seria ótima.
Alguém tem uma maneira de fazer isso ou vou precisar criar um script do PowerShell e / ou induzir um subordinado a fazer isso?
fonte
$GPM = New-Object -ComObject GPMgmt.Gpm
. Eu acho que essa interface, apesar de ser um porco absoluto para se trabalhar, pode fornecer um método um pouco mais suportável do que simplesmente invadir algum XML que sai parecendo e cheirando como um GPO real. Ninguém gosta de COM embora. Menos de todos nós, Powershellers.Respostas:
Pesquisei bastante no Google e até brinquei com a
backup-GPO
esperança de poder hackear o arquivo XML resultante e reimportá-lo, mas suspeito que um script do PowerShell esteja no seu futuro.Não é tão ruim. Você pode gerar a lista de impressoras a partir do servidor mais próximo, percorrê-las e mapeá-las.
Algo assim:
Se as impressoras tiverem nomes lógicos e houver alguma maneira lógica de identificar as máquinas, você poderá refinar mais. Eu costumava escolher o servidor mais próximo com base no acesso ao endereço IP do cliente, por exemplo. Se o endereço IP for 10.20. *, Vá para o servidor1. Etc.
Espero que ajude.
Editar:
Olhando a documentação do @ EvanAnderson, tenho certeza de que o XML é hackável.
Bit relevante do meu arquivo exportado (com redações):
fonte
O gerenciamento de Powershell da Diretiva de Grupo é péssimo sem produtos (comerciais) de terceiros, na minha opinião.
Acho que você está preso no XML (ou no HTML, se preferir ) nos Objetos de Diretiva de Grupo para fazer o que procura.
Felizmente, o XML não parece tão aterrorizante . O valor de UID por impressora (que eu acredito ser o que @KatherineVillyard está se referindo em seu comentário) é apenas um GUID aleatório gerado para cada impressora referenciada no XML.
Aqui está um exemplo de código do Powershell, modelado descaradamente com o código de Katherine:
(Eu escrevo um código Powershell realmente muito feio.)
Na verdade, não tentei fazer com que o GPP CSE analisasse esse XML. O XML valida, pelo menos.
Estou começando a pensar em escrever alguma monstruosidade usando
Get-GPO
e analisando o GUID para chegar ao caminho do sistema de arquivos para o GPO no SYSVOL, mas, como preciso fazer um trabalho real esta noite, acho que vou sair isso como um exercício para o leitor. > sorriso <Deve ser altamente viável, no entanto.fonte
Recentemente, empreendi um projeto semelhante e, depois de analisar o bom e velho método push de GPO versus o GPP mais recente e o script, optei por criar o script completo. Não tenho ideia do que funcionaria melhor para você, mas aqui estão algumas dicas para você:
Idealmente, use um cliente com um novo sistema operacional (Windows 8/2012 +) para conectar-se aos servidores de impressão e obter informações da impressora nos servidores de impressão:
Get-Printer-computer PrintServerName
Use os grupos do AD Security para mapear filas de impressão para computadores. Então, digamos que você tenha uma fila de impressão (reunida a partir do comando acima) chamada \ PrintServer1 \ MyColorPrinter123, crie um grupo de segurança como printer.group.PrintServer1.MyColorPrinter123 e adicione os computadores a esse grupo
No script de inicialização, tenha a função de verificar a associação ao grupo do computador quando ele estiver chegando e verificar se ele faz parte de algum grupo de impressoras. Se estiver, use os comandos internos printui.exe (ou printui.dll) para mapear a impressora assim
Expressão de chamada 'rundll32 printui.dll, PrintUIEntry / ga / n "\ PrintServer1 \ MyColorPrinter123" / q'
Quando o computador estiver ligado, esse serviço de spooler de impressão enviará a 'conexão de impressão', que é o que os GPOs costumavam fazer, para qualquer usuário que faça login.
Você pode ser muito mais detalhado **, mas em um nível alto é o que é preciso.
** Criei uma GUI que permite que os usuários (técnicos) escolham qualquer servidor de impressão e fornece uma lista de impressoras nesse servidor. Se eles escolherem um, poderão ver todas as propriedades dele. Essa informação vem da Get-Printer que mencionei acima. Se você exportar esses dados como um CSV, poderá reutilizá-los para exibir informações.
** Os técnicos usam essa GUI para enviar uma solicitação para adicionar um computador às impressoras que devem conectar. Este é um 'pedido', porque eles não têm permissões no AD.
** Um script de back-end simples observa a pasta e adiciona o computador ao grupo de impressoras que mencionei acima. Portanto, se você já sabe quem deve obter qual impressora, ótimo, pode fazê-lo facilmente. Adicionar computadores a grupos é uma tarefa simples com os Cmdlets do AD.
** Você também pode agendar um trabalho para verificar os servidores de impressão para ver se há novas filas de impressão e compará-los com os grupos do AD.
Portanto, criar uma solução 'gerenciada' é um pouco complicado, mas é fácil começar com o básico e continuar adicionando para ter um sistema muito flexível e fácil de usar que não envolve GPOs ... apenas um pouco do PowerShell
fonte