DaFRK - Online Brainnailing At It's Best » IT-Automatisierung http://dafrk-blog.com Servers, Foods and Other Nerd-Stuff Thu, 20 Aug 2015 08:22:46 +0000 de-DE hourly 1 http://wordpress.org/?v=4.3 IT-Automatisierung: Registry-Einträge und Gruppenrichtlinien über Kommandozeile setzen. http://dafrk-blog.com/?p=3162 http://dafrk-blog.com/?p=3162#comments Fri, 31 Jul 2015 09:18:29 +0000 http://dafrk-blog.com/?p=3162 IT-Automatisierung: Registry-Einträge und Gruppenrichtlinien über Kommandozeile setzen. weiterlesen →]]> In diesem Beitrag beschäftigen wir uns damit, Gruppenrichtlinien und Registry-Werte automatisiert über die Kommandozeile zu setzen.

Das Setzen von Registry-Einträgen über die Kommandozeile ist kein Hexenwerk mehr und mittlerweile das Täglich-Brot-Geschäfts eines jeden Windows-AD-Administrators geworden. Die einfachste Variante ist die, den entsprechenden Registry-Eintrag in eine .reg-Datei abzulegen. Wenn Sie ein Referenzsystem haben, auf welchem der Registry-Schlüssel bereits mit dem gewünschten Wert belegt ist, können Sie ihn einfach aus dem Registry-Editor als .reg-Datei exportieren.

Sie importieren die .reg-Datei im Anschluss über die Kommandozeile mit

reg import <Dateiname>.reg

Wenn Sie sich eine solche .reg-Datei einmal sehen, kriegen sie auch sehr schnell raus, wie Sie .reg-Dateien von Grund auf neu erstellen, ohne einen Referenzschlüssel exportieren zu können.

Sie können jedoch auch gezielt schlüssel per Kommandozeile setzen über

reg add <Pfad zum Schlüssel> /v <schlüsselname> /t <Wertart> /d "<Wert>"

Als WerteArt können Sie einen der folgenden Parameter angeben

  • REG_DWORD (32-Bit-DWORD)
  • REG_BINARY (Binärwert)
  • REG_SZ (Zeichenfolge)
  • REG_QWORD (64-Bit-QWORD)
  • REG_MULTI_SZ (mehrteilige Zeichenfolge)
  • REG_EXPAND_SZ (ertwieterbare Zeichenfolge)

Wenn Sei versuchen, auf diese Art und Weise Registry-werte zu ändern, die sich im Zweig HKEY_CURRENT_USER befinden, werden Sie feststellen, dass das nicht so ohne Weiteres geht. Der User muss abgemeldet sein, damit Registry-Werte für seinen User-Account, die in der Datei NTUSER.DAT gespeichert werden, geändert werden können. mit einem kleinen Trick ermöglichen Sie jedoch die Änderungen.

rundll32.exe user32.dll,UpdatePerUserSystemParameters ,1 ,True

Sie können auch über die Kommandozeile den derzeitigen Wert eines Registry-Schlüssels abfragen über

reg query <Pfad zum Schlüssel> /v <Schlüsselname>

#Beispiel

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Start Menu"

Eine Besonderheit gibt es wenn Sie Registry-Schlsüsel setzen wollen, die mit einem Backslash oder mit einem Anführungszeicehn oben („) enden. Diese müssen Sie mit einem vorangehgenden Backslash escapen und den apramter /f mit anfügen.

reg add "<Pfad" /f /v "Schlüsselname" /t <Art> /d "<Wert mit Backslash>"

Mit Hifle von Registry-Schlüsseln ist es übrigens möglich, mit sehr einfachen Mitteln bei jeder Erstanmeldung nach erzeugen eines neuen Benuzterkontos ein Skript auszuführen. Dafür müssen wir das Default User profil laden und dann einen registry hinzufügen, bei welchem der Pfad zum Skript hinterlegt wird.

reg load "HKU\ZZZ "C:\users\default\NTUSER.DAT"

reg add "HKU\ZZZ\SOFTWARe\Microsoft\Windows\CurrenTversion\RunOnce /v newUserProfile /t REG_EXPAND_SZ /d "D:\setup.cmd" /f

reg unload HKU\ZZZ

Damit ist es beispielsweise möglich, jedesmal, wenn ein neuer Active Directory User sich zum ersten mal anmeldet, eine Standardumgebung für diesen User einzurichten.

Gruppenrichtlinien

Viele Administratoren, die neu auf dem Gebiet sind, zaubern auf übelste Art und Weise mit grafischen GUI-Skriptsprachen wie AutoIt oder EasyHotKey rum, um die Mausklicks zu simulieren, die im Gruppenrichtlinieneditor notwendig sind, um bestimmte Richtlinien für Windows-Benutzer zu setzen.

In einer Active-Directory-Umgebung haben Sie es natürlich einfach, da Sie eine Vielzahl von Gruppenrichtlinien setzen können, indem Sie für eine bestimmte Organisationseinheit (OU) die Gruppenrichtlinien im Vornherein editieren und die entsprechenden User dann nur noch hinzufügen.

