Standartmäßig startet beim shutdownbefehl ein 20 Sekündiger Countdown bevor der Rechner herrutner gefahren wird. Von daher werden in dieser Zeit auch noch weiter Befehle ausgeführt.
Beiträge von chip
-
-
Würde das nicht mit Autoit sondern eher mit Batch dateien machen. Eine als Startscript einbinden das mit "shutdown /r /f" den Befehl zum Rechnneustart gibt und sich anschließend selbst löscht. Und eine Batch als Anmeldescript die die Batch die als Startscript eingebunden ist wieder neu in den Ordner kopiert damit das Startscript beim nächsten hochfahren des Rechners wieder vorhanden ist.
-
Dankesehr

-
HIer ist mein Script
Spoiler anzeigen
[autoit]Run('\\193.196.72.5\ProgrammeAutoit$\Office 2007\SETUP.EXE')
[/autoit]
WinWait("Microsoft Office Professional Plus 2007", "NUIDocumentWindow")
If Not WinActive("Microsoft Office Professional Plus 2007", "NUIDocumentWindow") Then WinActivate("Microsoft Office Professional Plus 2007", "NUIDocumentWindow")
WinWaitActive("Microsoft Office Professional Plus 2007", "NUIDocumentWindow")
Sleep(2000)
Send("XXXXXXXXXXXXXXXXXXXXXXX")
Sleep(2000)
Send("{TAB}")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{SPACE}")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{TAB}")
Sleep(2000)
Send("{ENTER}")
Sleep(5000)
$proclist = ProcessList("msiexec.exe")
$count = 0
While 1
$proclist = ProcessList("msiexec.exe")
If $proclist[0][0] < 2 Then
$count = $count + 1
If $count > 50 Then
Sleep(2000)
Send("{TAB}")
Sleep(2000)
Send("{ENTER}")
Exit ()
EndIf
Else
$count = 0
EndIf
Sleep(100)
WEndDas Fenster wird nun auch geschlossen aber nach dem schließen kommt einer AutoitError Meldung "Line -1: Error: Error in expression."
-
Geht leider nicht, da während der Installation der Prozess "msiexec.exe" immer mal wieder kurzzeitig nur einmal vorhanden ist.
-
Hi,
ich habe versucht die Installation von Office 2007 mit Autoit zu automatisieren. Soweit funktioniert das auch ganz gut nur gibt es das Problem das jedes Fesnter im Setup gleich heißt und man mit Autoit auch nicht den Text des Fensters abfragen kann sondern lediglich den Titel. Dadruch kann man nun nicht feststellen wann das Setup fertig installiert hat und der abschließenede Klick auf "Schließen" erfolgen muss. Gibt es dazu noch eine anderen weg als dann halt über Pixelsearch?
mfg
-
So gehts zumindestens mal bei mir:
[autoit]Run('Y:\Programme\SkypePortable\SkypePortable.exe')
[/autoit]
WinWait('Skype™ - username')
$size = WinGetPos('Skype™ - username')
$schliesen = $size[0] + $size[2] - 20
MouseClick("left", $schliesen, $size[1]) -
[autoit]
shellExecute('Y:\Programme\SkypePortable\SkypePortable.exe')
[/autoit]
WinWait('Skype™ - username')
WinClose('Skype™ - username') -
Das ist lediglich ein Programm um MSI Packete zu erstellen. Da es aber oft damit Probleme gibt wenn es ein komplexes Programm ist favorisiere ich eine "echte" Installation.
-
Hallo,
ich möchte euch kurz etwas vorstellen an dem ich bereits seit Anfang Juli arbeite und es nun auch bereits auf über 60 Rechnern erfolgreich im Einsatz habe.
Es geht um ein von mir auf Hephaistos getaufte Softwareverteilung die vollkommen über Autoit realisiert wurde.
Der Grund warum ich eine Eigenentwicklung gemacht habe und nicht ein bereits fertiges Produkt genommen habe lässt sich in drei Punkten darlegen:
- Die meisten Softwareverteilungen kosten extrem viel und haben mehr Funktionen als ich brauche.
- Ein Großteil benötigt zwingt eine ADS wodurch z.B. Laptops die nicht in der ADS sind aber im gleichen Netzwerk nicht versorgt werden können.
- Bei vielen werden Router im Netzwerk nicht unterstützt.Aus diesen Gründen ist Hephaistos entstanden.
Es ist eine Client-Server-Anwendung die es ermöglicht Autoitscirpte oder auch sonstige Automatisierungen wie MSI auf Rechner zu installieren.
Auf den Clients muss lediglich eine install.exe ausgeführt werden die dann die aktuelle Version der Clientsoftware auf den Rechner installiert. Bei jedem Anmelden an dem Rechner wird geprüft ob eine neuere Version der Clientsoftware verfügbar ist und wenn ja wir diese im Hintergrund installiert. Von diese Aktualisierung bekommt der Benutzer nichts mit was es ermöglich auch im laufenden Alltagsbetrieb neue Versionen des Clients zu verteilen.Die Clients melden sich nach der Anmeldung beim Server und falls sie dort noch nicht bekannt sind landen sie in einer neutralen Gruppe. Der Rechner wird unter anderem Anhang seine MAC Identifiziert wodurch es auch ohne Probleme möglich ist den Namen eines Rechners zu ändern ohne das es Probleme mit der Installierten Software gibt.
Es können beliebig viele Gruppen, denen Rechner zugewiesen werden, erstellt werden. Software kann sowohl Gruppen als auch nur einzelnen Rechner zugewiesen werden.
Die zu verteilenden Software wird automatisch durch die Adminkonsole erkannt. Wobei hier ebenfalls automatisch darauf hingewiesen wir ob nur ein Installations- oder nur eine Deinstallationscript vorhanden ist. Oder eben auch ob man es sowohl deinstallieren auch als installieren kann oder keines von beidem. Das ganze wird durch eindeutige Icons vor den Namen der Programme angezeigt und ist sofort auf einen Blick überschaubar.
Es ist auch möglich einzelnen Rechner oder ganze Gruppen Herunterzufahren, Neuzustarten oder Aufzuwecken.
Es ist auch Möglich zu aktivieren das nach dem Neustart der Rechner ein bestimmter Account automatisch eingeloggt wird. Allerdings ist das ein Punkt der leider nur unschön über die ADS zu lösen ist indem man dort ein entsprechendes Template hinterlegt dem man dann einen User zuweißt. Diese Funktion ist also nicht wirklich Massentauchglich.
Zurzeit bin ich noch dabei die Möglichkeit einzubauen das man Regeln definieren wie z.B. das wenn ein Programm zur Installation markiert ist ein anderes zwingend auch mit installiert werden muss usw.
Das ganze läuft zwar schon wie gesagt Erfolgreich auf über 60 Rechner und diese wurden auch komplett nur über Hephaistos mit Software versorgt aber es sind noch einige Ideen und Punkte die ich noch ändern will/muss.
-
chip: Die Version ist von 2008. Damals wusste ich noch nichts von Windows 7.
Ich werde mal sehen, was dort geändert werden muss.Hi, habs nun selbst gelöst. Den Registrywert den du abprüfst gibt es nicht bei Windows 7 von daher hab ich dort einfach direkt den Programmpfad angegeben und hat dann alles funktioniert.
-
Oder über die Registry:
Spoiler anzeigen
[autoit]$wert = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
[/autoit]
RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\D:", "REG_BINARY", $wert) -
Perfekt das reicht mit schon.

