Problemas que automatizam a atualização do driver da impressora (configurações da impressora) e as preferências da impressora no Win7, usando um script PS, cmd, vbs, etc?

2

O WMI pode fazer isso, mas eu tenho um problema, os PCs estão ligados, mas desconectados. Se eu tentar executar:

wmic /node:%strIP% printer where DeviceID="lp1" set DriverName="Lexmark Universal v2"

Ele falha com uma mensagem sobre uma "falha genérica". Eu RDP e, em seguida, execute o mesmo comando do meu fim e funciona. A versão do Powershell que estou usando é mais antiga, por isso não tem alguns dos cmdlets da impressora, e a atualização do PS está atualmente fora de questão. Existe uma maneira de logar alguém remotamente, sem realmente ter que RDP em? Via PS, cmd, PSEXEC, etc?

A outra avenida que eu tomei é usando o regedit, mas estou acertando alguns problemas com isso, ou seja, não consigo descobrir o que copiar. No regedit, posso alterar o nome de usuário e a configuração que habilitam duplex e tray2 (nas configurações da impressora), mas não consigo entender como alterar as configurações nas preferências da impressora para imprimir em frente e verso e fazê-lo ao longo da borda longa.

O que eu fiz para descobrir o que mudar, eu encontrei o nome da impressora no regedit como um valor de dados e exportei as chaves antes de alterar as configurações. Então eu exportei novamente depois de alterar as configurações. Em seguida, usei fc /c /a /u before.reg after.reg para obter as alterações. Eu cortei o .reg para incluir apenas os valores alterados. Executando o .reg parece mudar tudo, mas a impressão de ambos os lados, ao longo das configurações de borda longa. É uma impressora lexmark, por isso estou querendo saber se talvez as preferências por ela sejam armazenadas em outro lugar.

Minha empresa recentemente alterou as políticas de segurança, pois depois de 30 minutos de inatividade, um PC é desconectado. Não é possível realizar essas alterações de driver durante o horário normal, quando os PCs NÃO estão desconectados, por isso, a partir de agora, eles foram executados durante a noite fazendo RDPing e fazendo pc por pc manualmente. Eu nem me importo em descobrir como registrar alguém remotamente, sem precisar fazer o RDP, então o WMI pode fazer sua mágica então.

Eu testei usando apenas o Powershell:

$Str = Read-Host "Please select a store number [###] "
$PC = Read-Host "Please select a PC number [##] "

$PCNm = "0$Str-CCPC-$PC"

$lp1 = Get-WMIObject -ComputerName $PCNm -Query "SELECT * from Win32_Printer Where DeviceID='lp1'"
$lp1.DriverName = "Lexmark Universal v2"
$lp1.Put()

Ele também falha lá com uma falha genérica, quando ninguém está logado no pc. Eu posso consultar o WMI para propriedades, portanto, o WMI está funcionando, mas quando tento definir valores, ele falha. Eu verifiquei com um format-list -property drivername ele atualizou bem, uma vez eu fiz o login via RDP e depois correu o script. Obviamente eu não quero RDP em tudo. Eu habilitei o PSRemoting no pc, apenas no caso também, então vou tentar invoke-command next.

    
por user3377627 02.06.2015 / 01:19

1 resposta

0

Existe uma maneira de registrar alguém remotamente?

Você pode usar psexec para executar um comando remoto como um usuário específico.

psexec \computer -u user -p psswd [options] command [arguments]

Tente o seguinte comando:

psexec \computer -u user -p psswd wmic /node:%strIP% printer where DeviceID="lp1" set DriverName="Lexmark Universal v2"

Notas:

  • Você também pode querer examinar a opção @run_file (comando Executar em todos os computadores listados no arquivo de texto especificado)
  • Para ser executado em todos os computadores no domínio atual, insira \* em vez de \computer

Sintaxe

psexec \computer[,computer[,..] [options] command [arguments]

psexec @run_file [options] command [arguments]

Options:

computer   The computer on which psexec will run command.
           Default = local system 
           To run against all computers in the current domain enter "\*"
@run_file  Run command on every computer listed in the text file specified.

command    Name of the program to execute

...

-p psswd   Specify a password for user (optional). 
           Passed as clear text.
           If omitted, you will be prompted to enter a hidden password.

-u user    Specify a user name for login to remote computer(optional).

Fonte psexec

Leitura Adicional

por 02.11.2015 / 14:10