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.
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?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 447045
Url: https://administrator.de/forum/powershell-logon-script-set-default-printer-fuer-rdp-client-447045.html
Ausgedruckt am: 09.04.2025 um 13:04 Uhr
4 Kommentare
Neuester Kommentar

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
Moin,
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?
Versuche mal am Anfang des Skripts ein
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
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?
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?
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

Hast du den Link mal gelesen? Dort steht der wirkliche Grund und dann kann man das auch problemlos aus einem Logon-Script auslesen.