In einer Peer-2-Peer-Netzwerkumgebung, beispielsweise zu Hause oder in einem Kleinunternehmen, wollen Sie vielleicht auch Gruppenrichtlinien setzen. Auch das geht ziemlich einfach, sobald Sie sich vergegenwärtigt haben, dass die meisten Gruppenrichtlinien nichts anderes sind als Registry-Einträge, die gesetzt werden.

Mit dem Tool Proc Mon aus den SysInternals Utilities können Sie dann die Registry-Einträge tracken, die beim Setzen einer Gruppenrichtlinie geändert werden. Starten Sie dazu ProcMon und geben sie im Startfenster ein

Process name is mmc.exe then Include und klicken auf die schaltfläche Add.

Und danach brauchen wir noch

Operation is RegSetValue then Include und klicken wieder auf Add.

Klicken sie jetzt auf die Schaltfläche OK. Wechseln Sie nun zu Gruppenrichtlinieneditor und setzen die einstellungen, die Sie später über die Kommandozeile ändern wollen. Bevor sie die letztendlichen Einstellungen setzen, gehen Sie im Process Monitor noch auf Edit  / clear display, um alle bisher getätigten Logeinträge zu löschen. Ändern Sie jetzt die Gruppenrichtlinieneinstellung im Gruppenrichtlinieneditor und wechseln anschließend wieder in das ProcMon-Fenster. Rechtsklicken Sie auf den hinzugekommenen eintrag und wählen Sie Jump To…. Sie werdne autoamtisch im Registrierungseditor zum betroffenen Schlüssel weitergeleitet. Diesen könnten Sie nun wie weiter oben bereits beschrieben exportieren und dann als .reg-datei über die kommandozeile importieren.

 

Wenn dir dieser Post gefallen hat, teile ihn doch auf Social Media, abonniere und verfolge mich per E-Mail, RSS-Feed, Social Media oder registriere dich auf meiner Seite. Wenn du registriert bist, like den Post bitte, wenn er dir gefallen hat!

]]>
http://dafrk-blog.com/?feed=rss2&p=3162 0
IT-Automatisierung: Windows-Treiber über Kommandozeile oder GUI-Skriptsprachen installieren http://dafrk-blog.com/?p=2993 http://dafrk-blog.com/?p=2993#comments Tue, 14 Jul 2015 11:13:47 +0000 http://dafrk-blog.com/?p=2993 IT-Automatisierung: Windows-Treiber über Kommandozeile oder GUI-Skriptsprachen installieren weiterlesen →]]> Bei einer automatisierten Neuinstallation eines Systems müssen als allererstes die Treiber installiert werden. Wenn Sie sich eine Antwortdatei für die automatische Windows-Installation erstellen möchten oder mehrere Windows-Clients über die Windows Deployment Services installieren wollen, müssen Sie sich zwangsläufig mit dieser Thematik auseinandersetzen.

Bei Komplettsytemen haben Sie ab und zu das Glück, dass Sie diese Treiber über ein zentrales Verwaltungstool des Herstellers installieren können, etwa über Dell Digital Delivery oder eine entsprechend andere Lösung. Hier würde es theoretisch genügen, die Treiberverwaltung des Herstellers zu skripten, um die Treiber vollständig einzuspielen.

Custom-Systeme jedoch ist es notwendig, sich die aktuellen Treiber automatisiert runterzuladen. Wie sie automatisiert aktuelle Versionen von Treibern oder Software herunterladen, habe ich Ihnen in meinem Post über Browserskripte gezeigt.

die meisten Treiber kommen heutzutage nicht mehr als .inf-Datei, wie es früher zu zeiten der 90er noch war, sondern als setup.exe oder .msi-Datei, die neben der eigentlichen .inf-Datei auch zusätzliche Software installiert (anmerkung: kann auch eine .sys-Datei sein). Von dort an haben Sie die Wahl: Entweder Sie skripten wie bereits an anderer Stelle schonmal gezeigt die setup.exe, welche den Treiber installiert, oder sie holen sich nur den eigentlichen Treiber aus dem Setup. Wenn Sie den Treiber automatisiert über die Windows Deployment Services installieren wollen, müssen Sie ihn extrahieren. Deswegen zeige ich Ihnen als erstes, wie Sie vielleicht an die .inf-Datei herankommen.

Wenn Sie Glück haben, liegen die .inf-Dateien nicht irggendwo versteckt in einer .exe, .msi oder .cab-Datei, sondern in einem Ordner. Nehmen wir an Sie laden sich einen Treiber runter, der in einer .zip- oder .rar-Datei eingepackt ist. im Hauptordner befindet sich eine setup.exe und mehrere Unterordner. Suchen Sie nach einem Unterordner namens drivers, inf oder so, oder suchen Sie allgemein nach Dateien mit der endung .inf. Bedenken Sie, dass Sie möglicherweise mehrere .inf-Dateien brauchen., Wenn sie sich nämlcih beispielsweise einen Treiber für ein Mainboard heruntergeladen haben, dann haben Sie eine .inf-Datei für denm PIC bus mit eibnem Nam,en wie amdkmpfd.inf, eine für den Chipsatz, eine für den eingebauten Sound- und eine für den eingebuaten Grafikchip usw. Desweiteren sind die .inf-Dateien bei einem Multi-OS-paket nach Betriebssystem sortiert. Es gibt also eine .inf-Datei für XP, eine für Vista, eine für Windows 7, eine für Windows 8 usw.

