PS,cmd,vbs 등 스크립트를 사용하여 Win7에서 프린터 드라이버 업데이트(프린터 설정) 및 프린터 기본 설정을 자동화하는 데 문제가 있습니까?

PS,cmd,vbs 등 스크립트를 사용하여 Win7에서 프린터 드라이버 업데이트(프린터 설정) 및 프린터 기본 설정을 자동화하는 데 문제가 있습니까?

WMI에서는 가능하지만 문제가 있습니다. PC는 켜져 있지만 로그오프되어 있습니다. 실행하려고 하면:

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

"일반 오류"에 대한 메시지와 함께 실패합니다. RDP를 입력한 다음 내 쪽에서 동일한 명령을 실행하면 작동합니다. 내가 사용하고 있는 Powershell 버전은 이전 버전이므로 일부 프린터 cmdlet이 없으며 PS 업데이트는 현재 불가능합니다. 실제로 RDP에 로그인하지 않고도 누군가를 원격으로 로그인할 수 있는 방법이 있습니까? PS, cmd, PSEXEC 등을 통해?

제가 택한 또 다른 방법은 regedit를 사용하는 것인데, 복사할 항목을 알 수 없어서 문제가 발생합니다. regedit에서 드라이버 이름과 양면 인쇄 및 트레이 2를 활성화하는 설정(프린터 설정)을 변경할 수 있지만 양면 인쇄 및 긴 가장자리를 따라 인쇄하기 위해 프린터 기본 설정에서 설정을 변경하는 방법을 알 수 없습니다.

무엇을 변경해야 할지 파악하기 위해 regedit에서 프린터 이름을 데이터 값으로 찾아 설정을 변경하기 전에 키를 내보냈습니다. 그런 다음 설정을 변경한 후 다시 내보냈습니다. 그런 다음 fc /c /a /u before.reg after.reg변경 사항을 사용했습니다 . 변경된 값만 포함하도록 .reg를 잘랐습니다. .reg를 실행하면 모든 것이 변경되는 것처럼 보이지만 긴 가장자리 설정을 따라 양면이 인쇄됩니다. 그것은 lexmark 프린터이므로 이에 대한 기본 설정이 다른 곳에 저장되어 있는지 궁금합니다.

우리 회사는 최근 30분 동안 활동이 없으면 PC가 로그오프되도록 보안 정책을 변경했습니다. PC가 로그오프되지 않은 정규 시간 동안에는 이러한 드라이버 변경을 수행할 수 없습니다. 따라서 지금은 RDPing을 통해 밤새도록 수행하고 PC별로 수동으로 수행하고 있습니다. RDP를 사용하지 않고도 누군가를 원격으로 로그인하는 방법을 알아내면 WMI가 마법을 부릴 수 있을 것입니다.

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()

아무도 PC에 로그온하지 않은 경우 일반 오류로 인해 실패합니다. WMI에서 속성을 쿼리할 수 있으므로 WMI가 작동하지만 값을 설정하려고 하면 실패합니다. format-list -property drivernameRDP를 통해 로그인한 후 스크립트를 실행하면 문제 없이 업데이트되었음을 ​​확인했습니다 . 분명히 나는 ​​RDP를 전혀 원하지 않습니다. 만일을 대비해 PC에서 PSRemoting을 활성화했으므로 다음에 시도해 보겠습니다 invoke-command.

답변1

원격으로 누군가 로그인하는 방법이 있나요?

psexec특정 사용자로 원격 명령을 실행하는 데 사용할 수 있습니다 .

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

다음 명령을 시도해 보십시오:

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

노트:

  • @run_file옵션(지정된 텍스트 파일에 나열된 모든 컴퓨터에서 명령 실행)을 살펴볼 수도 있습니다 .
  • 현재 도메인의 모든 컴퓨터에 대해 실행하려면 \\*대신에 다음을 입력하십시오.\\computer

통사론

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

psexec @run_file [options] command [arguments]

옵션:

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

원천psexec


추가 자료

  • Windows CMD 명령줄의 AZ 인덱스- Windows cmd 라인과 관련된 모든 것에 대한 훌륭한 참고 자료입니다.
  • psexec- 원격 컴퓨터에서 명령줄 프로세스를 실행합니다. 원격 시스템에서 명령줄 프로세스를 실행합니다.

관련 정보