PS-Skript läuft bei händischer Ausführung, aber nicht als logon-Skript
Moin,
normalerweise bekommen unsere User per Skript einen Standarddrucker je nach Abteilung zugewiesen. Seit Kurzem gibt es auch Springer, die in verschiedenen Abteilungen tätig sind. Die sollen nun einen Dialog bekommen, in dem sie den Drucker je nach dem, wo sie gerade sind, auswählen sollen. Das Skript funktioniert, wenn ich es händisch ausführe. Wenn ich es aber als GPO als Start-Skript <edit>oops, ich meinte Logon-Skript</edit>einfüge, dann nicht. Es liegt im NETLOGON-Verzeichnis. Server ist 2012 R2. Der Client, mit dem ich teste, ist ein Win10.
Hier das Skript:
Hat einer eine Idee, warum das so ist?
Liebe Grüße
Erik
normalerweise bekommen unsere User per Skript einen Standarddrucker je nach Abteilung zugewiesen. Seit Kurzem gibt es auch Springer, die in verschiedenen Abteilungen tätig sind. Die sollen nun einen Dialog bekommen, in dem sie den Drucker je nach dem, wo sie gerade sind, auswählen sollen. Das Skript funktioniert, wenn ich es händisch ausführe. Wenn ich es aber als GPO als Start-Skript <edit>oops, ich meinte Logon-Skript</edit>einfüge, dann nicht. Es liegt im NETLOGON-Verzeichnis. Server ist 2012 R2. Der Client, mit dem ich teste, ist ein Win10.
Hier das Skript:
$date = Get-Date
out-file -FilePath $env:userprofile\documents\drucker.txt -InputObject "Drucker_springer wurde ausgeführt $date" -Append
# Diese Zeile wird in das Log geschrieben.
Start-Sleep 20
# Das steht da, damit die Drucker auch wirklich alle da sind.
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = "Bitte Drucker auswählen"
$form.Size = New-Object System.Drawing.Size(700,(130+80))
$form.StartPosition = "CenterScreen"
$Font = New-Object System.Drawing.Font("Arial",10,[System.Drawing.FontStyle]::Regular)
$form.Font = $Font
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(312,(42+80))
$OKButton.Size = New-Object System.Drawing.Size(76,27)
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,14)
$label.Size = New-Object System.Drawing.Size(480,20)
$label.Text = "Wählen Sie einen Standarddrucker aus:"
$form.Controls.Add($label)
$listBox = New-Object System.Windows.Forms.ListBox
$listBox.Location = New-Object System.Drawing.Point(10,42)
$listBox.Size = New-Object System.Drawing.Size(660,80)
$listBox.Height = 80
$listboxFont = New-Object System.Drawing.Font("Arial",12,[System.Drawing.FontStyle]::Regular)
$listBox.font = $listboxFont
[void] $listBox.Items.Add("Drucker1")
[void] $listBox.Items.Add("Drucker2")
[void] $listBox.Items.Add("Drucker3")
$form.Controls.Add($listBox)
$form.Topmost = $True
$result = $form.ShowDialog()
out-file -FilePath $env:userprofile\documents\drucker.txt -InputObject "Drucker_springer Dialog anzeigen $date" -Append
# Diese Zeile taucht im Log nicht auf, wenn ich das per GPO ausführen lasse.
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $listBox.SelectedItem
$x
$defaultprinter = $(Get-WmiObject -class win32_printer | Where-Object { $_.name -like "*$x*" })
# -like, weil das ein TS ist, der die Drucker vom Client bekommt. Daher haben die immer wieder unterschiedliche Namen.
$defaultprinter.setdefaultprinter()
}
Hat einer eine Idee, warum das so ist?
Liebe Grüße
Erik
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 516664
Url: https://administrator.de/forum/ps-skript-laeuft-bei-haendischer-ausfuehrung-aber-nicht-als-logon-skript-516664.html
Ausgedruckt am: 26.03.2025 um 11:03 Uhr
8 Kommentare
Neuester Kommentar

Wenn ich es aber als GPO als Start-Skript einfüge, dann nicht
Hat einer eine Idee, warum das so ist?
Ja, Startscripts werden per Default unsichtbar mit dem SYSTEM-Account ausgeführt, ein Dialog bekommt der User also nicht zu Gesicht und deswegen kommt Zeile 49 gar nicht erst zum Zug weil der unsichtbare Dialog ja gar nicht geschlossen werden kann. DIALOGE müssen im Kontext des Users (User-Session) laufen sonst sieht er sie nicht in seiner Session.Hat einer eine Idee, warum das so ist?

Login Script Verzögerung wurde per GPO deaktiviert? Per Default kann Windows Login-Scripts bis zu 10 Minuten nach dem Login verzögern. Außerdem verzögert das Skript selbst mit Zeile 4 um 20 Sekunden.
Kapsele das Skript mal mit Start-Transcript
Wird die GPO überhaupt angewendet? => gspresult /r bzw. rsop.msc
Kapsele das Skript mal mit Start-Transcript
Wird die GPO überhaupt angewendet? => gspresult /r bzw. rsop.msc

Als Ergänzung, wenn es per Login-Skript ausgeführt wird musst du die Ausführung von Login-Skripts nat. auch per GPO auch auf Sichtbar schalten (unschön) ..., also besser wie @Kraemer sagt gleich per Aufgabenplanung.