Wenn Sie Pech haben, liegt die .inf-Datei in der .exe oder .msi-Datei DRIN. als erstes sollten Sie versuchen, die .exe Datei in .exe.rar und .exe.zip umzubenennen und dann mit WinRar zu öffnen. Hilft das nicht, können Sie veruschen, die .exe Datie mit dem Tool UniversalExtractor oder mit 7Zip zu öffnen.

Die Treiberdateien könnten auch in einer .cab-Datei drin sein. Manche .cab-Dateien kann man mit WinRar öffnen, aber längst nicht alle. Sie können außerdem verushcen, die .cab-Datei mit der Expand.exe zu extrahieren.

DAnn können Sie noch probieren, die setup.exe auszuführen. Wenn Sie nach einem Ordner gefragt werden, in den die temporären Dateien während de rinstallation extrahiert werden sollen, können Sie in diesem temporären Ordner nochmla nach den .inf-Dateien suchen. Eventuell wurden diese nämlich für die installation entpackt.

Wenn die setup.exe selbst Sie nicht nach eienm Ordner fragt, kann es sein, dass die setup.exe stillschwiegend die Dateien extrahiert. Hierbi müssne Sie in Ordnern wie C:\Temp, C:\Windows\Temp, C:\<Hersteller>\, C:\Users\<IhrUsername>\Temp o. Ä. nachsehen, ob kurz vor der Installation, also wenn Sie im Installationsfenster auf Weiter Weiter klicken bis zum Fenster, bevor Sie den treiber letztendlich installieren, ob dort die .inf-Dateien eingelagert wurden.

Haben Sie auch hier die Dateien nicht gefunden, können Sie den Treiber installieren und schauen, ob ein Dateisystem-Überwachungstool wie

 

  • DirectoryMonitor
  • TheFolderspy
  • FileMon
  • Track Folder changes
  • Watch 4 Folder
  • FolderchangesView (empfohlen)
  • windows Explroer Tracker
  • Spy-The-Spy
  • SpyMe Tools
  • Disk Pulse
  • file Alert monito

Ihnen die hinzugekommenen Dateien ausspucken kann. Lassen Sie dazu die Ordner C:\Windows\INF und C:\Windows\systeme32\drivers überwachen. Sie können auch während der installation in einen dieser Ordner gehen und ständig F5 drücken um zu sehen, ob neue Dateien hinzufügen, und durch wechselndes Drücken von Strg+A, Strg+C und Strg+V Kopien der Dateien erzeugen, bevor die SEtuproutine sie löschen kann. Eventuell bekommen Sie dadurch ihre .inf-Datei heraus.

 

Hilft all das nichts, können Sie als nächstes versuchen, den Treiber auf einem System zu suchen, in dem der Treiber bereits installiert ist. die .inf-Datei ist ja schließlich auf dem System angewendet worden. Suchen Sie als allererstes unter C:\Windows\INF und dann unter C:\Windows\system32\drivers.  Sie werden hier natürlich viele INF-Dateien finden. Um zu wissen, welche Sie brauchen, suchen Sie im Windows-Geräte Manager (Start / ausführen / devmgmt.msc) nach dem Gerät, dessen Treiber sie haben wollen, rechtsklicken darauf und Wählen Eigenschaften. Im Reiter Treiber klicken Sie auf Details und sehen nun eine Liste mit Trieberdateien für dieses Gerät. Die wichtiggsten sind Treiber sind die mit der endung .sys oder diejenigen, die Sich im system32\drivers-Ordner befinden. Dateien, die es mehrfach gibt, sind in der Regel nutzlos: hierbei handelt es sich um meistens um generische Treiber, die von vielen Geräten benutzt werden. Um sicher zu gehen, dass es die richtigen .inf- und .sys-Dateien sind, öffnen Sie diese mit dem Notepad. Am Anfang und am ende von .inf und .sys-Dateien schreiben die Aturoen immer kommentare rein. Unten kommen meist verschiedene Sprachfetzen die später im installationsfenster der setup.exe auftauchen würden.

Jedenfalls: sobald Sie die richtige .inf-Datei gefunden haben, müssen Sie diese öffnen. In der .inf-Datei stehen eventuell die anderen Treiberdateien drin, die Sie brauchen. Ansonsten ist es gut, die Treiberdateien mitzunehmen, die im selben Ordner stekcen wie ide .inf-Datei oder in Unterordnern.

