-basst-
Goto Top

Verteilung einer Software (exe-Installer via vb-script) im Netzwerk

Hallo zusammen,

wir sind dabei, unsere Computerinventarisierung umzustellen, es soll hierbei GLPI zusammen mit FusionInventory zum Einsatz kommen.

Klappt bei manueller Installation des Agents auch soweit.

Für die Verteilung werden unterschiedliche Wege vorgeschlagen (http://fusioninventory.org/documentation/agent/installation/windows/#la ..) , wobei einige Teile der Dokumentation wohl nicht aktuell sind.

Im Grunde soll das VB-Script prüfen, ob der Agent bereits installiert ist und dann den Installer (.exe) mit eingien Parametern aufrufen

Nun habe ich die verschiedenen Wege versucht, bin aber immer gescheitert

GPO Startscript: Script als Startscript einstellen - Installer liegt auf Share, beim Starten ist dieses wohl nicht verfügbar - schlägt fehl
Loginscript: UAC meldet sich bei Kollegen, Admin-Daten werden benötigt - hilft auch nicht sonderlich
PSExec: Scheint nur Rechner für Rechner zu gehen und da bekomme ich auch Fehler beim Dateizugriff auf den Installer.

Irgendwie ist da der Wurm drin...

UAC (dauerhaft) deaktivieren ist aber auch keine Option. Hat da jemand eine Idee, wie ich das Ganze zum Laufen bekomme?

Content-ID: 1720489696

Url: https://administrator.de/contentid/1720489696

Ausgedruckt am: 25.11.2024 um 19:11 Uhr

Th0mKa
Th0mKa 13.01.2022 aktualisiert um 22:56:16 Uhr
Goto Top
Moin,

dann würde ich vorschlagen das du herausfindest warum der Zugriff auf das Share fehlschlägt, diesen benötigst du nämlich bei jeder Art von Remoteinstallation.
Das Startskript authentifiziert sich mit dem Computerkonto, haben diese denn Leserechte auf dem Share?

/Thomas
beidermachtvongreyscull
beidermachtvongreyscull 14.01.2022 aktualisiert um 06:23:43 Uhr
Goto Top
Moin,

der Kollege @Th0mKa hat nen guten Vorschlag gemacht, den ich noch ergänzen möchte wie folgt:

In den Bemerkungen des Scripts steht folgendes:

'       You also must be sure that you have removed the "Open File Security Warning"  
'       from programs accessed from that UNC.  

Diese Warnung darf auch nicht erscheinen, wenn der Computer die Dateien versucht zu öffnen.

Es gibt mehrere Wege, wie Du das tun kannst:

Generell:
https://www.thewindowsclub.com/disable-open-file-security-warning-for-fi ...

Per Datei:
https://www.der-windows-papst.de/wp-content/uploads/2017/09/Alternative- ...

Wenn Du das VBScript nur runtergeladen hast, steckt da übrigens auch der Zone.Identifier drin. Es ist also auch möglich, dass der Computer deshalb das Script nicht ausführt.
em-pie
em-pie 14.01.2022 um 06:41:35 Uhr
Goto Top
Moin,

Einmal muss, wie durch die Kollegen schon richtig geschrieben, das Computerkonto Leserechte auf das Share haben.

Die nächste Frage aber: hat der Rechner das Netzwerk schon verbunden, wenn eigentlich die Computereinstellungen/ Startskripte geladen werden. Durch heutige Techniken wie SSD/ NVMe starten die Rechner „zu schnell“

Gruß
em-pie
lenor73
lenor73 14.01.2022 um 07:46:46 Uhr
Goto Top
Moin,

wenn eine zusätzliche Software eine Option wäre, empfehle ich das kostenlose PDQ Deploy.

Beste Grüße

lenor73
Looser27
Looser27 14.01.2022 um 07:57:43 Uhr
Goto Top
Installer liegt auf Share, beim Starten ist dieses wohl nicht verfügbar - schlägt fehl

Hast Du die Option per GPO gesetzt, dass er auf die Netzwerkverbindung warten soll?
-BassT-
-BassT- 14.01.2022 um 09:52:06 Uhr
Goto Top
Zitat von @Looser27:

Installer liegt auf Share, beim Starten ist dieses wohl nicht verfügbar - schlägt fehl

Hast Du die Option per GPO gesetzt, dass er auf die Netzwerkverbindung warten soll?

Du meinst "Beim Neustart des Computers und bei der Anmeldung immer auf das Netzwerk warten"? Ja, die ist aktiv und entsprechendes GPO wird auch vor dem Objekt verarbeitet, das das Script ausführen soll.


Zitat von @Th0mKa:

Moin,

dann würde ich vorschlagen das du herausfindest warum der Zugriff auf das Share fehlschlägt, diesen benötigst du nämlich bei jeder Art von Remoteinstallation.

Gute Frage - nur wie? Der Zugriff fehlt ja aus irgendeinem Grund

Das Startskript authentifiziert sich mit dem Computerkonto, haben diese denn Leserechte auf dem Share?

Sowohl "Authentifizierte Benutzer" als auch "Domänencomputer" haben Lese+Ausführ-Zugriff


In den Bemerkungen des Scripts steht folgendes:

'       You also must be sure that you have removed the "Open File Security Warning"  
'       from programs accessed from that UNC.  

Diese Warnung darf auch nicht erscheinen, wenn der Computer die Dateien versucht zu öffnen.

Es gibt mehrere Wege, wie Du das tun kannst:

Generell:
https://www.thewindowsclub.com/disable-open-file-security-warning-for-fi ...

Per Datei:
https://www.der-windows-papst.de/wp-content/uploads/2017/09/Alternative- ...

Wenn Du das VBScript nur runtergeladen hast, steckt da übrigens auch der Zone.Identifier drin. Es ist also auch möglich, dass der Computer deshalb das Script nicht ausführt.

Ah, oh! Ja, das habe ich übersehen, daran könnte es liegen. Werde ich mir anschauen!


Die nächste Frage aber: hat der Rechner das Netzwerk schon verbunden, wenn eigentlich die Computereinstellungen/ Startskripte geladen werden. Durch heutige Techniken wie SSD/ NVMe starten die Rechner „zu schnell“

In der Tat sind nahezu alle Rechner im Unternehmen mit SSD ausgestattet, zumindest fürs System-Laufwerk.
Aber gemäß oben genannter GPO sollte der Rechner ja aufs Netzwerk warten - oder gibt es da eine weitere Hürde?

wenn eine zusätzliche Software eine Option wäre, empfehle ich das kostenlose PDQ Deploy.
Danke, wenn's partout nicht klappt, wäre das eine Möglichkeit face-smile
-BassT-
-BassT- 14.01.2022 um 10:37:16 Uhr
Goto Top
Zone.Identifier auf 0 setzen brachte leider auch nix, vorher fehlten gänzlich die ADS-Informationen, vllt. weil die Datei bereits ausgeführt wurde (?)

Generell möchte ich die Warnung nicht deaktivieren, geht das auch nicht per Share?
em-pie
em-pie 14.01.2022 um 10:43:50 Uhr
Goto Top
Dann beginne mit dem debugging.

Wird das Skript denn überhaupt gestartet.
Baue zu Beginn der CSV mal eine Funktion ein, die einen Text in eine zugängliche *.txt schreibt.

z. B. https://stackoverflow.com/questions/2198810/creating-and-writing-lines-t ...
Th0mKa
Th0mKa 14.01.2022 um 11:28:24 Uhr
Goto Top
Zitat von @-BassT-:
Zitat von @Th0mKa:

Moin,

dann würde ich vorschlagen das du herausfindest warum der Zugriff auf das Share fehlschlägt, diesen benötigst du nämlich bei jeder Art von Remoteinstallation.

Gute Frage - nur wie? Der Zugriff fehlt ja aus irgendeinem Grund
Da würde ich ja mal mit PSExec im Systemkontext auf die Jagd gehen und den Zugriff auf das Share versuchen. Hast du denn auch die Freigaberechte entsprechend angepaßt?

psexec.exe -s -i cmd.exe

VG,
Thomas
-BassT-
-BassT- 14.01.2022 aktualisiert um 11:37:05 Uhr
Goto Top
Okay, habe ich ergänzt:

Set objFSO=CreateObject("Scripting.FileSystemObject")

' How to write file
outFile="c:\scripttest.txt"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write "test string" & vbCrLf
objFile.Close

Set objFSO2=CreateObject("Scripting.FileSystemObject")

' How to write file
outFile2="\\Servername\PFad\Pfad\Pfad\Test\scripttest2.log"
Set objFile2 = objFSO2.CreateTextFile(outFile2,True)
objFile2.Write "test string" & vbCrLf
objFile2.Close

(Einmal zum Test lokal, einmal auf Share)
Das Script "fiagent.vbs" befindet sich innerhalb des GPO ("Dateien anzeigen")

fiagent
(wird also angezeigt, wenn ich auf "Dateien anzeigen" klicke.


Wenn ich jetzt auf einem Rechner frisch nach einem Neustart in den Eventviewer schaue sehe ich folgendes:

1. Group Policy:
Bei der Verarbeitung der Gruppenrichtlinie ist aufgrund fehlender Netzwerkkonnektivität mit einem Domänencontroller ein Fehler aufgetreten. Dies kann eine vorübergehende Bedingung sein. Es wird eine Erfolgsmeldung generiert, wenn die Verbindung des Computers mit dem Domänencontroller wiederhergestellt wurde und wenn die Gruppenrichtlinie erfolgreich verarbeitet wurde. Falls für mehrere Stunden keine Erfolgsmeldung angezeigt wird, wenden Sie sich an den Administrator.

2. Group Policy:
Startskript war nicht erfolgreich.
Name des Gruppenrichtlinienobjekts: Computerinventarisierung
Dateisystempfad des Gruppenrichtlinienobjekts: \\Domäne.local\SysVol\domäne.local\Policies\{62B46BD5-6C20-470A-87C4-FBC9C89443D1}\Machine
Skriptname: fiagent.vbs

ErrorCode 2
ErrorDescription Das System kann die angegebene Datei nicht finden.


Rechner war innerhalb weniger Sekunden neugestartet.

Gruppenrichtlinie zum Warten wird aber angewendet...

Weder auf c:\ noch auf dem Share ist die Testdatei vorhanden...
-BassT-
-BassT- 14.01.2022 um 11:43:43 Uhr
Goto Top
Zitat von @Th0mKa:

Zitat von @-BassT-:
Zitat von @Th0mKa:

Moin,

dann würde ich vorschlagen das du herausfindest warum der Zugriff auf das Share fehlschlägt, diesen benötigst du nämlich bei jeder Art von Remoteinstallation.

Gute Frage - nur wie? Der Zugriff fehlt ja aus irgendeinem Grund
Da würde ich ja mal mit PSExec im Systemkontext auf die Jagd gehen und den Zugriff auf das Share versuchen. Hast du denn auch die Freigaberechte entsprechend angepaßt?

psexec.exe -s -i cmd.exe

VG,
Thomas

Microsoft Windows [Version 10.0.17763.1457]
(c) 2018 Microsoft Corporation. Alle Rechte vorbehalten.

C:\WINDOWS\system32>net use q: \\Server\Apps\Public
Der Befehl wurde erfolgreich ausgeführt.


C:\WINDOWS\system32>q:

Q:\>dir
 Datenträger in Laufwerk Q: ist Daten
 Volumeseriennummer: 044A-9A44

 Verzeichnis von Q:\

13.01.2022  16:05    <DIR>          .
13.01.2022  16:05    <DIR>          ..
13.01.2022  15:42            16.154 fi_agent.vbs
14.01.2022  10:31        10.208.390 fusioninventory-agent_windows-x64_2.6.exe
13.01.2022  16:06                21 test.bat
               3 Datei(en),     10.224.565 Bytes
               2 Verzeichnis(se), 589.487.161.344 Bytes frei

Q:\>

Wenn ich dann die fusioninventory-agent_windows-x64_2.6.exe aufrufe innerhalb CMD, startet der Installer ohne weitere Rückfrage

(Script und test.bat liegen aus vorherigen Tests in dem Verzeichnis)
em-pie
em-pie 14.01.2022 um 11:51:50 Uhr
Goto Top
OK. schon mal eine erkenntnisreiche Meldung face-smile

Wie lange wartet der Client, bis dass das Netzwerk verfügbar ist?

Lege mal den RegKey an:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"GpNetworkStartTimeoutPolicyValue "=dword:0000003c  

Bzw. setze folgende GPOs:
  • Computerkonfiguration -> Richtlinien -> Administrative Vorlagen -> System -> Anmelden -> Beim Neustart des Computers und bei der Anmeldung immer auf das Netzwerk warten => Aktiviert
  • Computerkonfiguration -> Richtlinien -> Administrative Vorlagen -> System -> Gruppenrichtlinie -> Wartezeit für Richtlinienverarbeitung beim Systemstart angeben => 60Sekunden
em-pie
em-pie 14.01.2022 um 11:53:37 Uhr
Goto Top
Wenn ich dann die fusioninventory-agent_windows-x64_2.6.exe aufrufe innerhalb CMD, startet der Installer ohne weitere Rückfrage

(Script und test.bat liegen aus vorherigen Tests in dem Verzeichnis)

deine GPO startet das Script doch aber unter \\Domäne.local\SysVol\acb.local\Policies\{62B46BD5-6C20-470A-87C4-FBC9C89443D1}\Machine\fiagent.vbs
Wenn du testest, dann bitte auch so, wie es in der GPO definiert ist.
-BassT-
-BassT- 14.01.2022 aktualisiert um 12:08:04 Uhr
Goto Top
Zitat von @em-pie:

Wenn ich dann die fusioninventory-agent_windows-x64_2.6.exe aufrufe innerhalb CMD, startet der Installer ohne weitere Rückfrage

(Script und test.bat liegen aus vorherigen Tests in dem Verzeichnis)

deine GPO startet das Script doch aber unter \\Domäne.local\SysVol\domäne.local\Policies\{62B46BD5-6C20-470A-87C4-FBC9C89443D1}\Machine\fiagent.vbs
Wenn du testest, dann bitte auch so, wie es in der GPO definiert ist.

Q:\>Q:\>\\Domäne.local\SysVol\domäne.local\Policies\{62B46BD5-6C20-470A-87C4-FBC9C89443D1}\Machine\fiagent.vbs
Zugriff verweigert

Das Script liegt aber auch nicht unter Machine sondern unter

\\Domäne.local\SysVol\domäne.local\Policies\{62B46BD5-6C20-470A-87C4-FBC9C89443D1}\Machine\Scripts\Startup

Wenn ich das Script in der GPO in den Ordner ("Dateien anzeigen") kopiere und dann auswähle, wird aber kein Subfolder mit angegeben. Muss ich den manuell ergänzen?

Wenn ich die beiden Unterordner hinzufüge, erhalte ich die Datei öffnen - Sicherheitswarnung ("Diese Datei befindet sich an einem Speicherort außerhalb des lokalen Netzwerks")
-BassT-
-BassT- 14.01.2022 um 12:02:32 Uhr
Goto Top
Zitat von @em-pie:

OK. schon mal eine erkenntnisreiche Meldung face-smile

Wie lange wartet der Client, bis dass das Netzwerk verfügbar ist?

Lege mal den RegKey an:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"GpNetworkStartTimeoutPolicyValue "=dword:0000003c  

Bzw. setze folgende GPOs:
  • Computerkonfiguration -> Richtlinien -> Administrative Vorlagen -> System -> Anmelden -> Beim Neustart des Computers und bei der Anmeldung immer auf das Netzwerk warten => Aktiviert
  • Computerkonfiguration -> Richtlinien -> Administrative Vorlagen -> System -> Gruppenrichtlinie -> Wartezeit für Richtlinienverarbeitung beim Systemstart angeben => 60Sekunden


Ersteres GPO war gesetzt, zweiteres habe ich jetzt gesetzt
-BassT-
-BassT- 17.01.2022 um 11:57:04 Uhr
Goto Top
Leider hat sich nichts gebessert, es funktioniert immer noch nicht : /
em-pie
Lösung em-pie 17.01.2022 um 12:21:23 Uhr
Goto Top
Zitat von @-BassT-:

Leider hat sich nichts gebessert, es funktioniert immer noch nicht : /

Dann lege mal auf deinem Filserver einen Share "rollout" an:
\\myFileServer\rollout
Rechte: jeder darf lesen.

anschließend dein Script dort rein schieben und in der GPO das Script von dort starten.
ich rufe VBS-Scripte im übrigen zumeist über eine *.bat auf, sodass in der GPO die myScript.bat aufgerufen wird.

myScript.bat
@echo off
echo Start some script
echo.
echo cscript.exe /NOLOGO \\myFileServer\rollout\scripte\fiagent.vbs
exit
-BassT-
-BassT- 21.01.2022 um 12:30:37 Uhr
Goto Top
Zitat von @em-pie:

Zitat von @-BassT-:

Leider hat sich nichts gebessert, es funktioniert immer noch nicht : /

Dann lege mal auf deinem Filserver einen Share "rollout" an:
\\myFileServer\rollout
Rechte: jeder darf lesen.

anschließend dein Script dort rein schieben und in der GPO das Script von dort starten.
ich rufe VBS-Scripte im übrigen zumeist über eine *.bat auf, sodass in der GPO die myScript.bat aufgerufen wird.

myScript.bat
@echo off
echo Start some script
echo.
echo cscript.exe /NOLOGO \\myFileServer\rollout\scripte\fiagent.vbs
exit

Danke, das wars. So funktionierts nun scheinbar.

Vielen, vielen Dank!!