GPO LoginScript Benutzer
Hallo allerseits,
Folgendes Problem:
Ich muss per GPO ein LoginScript verteilen, dass einen Update auf dem Client durchführt.
Frage:
Ist es möglich, das LoginScript mit Adminrechten laufen zu lassen und es soll NUR einmal ausgeführt werden.
(Sonst würde es ja bei jedem login durchlaufen).
Filecheck wird im Script abgearbeitet, doch wäre es Sinnvoll, wenn diese GPO nur einmal pro Client ausgeführt wird.
Vielen Dank
Gruss
JOML
Folgendes Problem:
Ich muss per GPO ein LoginScript verteilen, dass einen Update auf dem Client durchführt.
Frage:
Ist es möglich, das LoginScript mit Adminrechten laufen zu lassen und es soll NUR einmal ausgeführt werden.
(Sonst würde es ja bei jedem login durchlaufen).
Filecheck wird im Script abgearbeitet, doch wäre es Sinnvoll, wenn diese GPO nur einmal pro Client ausgeführt wird.
Vielen Dank
Gruss
JOML
Please also mark the comments that contributed to the solution of the article
Content-Key: 73484
Url: https://administrator.de/contentid/73484
Printed on: April 24, 2024 at 18:04 o'clock
6 Comments
Latest comment
Falls das Ganze eine einmalige Sache ist (wenn du regelmässig solche Updates verteilen musst, musst du dir was besseres einfallen lassen):
Mit Adminrechten laufen lassen:
Erstell einen temporären Account ohne Passwort (möglichst einen nicht-schlüssigen Benutzernamen), welcher auf den Clients lokale Adminprivilegien hat. Bastel dir nachher eine Batchdatei, welche mit dem Befehl "runas" dein Script aufruft. Diese Batchdatei verteilst du dann per GPO. Sobald das Script auf allen Clients durchgelaufen ist, lösche diesen temporären Benutzer sofort wieder.
Warum einen Account ohne Passwort?
Klar, es ist unsicher, aber der Runas-Befehl erlaubt es nicht, das Passwort des Accounts mit zu geben. Jeder Benutzer müsste also das Passwort eingeben, was nicht gerade eine praktikable Lösung ist. Wenn der Account 2-3 Tage existiert, das Update dann auf allen Kisten drauf ist und du nicht gerade einen offensichtlichen Benutzernamen gewählt hast, sollte das schon gehen.
Update nur einmal ausführen:
Du kannst ein zentrales Logfile anlegen und den oben erwähnten Batch zuerst überprüfen lassen, ob das Update auf diesem PC schon durchgeführt wurde.
Deine Batch könnte dann z.B. so aussehen (nicht getestet):
Dies ist eine Bastellösung, die ich in der Form bisher einmal angewendet habe. Das war aber eine einmalige Sache und ich fand es damals eine schnelle Lösung für ein Netzwerk-weites Problem. Wie gesagt, wenn solche Updates regelmässig vorkommen, solltest du dir was besseres überlegen.
Vergiss vor allem nicht, den priviligierten Account sofort wieder zu löschen, wenn das Update überall drauf ist!!!!!!
Edit:
Eine andere Lösung wäre natürlich, das Update mit deinem Account (der wahrscheinlich dazu priviligiert ist) irgendwann in der Nacht per geplanten Task zu starten. Dann müssten aber sämtliche Clients entweder die ganze Nacht durchlaufen oder du müsstest Wake On Lan in deinem Netzwerk eingerichtet haben (so läufts bei uns im Betrieb)
Mit Adminrechten laufen lassen:
Erstell einen temporären Account ohne Passwort (möglichst einen nicht-schlüssigen Benutzernamen), welcher auf den Clients lokale Adminprivilegien hat. Bastel dir nachher eine Batchdatei, welche mit dem Befehl "runas" dein Script aufruft. Diese Batchdatei verteilst du dann per GPO. Sobald das Script auf allen Clients durchgelaufen ist, lösche diesen temporären Benutzer sofort wieder.
Warum einen Account ohne Passwort?
Klar, es ist unsicher, aber der Runas-Befehl erlaubt es nicht, das Passwort des Accounts mit zu geben. Jeder Benutzer müsste also das Passwort eingeben, was nicht gerade eine praktikable Lösung ist. Wenn der Account 2-3 Tage existiert, das Update dann auf allen Kisten drauf ist und du nicht gerade einen offensichtlichen Benutzernamen gewählt hast, sollte das schon gehen.
Update nur einmal ausführen:
Du kannst ein zentrales Logfile anlegen und den oben erwähnten Batch zuerst überprüfen lassen, ob das Update auf diesem PC schon durchgeführt wurde.
Deine Batch könnte dann z.B. so aussehen (nicht getestet):
@ echo off
::Herausfinden, ob der aktuelle Computername schon im Logfile existiert
::Wenn ja, springe ans Ende des Batchs
find /i "%computername%" <Pfad zu deinem zentralen Logfile>
if errorlevel 0 goto end
::Aufruf des Scripts mit priviligiertem Account
runas ...
::Aktuellen Computernamen ins Logfile schreiben
echo %computername% >><Pfad zu deinem zentralen Logfile>
:end
Dies ist eine Bastellösung, die ich in der Form bisher einmal angewendet habe. Das war aber eine einmalige Sache und ich fand es damals eine schnelle Lösung für ein Netzwerk-weites Problem. Wie gesagt, wenn solche Updates regelmässig vorkommen, solltest du dir was besseres überlegen.
Vergiss vor allem nicht, den priviligierten Account sofort wieder zu löschen, wenn das Update überall drauf ist!!!!!!
Edit:
Eine andere Lösung wäre natürlich, das Update mit deinem Account (der wahrscheinlich dazu priviligiert ist) irgendwann in der Nacht per geplanten Task zu starten. Dann müssten aber sämtliche Clients entweder die ganze Nacht durchlaufen oder du müsstest Wake On Lan in deinem Netzwerk eingerichtet haben (so läufts bei uns im Betrieb)
Abend JOML,
eine andere Lösung wäre ein Computerloginscript. Sprich es wird beim System hochfahren ausgeführt. Alles was dort drinne steht, wird unter dem Benutzer "System" ausgeführt und somit volle Administratorenrechte.
Somit brauchst du keine Accounts ohne Passwörter und der Aufwand ist gering.
Beispiel:
Somit hättest du alles Griffbereit und sauber protokolliert.
Die Batchdatei dazu, würde so aussehen:
Somit hast du die totale Kontrolle darüber und kannst mit dem einfachen Löschen der Textdatei den Updateprozess wieder anstoßen.
Die NTFS-Rechte auf die Freigabe kannst du bis auf alle CLIENT - Computerkonten, System und ADministrator eingrenzen. Diese brauchen aber alle Vollzugriff. Somit kommt ein normaler Benutzer nicht auf die Freigabe.
Grüße
Dani
eine andere Lösung wäre ein Computerloginscript. Sprich es wird beim System hochfahren ausgeführt. Alles was dort drinne steht, wird unter dem Benutzer "System" ausgeführt und somit volle Administratorenrechte.
Somit brauchst du keine Accounts ohne Passwörter und der Aufwand ist gering.
Filecheck wird im Script abgearbeitet, doch wäre es Sinnvoll, wenn diese GPO nur einmal pro
Client ausgeführt wird.
Ich würde innerhalb der Batch nachdem 1. Ausführen einen Checkpoint auf dem Clients hinterlassen. In deinem Fall eine Textdatei mit dem Namen des Updates und darin das Ausführungsdatum. Ein Schritt mehr wäre es, einfach eine Freigabe (am Besten versteckt) einzurichten für alle Logdateien der Clients.Client ausgeführt wird.
Beispiel:
Freigabe Logfiles
- Update x.x.x.2x
- Update 32c.3x3.a3
Die Batchdatei dazu, würde so aussehen:
@echo off
set update=update_2xx.3xf34.3
if not exist "\\%server%\logs$\%update%\%computername%.txt" (
echo Start: %date% - %time% >> "\\%server%\logs$\%update%\%computername%.txt"
....
UPDATE PROCESS
....
echo Ende: %date% - %time% >> "\\%server%\logs$\%update%\%computername%.txt
)
Die NTFS-Rechte auf die Freigabe kannst du bis auf alle CLIENT - Computerkonten, System und ADministrator eingrenzen. Diese brauchen aber alle Vollzugriff. Somit kommt ein normaler Benutzer nicht auf die Freigabe.
Grüße
Dani
Hallo JOML2005
So wie ich das sehe, erstellt das Script von Dani pro upgedateten Computer ein Logfile. Bei meiner Lösung werden alle Computernamen, die geupdatet wurden, in ein und das selbe Logfile geschrieben. Mit dem Find-Befehl überprüft das Script zuerst, ob der Computername in diesem Logfile bereits existiert. Wenn ja, bricht er das Script ab, d.h. er springt ans Ende des Scripts.
Wenn du alle Computernamen also in ein und das selbe Logfile schreibst, musst du meine Lösung mit dem find-Befehl nehmen.
So wie ich das sehe, erstellt das Script von Dani pro upgedateten Computer ein Logfile. Bei meiner Lösung werden alle Computernamen, die geupdatet wurden, in ein und das selbe Logfile geschrieben. Mit dem Find-Befehl überprüft das Script zuerst, ob der Computername in diesem Logfile bereits existiert. Wenn ja, bricht er das Script ab, d.h. er springt ans Ende des Scripts.
Wenn du alle Computernamen also in ein und das selbe Logfile schreibst, musst du meine Lösung mit dem find-Befehl nehmen.