Wenn Sie nun alle wichtigen Dateien haben, können Sie den Treiber automatisiert über die Kommandozeile installieren lassen. Das foglende Kommando führt die Sektionen Defaultinstall und Defualtinstall.services in der INF-Datei aus

rundll32.exe setupapi.dll,InstallHinfSection DefaultInstall 132 <Pfad zur .inf-Datei>

Jetzt, da Sie die .inf-Hölle kennengelernt haben, haben Sie sich möglciherweise überlegt, einfach nur die Setuproutine mit einem .gui-Programm zu skripten. Das problem was wir bie der Treiberaktualisierung haben ist, dass Sie, wenn Sie mehrere Treiber aktualisieren wollen, nach jeder Trieberinstallation einen Neustart durchführen sollten. DAs erschwert die Sache nochmal zusätzlich, da Ihr Updateskript:

  • nach einem Neustart wieder gestartet werden muss
  • wissen muss, welche Treiber es  bereits installiert hat und welche noch nicht aktualisiert sind

Das AutoIt Skript können Sie im Autostart-Ordner von Windows ablegen, so dass sichergestellt ist, dass es beim Systemneustart erneut ausgefürht ist. Dann müssen Sei mit einer If-Else-Verwzeigung sicherstellen, dass nur Treiber installiert werden, die bisher noch nicht installiert wurden.Als Bedingung hierfür macht es Sinn, dass Sie mit AutoIt oder über die Kommandozeile eine Datei schreiben lassen, die mitzählt, wie viele Treiber derzeit installiert wurden. Mit AutoIt schreiben Sie eine Datei folgendermaßen

FileWrite("<Pfad zur Datei>","<Text">)

Sie können aber auch über die Kommandozeile schreiben lassen.

echo "<text>" > <Pfad zur Datei>

Ihr AutoIt Skript muss dann bei jedem Ausführen diese Datei einlesen. Das geht mider Funktion FileRead

FileRead("<Pfda zur Datei>")

Nun können Sie einer Variablen dem Wert aus der Datei zuweisen und dadurch mitzählen, wie viele Treiber bereits installiert wurden. Damit das sinn macht, müssen Sie natürlich vorher gezählt haben, wie viele treiber überhaupt insgesamt installiert werden müssen. Sie dürfen auch nicht vergessen, vor jedem Neustart nach einer Treiberinstallation den zähler der bereits installierten Treiber in der Zählerdatei hochzuzählen.

Wenn dir dieser Post gefallen hat, teile ihn doch auf Social Media, abonniere und verfolge mich per E-Mail, RSS-Feed, Social Media oder registriere dich auf meiner Seite. Wenn du registriert bist, like den Post bitte, wenn er dir gefallen hat!

]]>
http://dafrk-blog.com/?feed=rss2&p=2993 0
IT-Automatisierung: Windows-Software auf Kommandozeilenebene installieren http://dafrk-blog.com/?p=2963 http://dafrk-blog.com/?p=2963#comments Mon, 13 Jul 2015 09:20:22 +0000 http://dafrk-blog.com/?p=2963 IT-Automatisierung: Windows-Software auf Kommandozeilenebene installieren weiterlesen →]]> Zahlreiche Windows-Software wird standardmßig mit einem grafischen Installer eingespeist. Das ist natürlich eine Qual, wenn Sie versuchen wollen, diese Software automatisiert zu installieren. Denn wenn die Software lediglich über einen grafischen installer verfügt, sind Sie dazu gezwungen, GUI-Skriptsprachen wie beispielsweise AutoHotkey oder AutoIT zu verwenden, um die Installation zu automatisieren. Bevor Sie jedoch diesen drastischen Schritt unternehmen, sollten Sie erst prüfen, ob die Software nicht über die Kommandozeile installiert werden kann. Denn viele Windows-Installer verbergen eine Kommandozeilenoption zum Installieren.

setup.ini-methode

Nicht jede Setuproutine unterstützt das einlesen einer setup.ini. in der Regel findet man dies heraus, indem man „<programmname> setup.ini“ googelt. Neben dieser möglichkeit verüfgen die setup-dateien oftmals über den Kommandozeilenparamter -s oder /s, der ebenfalls eine unattended-installation erlaubt. Dazu muss man einfach „Programmname unattended installation“ googlen. Man kann es natürlich auch aauf gut Glück versuchen. Führt man die setup.exe aus, so bedient sich diese den Einstellungen aus der setup.ini und ist dann in der Lage zur automatisierten Installation.

