Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PS-Skript läuft bei händischer Ausführung, aber nicht als logon-Skript

Mitglied: erikro

erikro (Level 3) - Jetzt verbinden

19.11.2019, aktualisiert 12:10 Uhr, 294 Aufrufe, 8 Kommentare

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:

01.
$date = Get-Date
02.
out-file -FilePath $env:userprofile\documents\drucker.txt -InputObject "Drucker_springer wurde ausgeführt $date" -Append
03.
# Diese Zeile wird in das Log geschrieben.
04.
Start-Sleep 20
05.
# Das steht da, damit die Drucker auch wirklich alle da sind.
06.

07.
Add-Type -AssemblyName System.Windows.Forms
08.
Add-Type -AssemblyName System.Drawing
09.

10.
$form = New-Object System.Windows.Forms.Form 
11.
$form.Text = "Bitte Drucker auswählen"
12.
$form.Size = New-Object System.Drawing.Size(700,(130+80)) 
13.
$form.StartPosition = "CenterScreen"
14.
$Font = New-Object System.Drawing.Font("Arial",10,[System.Drawing.FontStyle]::Regular)
15.

16.
$form.Font = $Font
17.

18.
$OKButton = New-Object System.Windows.Forms.Button
19.
$OKButton.Location = New-Object System.Drawing.Point(312,(42+80))
20.
$OKButton.Size = New-Object System.Drawing.Size(76,27)
21.
$OKButton.Text = "OK"
22.
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
23.
$form.AcceptButton = $OKButton
24.
$form.Controls.Add($OKButton)
25.

26.

27.
$label = New-Object System.Windows.Forms.Label
28.
$label.Location = New-Object System.Drawing.Point(10,14) 
29.
$label.Size = New-Object System.Drawing.Size(480,20) 
30.
$label.Text = "Wählen Sie einen Standarddrucker aus:"
31.
$form.Controls.Add($label) 
32.

33.
$listBox = New-Object System.Windows.Forms.ListBox 
34.
$listBox.Location = New-Object System.Drawing.Point(10,42) 
35.
$listBox.Size = New-Object System.Drawing.Size(660,80) 
36.
$listBox.Height = 80
37.
$listboxFont = New-Object System.Drawing.Font("Arial",12,[System.Drawing.FontStyle]::Regular)
38.
$listBox.font = $listboxFont
39.

40.
[void] $listBox.Items.Add("Drucker1")
41.
[void] $listBox.Items.Add("Drucker2")
42.
[void] $listBox.Items.Add("Drucker3")
43.

44.
$form.Controls.Add($listBox) 
45.

46.
$form.Topmost = $True
47.

48.
$result = $form.ShowDialog()
49.
out-file -FilePath $env:userprofile\documents\drucker.txt -InputObject "Drucker_springer Dialog anzeigen $date" -Append
50.
# Diese Zeile taucht im Log nicht auf, wenn ich das per GPO ausführen lasse.
51.

52.
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
53.
{
54.
    $x = $listBox.SelectedItem
55.
    $x
56.
    $defaultprinter = $(Get-WmiObject -class win32_printer | Where-Object { $_.name -like "*$x*" })
57.
    # -like, weil das ein TS ist, der die Drucker vom Client bekommt. Daher haben die immer wieder unterschiedliche Namen.
58.
    $defaultprinter.setdefaultprinter()
59.
}
Hat einer eine Idee, warum das so ist?

Liebe Grüße

Erik
Mitglied: 141965
19.11.2019, aktualisiert um 12:04 Uhr
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.
Bitte warten ..
Mitglied: erikro
19.11.2019 um 12:12 Uhr
Moin,

oops, ich meinte nicht Start-Skript, sondern Logon-Skript. Ich hab's oben korrigiert. Im Standardskript habe ich auch einen Dialog, der angezeigt wird:

01.
[Windows.Forms.MessageBox]::Show("Druckereinrichtung abgeschlossen ...”, "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
Liebe Grüße

Erik
Bitte warten ..
Mitglied: 141965
19.11.2019, aktualisiert um 12:17 Uhr
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
Bitte warten ..
Mitglied: Kraemer
19.11.2019 um 12:29 Uhr
Moin,

an deiner Stelle würde ich das mit der Aufgabenplanung abfackeln.

Gruß
Bitte warten ..
Mitglied: 141965
19.11.2019, aktualisiert um 12:31 Uhr
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.
Bitte warten ..
Mitglied: erikro
19.11.2019 um 12:34 Uhr
Moin,

Zitat von 141965:

Login Script Verzögerung wurde per GPO deaktiviert?

Ja klar. Die üblichen GPOs (auf Netzwerk warten, Skripts sofort ausführen ...) sind domainweit aktiviert. Wie gesagt, die anderen Skripte laufen ja problemlos.

Per Default kann Windows Login-Scripts bis zu 10 Minuten nach dem Login verzögern.

Das ist bekannt.

Außerdem verzögert das Skript selbst mit Zeile 4 um 20 Sekunden.

Wie im Kommentar steht, ist das Absicht. Das berücksichtige ich beim Testen natürlich.

Kapsele das Skript mal mit Start-Transcript

Mache ich gleich mal.

Wird die GPO überhaupt angewendet? => gspresult /r bzw. rsop.msc

Ja.

Liebe Grüße

Erik
Bitte warten ..
Mitglied: erikro
19.11.2019 um 13:17 Uhr
Zitat von 141965:

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)

Und wieso wird der Dialog beim anderen Skript angezeigt, obwohl das nicht eingestellt ist? Wo ist der Unterschied?

