Probleme beim Automatisieren der Druckertreiberaktualisierung (Druckereinstellungen) und der Druckereinstellungen in Win7 mithilfe eines PS-, cmd-, vbs- usw.-Skripts?

Probleme beim Automatisieren der Druckertreiberaktualisierung (Druckereinstellungen) und der Druckereinstellungen in Win7 mithilfe eines PS-, cmd-, vbs- usw.-Skripts?

WMI kann das, aber ich habe ein Problem. Die PCs sind eingeschaltet, aber abgemeldet. Wenn ich versuche, Folgendes auszuführen:

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

Es schlägt mit einer Meldung über einen „generischen Fehler“ fehl. Ich melde mich per RDP an und führe dann denselben Befehl von meinem Ende aus aus, und es funktioniert. Die von mir verwendete Powershell-Version ist älter, daher fehlen einige der Drucker-Cmdlets, und eine Aktualisierung von PS kommt derzeit nicht in Frage. Gibt es eine Möglichkeit, jemanden per Remote-Zugriff anzumelden, ohne sich tatsächlich per RDP anmelden zu müssen? Über PS, cmd, PSEXEC usw.?

Der andere Weg, den ich gewählt habe, ist die Verwendung von regedit, aber damit stoße ich auf einige Probleme, nämlich, dass ich nicht herausfinden kann, was ich kopieren soll. In regedit kann ich den Treibernamen und die Einstellung ändern, die Duplex und Fach 2 aktivieren (in den Druckereinstellungen), aber ich kann nicht herausfinden, wie ich die Einstellungen in den Druckereinstellungen für beidseitiges Drucken und dies entlang der langen Kante ändern kann.

Um herauszufinden, was ich ändern muss, habe ich in regedit nach dem Druckernamen als Datenwert gesucht und die Schlüssel exportiert, bevor ich die Einstellungen geändert habe. Dann habe ich es NACH dem Ändern der Einstellungen erneut exportiert. Anschließend habe ich fc /c /a /u before.reg after.regdie Änderungen erhalten. Ich habe die .reg-Datei so zerstückelt, dass nur die geänderten Werte enthalten sind. Das Ausführen der .reg-Datei scheint alles zu ändern, außer die Einstellungen für beidseitiges Drucken entlang der langen Kante. Es handelt sich um einen Lexmark-Drucker, daher frage ich mich, ob die Einstellungen dafür vielleicht woanders gespeichert sind.

Meine Firma hat vor Kurzem die Sicherheitsrichtlinien dahingehend geändert, dass ein PC nach 30 Minuten Inaktivität abgemeldet wird. Diese Treiberänderungen können nicht während der normalen Arbeitszeiten durchgeführt werden, wenn die PCs NICHT abgemeldet sind. Daher werden sie bis jetzt über Nacht durchgeführt, indem man sich per RDP anmeldet und die einzelnen PCs manuell durchführt. Ich hätte nichts dagegen, herauszufinden, wie man jemanden remote anmeldet, ohne sich jemals per RDP anzumelden, damit WMI dann seine Magie entfalten kann.

Ich habe es nur mit Powershell versucht:

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

Auch dort schlägt es mit einem allgemeinen Fehler fehl, wenn niemand am PC angemeldet ist. Ich kann WMI nach Eigenschaften abfragen, also funktioniert WMI, aber wenn ich versuche, Werte festzulegen, schlägt es fehl. Ich habe es mit einem überprüft, format-list -property drivernamees wurde problemlos aktualisiert, nachdem ich mich über RDP angemeldet und DANN das Skript ausgeführt habe. Offensichtlich möchte ich mich überhaupt nicht über RDP anmelden. Ich habe PSRemoting auf dem PC aktiviert, nur für den Fall, also werde ich es als invoke-commandNächstes versuchen.

Antwort1

Gibt es eine Möglichkeit, jemanden aus der Ferne anzumelden?

Sie können psexeceinen Remote-Befehl als bestimmter Benutzer ausführen.

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

Versuchen Sie den folgenden Befehl:

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

Anmerkungen:

  • Möglicherweise möchten Sie sich auch die @run_fileOption „Befehl auf jedem Computer ausführen, der in der angegebenen Textdatei aufgeführt ist“ ansehen.
  • Um die Ausführung auf allen Computern in der aktuellen Domäne auszuführen, geben Sie \\*statt\\computer

Syntax

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

psexec @run_file [options] command [arguments]

Optionen:

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

Quellepsexec


Weitere Informationen

  • Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
  • psexec- Führen Sie einen Befehlszeilenprozess auf einem Remotecomputer aus. Führen Sie einen Befehlszeilenprozess auf einem Remotecomputer aus.

verwandte Informationen