在 Win7 中使用 PS、cmd、vbs 等脚本自动更新打印机驱动程序(打印机设置)和打印机首选项是否存在问题?

在 Win7 中使用 PS、cmd、vbs 等脚本自动更新打印机驱动程序(打印机设置)和打印机首选项是否存在问题?

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 分钟不活动后,电脑将被注销。无法在正常工作时间执行这些驱动程序更改,因为那时电脑未注销,因此到目前为止,这些更改都是通过 RDP 登录并在夜间手动逐台电脑执行的。我甚至不介意弄清楚如何远程登录某人,而无需 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 drivername我使用 RDP 登录并运行脚本后,它已成功更新。显然我根本不想使用 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).

来源执行


进一步阅读

相关内容