Oft reicht es dabei nicht, einfach eine setup.ini zu erstellen. Viele Suchmaschinen-Suchergebnisse werdem einem folgendes vorschlagen:

  • Neben der gewönhlichen Setup.exe im Hauptordner gibt es meist einen sogenannten administrativen installationspfad auf dem installationsmedium, dieser ist meist der Unterordner Setup auf dem installationsmedium, dort liegt dann eine sogenannte administrative setup.exe mit mehr möglichkeiten als die gewönhliche, welche in der wurzel des Mediums liegt. Hierbei müssen Sie recherchieren, ob dies für Sie zutrifft.
  • Diese administrative Setup-Datei hat oftmals paramteroptionen wie etwa /createunattended <\dateipfad\für\eine\ini-Datei>. Somit können Sie eine grafische Installation der software vornehmen und aus dieser wird dann eine .ini-Datei erstellt, die Sie für künftige Installationsvorgänge auf kommandozeilenebene verwenden können
  • in unserem administrativen Installationsordner wird desweiterne eine Datei namens setup.sdb aktualisiert. Diese enthält meist den Lizenzkey für das Produkt. Das beudeutet, dass bei der Installation die setup.sdb aus diesem adminsitrativen Setup-Ordner gelesen wird, um automatisch den Lizenzoey einzufügen.
  • Neben dem LicenseKey, der automatisch in die setup.sdb geschrieben wird, muss man noch die Produkt-ID mittels eintrag prodID darüber schreiben. Die beiden Einträge müssen per Zeilenumbruch getrennt werden
    ImageType=NET
    
    ProdID={<ID}
    
    LicenseKey=<Key>
  • will man nun die unattended-installation ausführen, so darf man auch hier nicht die normale .setup-Datei im root des instalationsmedium ausführen, sondern muss die administrative Setup-Datei mit der option setup.exe /unattendfile x:\Pfad\zu\setup\setup.ini

Setup.exe / update.exe /s

Der Windows install Shield stellt Entwicklern die option bereit, ihre Software mit InstallScript bzw. InstallScript MSI zu erstellen. Diese wiederum haben die option, eine installation im sogenannten Silent Mode laufen zu lassen, der mit dem Schalter /s aktiviert wird. Dadurch wird für dieInstallation keine grafische Oberfläche gestartet und die installation also auf Kommandozeilenebene durchgeführt. Wenn man dann noch die benötigten installationsparameter per kommandozeile übergibt, beispielsweise den Lizenzkey und den Installationspfad, dann bedeutet dies, dass man die installation automatisieren kann. Man findet, ob eine installationsroutine dies untersützt, indem man „Programmname InstallScript options“, „Progrmamname setup.exe comamnd Line“, „Programmname Silen installation“, „Programmanem unattended installation“, oder „Programmname setup.exe /s“ sucht.

auch bei dieser Variante lohnt es sich, im installationsmedium nach einer administrativne setup.exe zu suchen, die sich möglciherwiese in einem unterordner setup befindet.

Um ein InstallSript MSi oder installSrioptm projekt installatiosnprogrmam im Silent modus aufzurufen, müssen wir erst die Setup.ee mit der option /r aufrufen, um ähnlich der setup.ini-Methode durch eine vorangehende installation ein Antwortfile zu erstellen, welches sich die getätigten einstellungen merkt. Die einstellungen werden dann in einer Datei namens setup.iss gespeichert. Diese wird in der Regel im windows-Ordner gespeichert, wir können aber einen alternativne Speicherort mit der option /f1 angeben.

Basic MSI Projekte verwendne hingegen kein Response-File für silent installationen

Danach könenn wir mit setup.exe /s die installation im silenmodus durchführen. Dabei sollten wir unser Antwortfile setup.iss im selben Verzeichnis wie die administrative Setup.exe haben, ansonsten müssen wir wieder einen alternativen Ort über die Option /f1 angeben.

Um ein Basic MSI Produkt im Silent-mode auszuführen, müssen wir hingegen Setup.exe /s /v/qn eingeben. Basic MSI produkte haben kein Response-File und brauchen daher Paramter in der form von Setup.exe /s/v“/qnINSTALLDIR=“D:\Destination“

Wie Sie der Überschrift schon entnehmen können, können Sie bei einigen Produkten nicht nur die Installation, sondern auch das Updaten der Software mit dem Silent-Schalter übernehmen. Hierzu gibt es oft eine update.exe im Verzeichnis der Programminstallation.

Kopieren und Registry einträge nachziehen

Wenn ihre Software weder die setup.ini-Methode noch die Unattended-Installation unterstützt, kann es gegebenenfalls helfen, eine normale Installation durchzuführen und sich einfach nur die Dateien im Programmordner wegzukopieren. Zusätzlich suchen Sie im Registry-Editor (Start / Ausführen / regedit) nach Schlüsseln mit dem Namen des Programms oder des Herstellers, vor allem im Pfad HKEY_LOCAL_MACHINE\Software, und exportieren sich die Schlüssel in .reg-Dateien. Sie können dann versuchen, den Programmordner auf Kommandozeilenebene auf das Zielsystem zu kopieren und dort dann die .reg-Dateien auszuführen, sodass die Registrierungsschlüssel in die registry des zielsystems geschrieben werden. Bei überraschend vielen Softwareinstallationen klappt dies problemlos. Probleme bekommen sie nur, wenn bei der Softwareinstallation auch Dateien an andere Stellen des Systems kopiert werden, beispielsweise in das Windows-Verzeichnis. Hierzu müssen Sie halt nur feststellen, in welche Ordner sonst noch bei der nistallation Dateien kopiert werden. Dazu können sie sich einem Tool bedienen, welches Ihre Ordner nach Dateiänderungen überwacht. Starten Sie das Tool, lassen sie verdächtige Ordner wie C:\Program Files, C:\Windows usw. überwachen und führen Sie die installation durch. Nach der installation haben Sie eine Übersicht, welche Dateien geändert wurden. Entsprechende tools wären beispielsweise

  • DirectoryMonitor
  • TheFolderspy
  • Track Folder changes
  • Watch 4 Folder
  • FolderchangesView (empfohlen)
  • windows Explroer Tracker
  • Spy-The-Spy
  • SpyMe Tools
  • Disk Pulse
  • file Alert monitor