Aber ich habe es mal ausprobiert. Ergebnis: Schwarzes Fenster auf dem Bildschirm, in dem nichts passiert.

..., also besser wie @Kraemer sagt gleich per Aufgabenplanung.

Dann habe ich auch ein schwarzes Fenster auf dem Bildschirm mit dem Warnhinweis, dass das furchtbar gefährlich ist. Bestätige ich die Ausführung, dann geht's. Aber schön ist das überhaupt nicht.
Bitte warten ..
Mitglied: erikro
19.11.2019 um 13:40 Uhr
So, nun geht's. Ich habe einen Workaround hier gefunden:
https://social.technet.microsoft.com/Forums/windowsserver/en-US/028d8352 ...

Das Skript sieht nun so aus:

<code>
$date = Get-Date
out-file -FilePath $env:userprofile\documents\drucker.txt -InputObject "Drucker_springer wurde ausgeführt $date" -Append
Start-Sleep 20

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

#Workaround for displaying for when ran as a GPO:
$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'
$Form_StateCorrection_Load=
{
#Correct the initial state of the form to prevent the .Net maximized form issue
$Form.WindowState = $InitialFormWindowState
}
#End workaround

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

#Workaround for displaying for when ran as a GPO:
$InitialFormWindowState = $Form.WindowState
$Form.add_Load($Form_StateCorrection_Load)
#End workaround

$form.Topmost = $True

$result = $form.ShowDialog()
out-file -FilePath $env:userprofile\documents\drucker.txt -InputObject "Drucker_springer Dialog anzeigen $date" -Append


if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $listBox.SelectedItem
$x
$defaultprinter = $(Get-WmiObject -class win32_printer | Where-Object { $_.name -like "*$x*" })
$defaultprinter.setdefaultprinter()
}
Bitte warten ..
Ähnliche Inhalte
KiXtart

Aufgemotztes Logon Skript Vorschläge

Frage von AvaatarKiXtart2 Kommentare

Hallo zusammen, ich möchte unser in die Jahre gekommenes Logon Skript ablösen. Das Skript macht nichts besonders schweres, es ...

Windows Userverwaltung

PS Skript AD Objekte auslesen

gelöst Frage von m.reegerWindows Userverwaltung1 Kommentar

Guten Morgen, ich benötige mal bitte ein wenig Hilfe bei der Erstellung einer Powershellabfrage für das AD. Es geht ...

Exchange Server

Exchange PS-Skript Kalenderberechtigungen entfernen

Frage von anak1mExchange Server8 Kommentare

Hallo zusammen, vll. kann mir jemand bei folgenden Skript helfen (ich möchte bei jeder User-Mailbox bei den Kalenderberechtitungen alle ...

Outlook & Mail

PS-Skript zum Auslesen von Informationen

gelöst Frage von 112TimoOutlook & Mail8 Kommentare

Hallo liebe Community, ich habe in meinem Praktikum die Aufgabe bekommen ein PowerShell-Skript zu erstellen, mit dem ich die ...

Neue Wissensbeiträge
Internet

(NetzDG) .und Ihr heult über Limux in München, schon gehört, was die SPD vor hat?

Information von certifiedit.net vor 1 TagInternet8 Kommentare

Na dann, Gute Nacht Bürgerrechte. Wofür dann eigentlich die DS-GVO? Ich bezeichne mich als Polizist und hol mir einfach ...

Sicherheit

Chrome 79 übermittelt eingegebene Kennwörter nach Hause

Information von DerWoWusste vor 3 TagenSicherheit16 Kommentare

Ab sofort warnt Chrome standardmäßig Nutzer davor, wenn aus Leaks bekannte Passwörter zum Einsatz kommen. Beim Besuch einer Website, ...

Viren und Trojaner
Trend Micro WFBS 10 SP1 Patch 2185
Tipp von Abramelin vor 4 TagenViren und Trojaner3 Kommentare

Hi, Hab gerade gesehen das Patch 2185 für TM WFBS 10 SP1 erschienen ist! Werde mal Morgen den Patch ...

Viren und Trojaner

Neuer Virus lässt Windows im abgesicherten Modus starten

Tipp von transocean vor 4 TagenViren und Trojaner7 Kommentare

Moin, lest selbst. Grüße Uwe

Heiß diskutierte Inhalte
Windows 7
Windows 7 - Ein DSL Speedtest - Mehrere Browser - Unterschiedliche Ergebnisse
gelöst Frage von AusAltwirdNeuWindows 725 Kommentare

Hallo zusammen, mein PC hat zwei Rj45 Anschlüsse. Beide sind auf Gigabit Vollduplex eingestellt. An beiden Anschlüssen erreiche ich ...

DSL, VDSL
Fritz Box 7490 Internettelefonie
Frage von daveshuterDSL, VDSL13 Kommentare

Tach zusammen, ich bin gerade dabei meine neue Fritzbox (7490) für den Einsatz in meinem privaten Netz einzustellen (DSL ...

LAN, WAN, Wireless
UniFi AP AC Pro wenig Durchsatz
Frage von matze2090LAN, WAN, Wireless11 Kommentare

Hallo, ich habe mir zwei UniFi AP AC Pros gekauft, da sie eine sehr gute Rezzesion haben. Ich habe ...

Batch & Shell
Wort aus String "herrausschneiden", FileOpenDialog
Frage von Bruno8500Batch & Shell9 Kommentare

Ich bin gerade dabei ein CMD Skript zu schreiben für folgende Anwendung: Wenn man bei DHL eine Online Frankierung ...