joe2017
Goto Top

Powershell Logon Script - Set Default Printer für RDP Client

Hallo zusammen,

ich habe ein schönes Powershell Script geschrieben in welchem ich für meinen RDP Client den Standard Drucker setze.
Leider gibt es hier ein Problem sobald ich das Script als Logon Script auf meinem Server ausführen lasse.

Anbei das Script.
$csv = Import-Csv -LiteralPath "\\ServerPath\Var.txt" -Delimiter ";"  
$csv | %{
  if ($_.'clientname' -match $env:CLIENTNAME){  
  $printer = $_.'printer'  
  }
}
$defaultprinter = Get-WmiObject -Query "Select * From Win32_Printer Where Name = '$printer'"  
$defaultprinter.SetDefaultPrinter()

In der Var.txt steht lediglich die Zuordnungen (clientname;printername) zu meinen Clients.

Wenn ich das Script in der laufenden RDP Session ausführe, wird mir der Standard Drucker wie gewünscht gesetzt.
Wenn ich das Script als Logon Script ausführe, funktioniert das ganze nicht. Ich habe mir jetzt noch eine echo $env:CLIENTNAME in eine Datei eingebaut. Auch hier wird der CLIENTNAME nicht ausgegeben.
Kann es sein, dass während der Anmeldung die Variable $env:CLIENTNAME noch nicht zur Verfügung steht? Oder woran könnte das liegen?

Content-Key: 447045

Url: https://administrator.de/contentid/447045

Ausgedruckt am: 28.03.2024 um 11:03 Uhr

Mitglied: 139374
139374 02.05.2019 aktualisiert um 18:08:08 Uhr
Goto Top
ich habe ein schönes Powershell Script geschrieben
Naja, schön ist was anderes...😁
Kann es sein, dass während der Anmeldung die Variable $env:CLIENTNAME noch nicht zur Verfügung steht? Oder woran könnte das liegen?
Deswegen
Mitglied: erikro
Lösung erikro 03.05.2019 um 09:39:59 Uhr
Goto Top
Moin,

Zitat von @joe2017:
Kann es sein, dass während der Anmeldung die Variable $env:CLIENTNAME noch nicht zur Verfügung steht? Oder woran könnte das liegen?

Das kann nicht nur sein, sondern ist ganz logisch. In der Variblen steht der Name, von dem aus sich eingeloggt wurde. Woher soll der Server das vor der Anmeldung wissen? face-wink

Versuche mal am Anfang des Skripts ein

start-sleep 30

Dann wartet das Skript 30 Sekunden, bis der Spaß losgeht. Dann sollte der Anmeldeprozess so weit abgeschlossen sein, dass die Variable gefüllt ist. Falls nicht, dann auf 40, 50 ... erhöhen. Ich habe ein ähnliches Problem so gelöst. Nett ist es dann, den Usern noch eine Rückmeldung zu geben, wann sie denn anfangen können zu drucken. Also ein kleines Popup, das darauf aufmerksam macht, dass die Druckereinrichtung fertig ist.

hth

Erik
Mitglied: joe2017
joe2017 03.05.2019 um 11:15:13 Uhr
Goto Top
Hallo Erik,

ja das habe ich mir im nachhinein auch gedacht. Eigentlich ganz logisch.
Ich hab das jetzt anders gelöst. Ich start das Script über eine GPO.

USER/Administrative Vorlagen/System/Logon/Run program...

Aber das mit dem Sleep hätte sicherlich auch funktioniert.

Vielen Dank!
Mitglied: 139374
139374 03.05.2019 aktualisiert um 11:21:47 Uhr
Goto Top
Hast du den Link mal gelesen? Dort steht der wirkliche Grund und dann kann man das auch problemlos aus einem Logon-Script auslesen.