Automatisches Entpacken

Alternativ zu der Methode, dass Sie die Installationsdateien einfach per Copy und Paste auf Kommandozeilenebene kopieren, können Sie sich auch eine Archivdatei basteln, welche die Dateien beim Entpacken automatisch in die richtigen Ordner verschiebt. Damit können Sie beispielsweise nicht nur Softwareinstallationen automatisieren, sondern auch andere Dateien ausrollen, die beispielsweise jeder mitarbeiter in Ihrem Unternehmen auf seinem Arbeitsplatz braucht.

Bevor wir uns ein solches Archiv erstellen, möchte ich Ihnen nur kurz zeigen, wie Sie auf Kommandozeilenebene verschiedene Packerarchive extrahieren.

sie extrahieren .7z-Archive über

<Pfad zur 7z.exe> e <Pfad zum .7z-Archiv>

.rar-ARchive extrahieren Sie mit installiertem WinRar über

<Pfad zur UnRAR.exe>  x "<Pfad zur .rar-Datei>" <Pfad zum Zielordner>

#passowrtgeschützte Datei

<Pfad zur UnRAR.exe> x -p<Passwort> "<Pfad zur .rar-Datei>" <Pfad zum Zeilordner>

normale .zip-Dateien können Sie ebenfalls mit WinRaR extrahieren – jedoch nicht mit der unRAR.exe, sondern mit dre winrar.exe.

<Pfad zur winrar.exe> x <Pfad zur .zip-Datei> <Zielordner>

Nun erkläre ich Ihnen das Erstellen eines selbstextrahierenden Archivs mit WinRAr. Starten Sie WinRar und fügen sie die zu archivierenden installationsdateien zu einem neuen Archiv hinzu. im reiter Advanced wählen Sie die SFX options. im neuen Fenster wählen Sie im Reiter General den Zielordner, in den die Softare installiert werden soll. Es amcht Sinn, im reiter Mdoes den Silent mode auf Hide all zu setzen, damit während des Entpackvorgangs kein Fenster geöfnfnet wird und die Aktion für den User transparent bleibt. Im reiter Files können Sie nachträglich noch Dateien zum Archiv hinzufügen.

Automatische Installation über .msi-Archive

Bei allen Softwareinstallationen, für die Sie die Dateien und Zielpfade kennen, können Sie die Installation auch über ein .msi-Archiv automatisieren. Der vorteil ist, Sie können hier einige Dateien in den rpogrammordner verschieben und einige Dateien in andere Ordner, wie beispielsweise den Windows-Ordner, den Desktop oder den Eigene-Dateien-Ordner des zielsystems. Und: diese Art von .msi-Installation lässt sich über Gruppenrichtlinien im Microsoft Active Directory ausrollen.

Eine sehr einfache Möglichkeit ist das tool MSI Wrapper (altnerative: EMCO MSI Package Builder). Sie starten das Programm, und wählen die setup.exe des programms, dessen Installationsroutine Sie in eine .msi-Datei packen wollen. Das programm muss bereits auf dem Rechner, auf dem Sie die .msi-Datei erstellen, installiert sein, weil Sie die Application ID des Programms aus einer Liste auswählen müssen. Erstellen Sie einen neuen Upgrade Key. Die Registry-Einträge, die gesetzt werden müssen, werden automatisch von den Registry-Einträgen, die sich auf Ihrem PC befinden, eingelesen (sofern das Programm bereits installiert ist). Im fenster Parameters geben Sie dann noch unter Install Arguemtns und Uninstall Arguments jeweils /S ein, um die installation und Deinstallation im Silent-modus abzuschließen. Zum Schluss bauen Sie die .msi-Datei. Diese können Sie beispielsweise einfach über Active Directory Gruppenrichtlinien ausrollen lassen.

Eine fortgeschrittene Möglichkeit ist das Tool Advanced Installer. Das Toolist Free, solange sie im New Project-Menü das Basic-template verwenden. speichern Sie die Projektdatei mit Endung .aip irgendwo, den Output-Folder und den Namen der .exe oder .msi-Datei. als nächstes wählen Sei den Ordner mit den installationsdateien. Wichtig ist für Sie nachher das Menü Ressources / Files and Folders sowie Resources / registry. Dort wählen Sie, welche Dateien in welche Ordner und welche Registry-Keys gesetzt werden sollen.