-
Hi,
man kann ja den Remotedesktop von Windows auch in einer sehr kleinen größe, 640x480, starten. Das reicht mir auch aus um die Informationen die ich von dem Remotrechner brauche mit anzeigen zu lassen. Nun würde ich gerne dieses Remotdesktopfenster in eine eigene GUI integrieren, so dass es an einer bestimmte Position in der GUI angezeigt wird.
Ist so etwas möglich?
-
Da unter Windows 7 mein Drucker nichtmehr ging da es keine kompatieblen Treiber mehr gibt habe ich ein kleines Script geschrieben das mit trotzdem das Drucken ermöglicht.
Hierzu habe ich auf einem anderen Rechner im Netzwerk meine Drucker angeschlossen und diese Script hier gestartet:
Spoiler anzeigen
[autoit]$ordner = "\\rechnername\D$\druck\"
[/autoit] [autoit][/autoit] [autoit]
$archiv = "D:\druck\"
$foxit = "C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe"While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(1000)
$file = FileFindFirstFile($ordner & "*.pdf")
If $file <> -1 Then Print()
FileClose($file)
WEndFunc Print()
[/autoit] [autoit][/autoit] [autoit]
While 1
$pdffile = FileFindNextFile($file)
$neuname = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC
If @error Then ExitLoop
FileMove($ordner & $pdffile, $archiv & $neuname & ".pdf")
While 1
Sleep(100)
If FileExists($archiv & $neuname & ".pdf") Then
ExitLoop
EndIf
WEndRunWait('"' & $foxit & '" /p "' & $archiv & $neuname & '.pdf"')
[/autoit]
WEnd
EndFunc ;==>PrintDas Script überprüft regelmäßig ob in einem bestimmten Ordner ein PDF vorhanden ist. Ist dies der Fall wird es in einen Archivordner verschoben und über den kostenlosen PDF Reader Foxit ausgedruckt.
Am Windows 7 Rechner habe ich den Adobe PDF Drucker so eingerichten das er einfach bei einem Druck ein PDF in den Ordner ablegt der im Script in der Variabele $ordner angegeben wurde.
Das ganze funktioniert so gut, dass bei einem Druck auf dem Windows 7 Rechner sofort der Drucker anfängt auszudrucken.
-
Schaue dir mal die 2 Links an:
http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspxEs geht um SWbemLocator.ConnectServer Methode, wo man mit iSecurityFlags eine Timeout setzen kann.
iSecurityFlags:
wbemConnectFlagUseMaxWait128 (0x80) => The ConnectServer call is guaranteed to return in 2 minutes or less. Use this flag to prevent your program from hanging indefinitely if the connection cannot be established.Muss ich mir morgen mal anschauen.
Wie meinst du das mit login bildschirm wenn der loginbildsschim da ist läuft ein programm auch wenn es im autorun ist noch gar nicht
Möchte eigentlich remote Prüfen ob ein Rechner nach dem starten schon soweit hochgefahren ist, dass man sich anmelden kann. Über Ping kann man das ja nicht machen da auf Ping ja schon vor dem Loginbildschirm reagiert wird.
-
Hi,
ich lese mit folgendem Script dem Username eines an einem anderen Rechner im Netzwerk angemeldeten Users aus:
Spoiler anzeigen
[autoit]$wmiRoot = ObjGet("winmgmts:\\derrechner\root\CIMV2")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$wmiColl = $wmiRoot.ExecQuery("Select * FROM Win32_ComputerSystem ")For $wmiObj In $wmiColl
[/autoit]
$user = String($wmiObj.UserName)
MsgBox(0, "", $user)
NextProblem ist nun das wenn diese Auslesen aus irgendwelchen Gründen nicht möglich ist, ObjGet ewig weiter Versucht den Wert auszulesen. Gibt es irgendwie die Möglichkeit einen Timeout zu setzen.
Hab dann noch eine zweite Frage. Ist es möglich auch auszulesen ob auf dem Rechenr grade der Loginbildschrim ist oder er noch am Hochfahren ist?
-
Andy das man sich im Scite die Zeilenumbrüche anzeigen lassen kann wusste ich nicht. Der Code funktioniert perfekt. Vielen dank.
-
Autoit geht unter Win 7 ohne Probleme.
-
@ Ahnungslos bin ist 16 und passiert aber garnix wird nichtmal datei erstellt.
@XovoxKingdom auch kein unterschied.
Hab den Inhalt deS Zwischenspeichers mal als .txt angehängt