在 Win7 中使用 PS、cmd、vbs 等腳本自動更新印表機驅動程式(印表機設定)和印表機首選項時出現問題嗎?

在 Win7 中使用 PS、cmd、vbs 等腳本自動更新印表機驅動程式(印表機設定)和印表機首選項時出現問題嗎?

WMI 可以做到這一點,但我有一個問題,電腦已打開,但已登出。如果我嘗試運行:

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

它失敗並顯示有關“一般失敗”的訊息。我輸入 RDP,然後從我的一端運行相同的命令,它起作用了。我使用的 Powershell 版本較舊,因此它沒有一些印表機 cmdlet,目前無法更新 PS。有沒有一種方法可以遠端登入某人,而無需實際透過 RDP 登入?透過 PS、cmd、PSEXEC 等?

我採取的另一種方法是使用 regedit,但我遇到了一些問題,即我不知道要複製什麼。在regedit 中,我可以更改驅動程式名稱以及啟用雙面列印和紙盤2 的設定(在印表機設定中),但我無法弄清楚如何更改印表機首選項中的設定以進行雙面列印並沿長邊進行列印。

為了找出要更改的內容,我在註冊表中查找了印表機名稱作為資料值,並在更改設定之前匯出了金鑰。然後我在更改設定後再次導出它。然後我就fc /c /a /u before.reg after.reg習慣改變了。我將 .reg 切碎以僅包含更改的值。運行 .reg 似乎改變了一切,但打印雙面,沿著長邊設置。它是一台 lexmark 印表機,所以我想知道它的首選項是否儲存在其他地方。

我的公司最近更改了安全策略,電腦閒置 30 分鐘後就會登出。當電腦未登出時,無法在正常時間執行這些驅動程式更改,因此到目前為止,它們一直透過 RDPing 連夜執行並手動逐台電腦執行。我甚至不介意弄清楚如何遠端登入某人,而無需 RDPing,這樣 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()

當沒有人登入電腦上時,它也會因一般故障而失敗。我可以查詢 WMI 的屬性,因此 WMI 正在工作,但是當我嘗試設定值時,它失敗了。format-list -property drivername當我透過 RDP 登入並運行腳本後,我用它進行了驗證,它更新得很好。顯然我根本不想加入 RDP。我確實在電腦上啟用了 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).

來源執行程式


進一步閱讀

相關內容