eigene und fremde .msi-Pakete können Sie auf Kommandozeilenebene einfach foglendermaßen silent installieren.

msiexec.exe /qn /i <pfad zur .msi-Datei>

Sollte die option /i nicht funktionieren, rpioberen sie die Option /x

msiexec.exe /qn /x <Pfad zur .msi-Datei>

Eventuell müssen Sie bei fremden .MSI-Dateien zusätzliche Optionen wie etwa einen Produktcode angeben. Einen Prpoduktcode geben Sie meist folgendermaßen an

msiexec.exe /qn /x {<code>}

andere Optionen können Sie mit dem Orca Tool ausspähen und dann folgendermaßen angeben

msiexec.exe /qn /[i|x] <Parametername>=<Wert>

 

Wenn dir dieser Post gefallen hat, teile ihn doch auf Social Media, abonniere und verfolge mich per E-Mail, RSS-Feed, Social Media oder registriere dich auf meiner Seite. Wenn du registriert bist, like den Post bitte, wenn er dir gefallen hat!

]]>
http://dafrk-blog.com/?feed=rss2&p=2963 1
Welche Skriptsprache für Kommandozeilenautomatisierung unter Linux und Windows http://dafrk-blog.com/?p=2950 http://dafrk-blog.com/?p=2950#comments Sun, 12 Jul 2015 10:38:32 +0000 http://dafrk-blog.com/?p=2950 Welche Skriptsprache für Kommandozeilenautomatisierung unter Linux und Windows weiterlesen →]]> In letzter Zeit haben Sie schon ein paar Posts von mir gesehen, die sich mit der Automatisierung bestimmter Aufgaben beschäftigen, etwa meinen Post über Cygwin, über Browserskripte, oder über automatisierte Backups.

Für viele stellt sich hierbei zuvor immer eine Entscheidungsfrage, welche Aufgaben man mit welcher Skriptsprache automatisieren sollte. Es ist immer sehr enttäuschend, eine Stunde oder mehr Zeit in das Coden einer automatiiserungsarbeit aufzuwenden und später festzustellen, dass die verwendete Skriptsprache nicht mächtig genug ist, um alle Anforderungen abzubilden.

Unix und Linux: Shell/Bash vs Perl-Skripte

Unter den Betriebssystemen Linux und Unix haben sich zur Automatisierung zwei Technologien durchgesetzt: Shell-Skripte, die aufgrund der am häufigsten verwendetn Shell zu diesem Zweck häufig auch Bash-Skripte heißen, gegen die Skriptsprache Perl. Absolute Linux-Geeks mit langen Gandalf-Bärten, die bis zum Boden reichen, programmieren vielleicht Skripts in Generation-4-Programmiersprachen wie C++, das ist aber meist ein zu hoher Aufwand, um Automatisierungsarbeiten zu coden. Perl hingegen kann Systemarbeiten genau so einfach und aber auch umfangreich automatisieren wie ein Bash/Shell-Skript es kann. Ein Perl Skritp zu erstellen ist grundsätzlich genau so einfach und schwer wie das Erstellen eines Shell-Skripts.

Grundsätzlich  ist es in Perl beispielsweise einfacher, Textverarbeitungstasks zu automatisieren, also besitmmte TExtstrings aus Dateien zu extrahieren und diese wiederum zu manipulieren, da Perl bereits wichtige Funktionen mitbringt, die Sie auf bash-Ebene über das Kommandozeilentool awk nachrüsten müssen.

Jedoch eignen sich Shell-Skripte besser für das Verwalten von Jobs und Daemons. Denn wenn Sie beispielsweise ein Kommando in einem Bash-Skript ausführen und dieses fehlschlägt, etwa weil zu wenig RAM vorhanden ist oder die Prozesstabelle voll ist, dann wird Ihnen ein Fehler angezeigt. Wenn Sie hingegen ein Kommando über die system()-Funktionalität von Perl aufrufen, arbeitet das Skript einfach weiter, es sei denn, Sie stecken zusätzlichen Code in das skirpt, etwa

use autodie qw< :all >;

system("kommando");

Wenn wir das Beispiel weiterspinnen und Sie im Falle des Scheiterns eines Kommandos ein Recovery-Kommando ausführen wollen, um einen vorhersehbaren Fehler schon im Skript zu beheben, würde das bei einem Shell-Skript so aussehen

if ! run some command

then

    some recovery command

fi

und bie einem Perl-Skript so

use autodie qw< :all >;

use Try::Tiny;                  



try

{

    system("kommandozeile");

}

catch

{

    system("recoverykommando");

};                              

Sie sehen also, wenn es um die Kontrolle von Jobs und Prozessen geht, haben Sie bei Perl wesentlich mehr Arbeit zu leisten, sowohl beim Denken, als auch beim Schreiben.

Desweiteren haben Sie Probleme, wenn Sie ein Kommando ausführen wollen, sobald eine Kommandozeile beendet wird. Unter Perl würden Sie das folgendermaßen bewerkstelligen

END

{

    system("run some command");

}

in der Bash folgendermaßen:

trap "run some command" EXIT

Dabei zeigen Erfahrungen, dass das Bash-Skript immer funktioniert, bei Perl jedoch nicht immer. Überlegen Sie mal: es gibt so viele verschiedene Möglichkeiten, wie das Programm beendet werden kann-  über Strg+C durch den User, über erfolgreiches Beenden, über eine fehlermeldung, über einen Dump des Kernels, da er die Funtkionalität nicht unterstützt… all diese Fälle deckt ihr Shellskript ab – alle bis auf die Möglichkeit, dass der User über den Kill-Befehl den Job tötet, natürlich. Das kann jedoch auch Perl nicht.

ein weiterer Unterschied ergibt sich beim Skripten von interaktiven Programmen. Soll heißen: Wenn Sie ein Programm ausführen, welches während seiner Ausführungszeit den Command Line Prompt ändertund Ihnen die möglcihkeit gibt, Fragen und Atnworten an das Programm zu stellen. Ein gutes Beispiel wäre der mysql-Client. Nachdem Sie sich über das Programm an mySQL angemeldeet haben, ändert sich die Kommandozeile und Sie können SQL-Statements absetzen.

$>mysql

SQL>SELECT * from TABLE;

Ein anderes Beispiel wäre etwa das Erstellen eines SSL-Zeritfikats über OpenSSL, wobei Sie während der Erstellung des Zertifikats Fragen gestellt bekommen.

Solche interaktiven Programme können Sie mit sogenannten „Here-Documents“ skripten. Hierbei führen Sie im Skript zunächst das Programm aus und übergeben die Antworten von einer anderen Stelle des Programms. Über ein shelol-skript sieht das folgendermaßen aus

mysql <<END                       # assume ~/.my.cnf is set up

    select count(*) from some_table;

END

Bei PERL so

use autodie qw< :all >;



open(PIPE, "| mysql");

print PIPE <<END;

    select count(*) from some_table;

END

close(PIPE);

Nun haben wir die Bash an verschiedenen Stellen hoch gelebt. nun kommen wir dazu, warum es in vielen vielen Fällen trotzdem ratsamer ist, Perl zu wählen.

Perl ist schneller in der Ausführung. Es müssen beispielsweise nicht so viele verschiedene Prozesse ausgeführt werden, weil Sie nicht verschiedene Kommandozeilentools wie cut, grep, awk und andere tools miteinander kombinieren müssen, sondern Perl bereits alle Funktionalitäten mitbringt.

Mit Perl können Sie wie bereits erwähnt Textmanipulation auf einem höheren Level ausleben als mit einem Bash-Skript.

Mit Perl können Sie einfacher mit Variablen umgehen, beispielsweise mit Arrays, die bei einem Shell-Skript sehr unhändisch zu verwalten sind.

Windows: Batch vs PowerShell

Die Windows-Batch-Automatisierung ist eigentlich schon seit Jahren tot. Sobald es auf irgendeine Art und Weise komplizierter wird in Sachen Automatisierung stoßen Sie bereits sehr schnell an die Grenzen der automatisierbarkeit über Batch-Dateien. Batch kommt beispielsweise bei weitem nicht an die Möglichkeiten der Linux-Shell-Skripte heran.

Vergessen sollten Sie auch alle älteren Skripting-Technologien unter Microsoft wie beispielsweise VBscript oder JScript. Denn diese basieren auf dem Windows Script Host (WSH). Dieser wiederum ist limitiert auf COM-objekte die auf dem Computer installiert sein müssen. Sind sie es nicht, funktionieren die Skripte auf dem System nicht. Desweiteren bekommen Sie bei diesen Skripten keine Kommandozeile präsentiert.

Die Antwort auf diese Problematiken bietet Microsoft mit der Powershell, die erstmals 2006 released wurde. Sie können die PowerShell für jedes Windows-Betriebssystem nachrüsten, das derzeit noch im Einsatz ist: von Windows XP bis hoch zu Windows 10 und von Windows Server 2003 bis hoch zum aktuellsten Release. Bei neueren Windows-Versionen ist die PowerShell sogar standardmäßig mitgeliefert. Von daher gibt es heutzutage eigentlich überhaupt keinen Grund mehr, Automatisierungstasks über Batch-dateien zu versuchen. Denn: Powershell kann auch mit Batch-Datiene umgehen. Das heißt Sie können ohne Probleme ihre alten .bat- und .cmd-Skripte weiterhin mit der Powerhsell einsetzen und Sie mit neueren Skritpen kombinieren, die Sie nach dem Powershell-Standard schreiben.

 

Wenn dir dieser Post gefallen hat, teile ihn doch auf Social Media, abonniere und verfolge mich per E-Mail, RSS-Feed, Social Media oder registriere dich auf meiner Seite. Wenn du registriert bist, like den Post bitte, wenn er dir gefallen hat!

]]>
http://dafrk-blog.com/?feed=rss2&p=2950 0