Wie angepasste Dateien auf Windows-PCs verteilen?
Hallo zusammen,
ich benötige eine einfache Lösung, mit der ich aktualisierte Dateien auf Windows-10 Clients verteilen kann. Es handelt sich um Word-Vorlagen und einige Einstellungs-(Text)-Files, die auf einer Server-Freigabe liegen. Nicht alle PCs erhalten die selben Dateien, es gibt verschiedene GPOs, die das über GPP erreichen.
Da habe ich das Problem, dass bei jedem gpupdate die Dateien neu kopiert werden, was unnützen traffic produziert (GPP:Ersetzen; Aktualisiseren reicht nicht, da die Dateien gelegentlich geändert werden). Um das Effizienter zu gestalten, habe ich ein Powershell-Skript gebastelt, das für die Dateien auf dem Server eine Hash generiert und eine Datei schreibt. Der Client lädt die Hash-Datei vom Server und schaut nach, welche noch aktuell sind. So weit so gut, funktioniert am Testsystem. Es geht um ca. 100 Dateien in 3-4 Varianten zusammengestellt. Das Client Skript wird über GPO verteilt und gestartet.
Allerdings habe ich das Gefühl, das Rad jeweils neu zu erfinden. Was habe ich mir noch angesehen habe:
Zunächst Ansible: Ich habe Ansible für unsere Linux Maschinen im Einsatz. Allerdings behagt es mir nicht, die Domänen-Anmeldedaten auf dem Ansible-Rechner zum Zugriff auf die PCs zu nutzen. Ich habe die Windows-AD-Domäne benutzerzugangsmäßig komplett von unseren Linux-Systemen getrennt. Und ein ansible-pull scheint auf Windows nicht realisiserbar zu sein.
opsi: Ich will keine Software installieren, nur ein paar Dateien verteilen. Das ganze wäre oversized, und wenn ich opsi-skripts bastle, kann ich auch bei meiner Powershell Variante bleiben.
Intune: haben wir nicht für alle PCs, wir warten mal, wie sich Azure und Windows 11 weiterentwickelt...
Hat jemand noch eine Idee, eine Ansatz?
Grüße
lcer
ich benötige eine einfache Lösung, mit der ich aktualisierte Dateien auf Windows-10 Clients verteilen kann. Es handelt sich um Word-Vorlagen und einige Einstellungs-(Text)-Files, die auf einer Server-Freigabe liegen. Nicht alle PCs erhalten die selben Dateien, es gibt verschiedene GPOs, die das über GPP erreichen.
Da habe ich das Problem, dass bei jedem gpupdate die Dateien neu kopiert werden, was unnützen traffic produziert (GPP:Ersetzen; Aktualisiseren reicht nicht, da die Dateien gelegentlich geändert werden). Um das Effizienter zu gestalten, habe ich ein Powershell-Skript gebastelt, das für die Dateien auf dem Server eine Hash generiert und eine Datei schreibt. Der Client lädt die Hash-Datei vom Server und schaut nach, welche noch aktuell sind. So weit so gut, funktioniert am Testsystem. Es geht um ca. 100 Dateien in 3-4 Varianten zusammengestellt. Das Client Skript wird über GPO verteilt und gestartet.
Allerdings habe ich das Gefühl, das Rad jeweils neu zu erfinden. Was habe ich mir noch angesehen habe:
Zunächst Ansible: Ich habe Ansible für unsere Linux Maschinen im Einsatz. Allerdings behagt es mir nicht, die Domänen-Anmeldedaten auf dem Ansible-Rechner zum Zugriff auf die PCs zu nutzen. Ich habe die Windows-AD-Domäne benutzerzugangsmäßig komplett von unseren Linux-Systemen getrennt. Und ein ansible-pull scheint auf Windows nicht realisiserbar zu sein.
opsi: Ich will keine Software installieren, nur ein paar Dateien verteilen. Das ganze wäre oversized, und wenn ich opsi-skripts bastle, kann ich auch bei meiner Powershell Variante bleiben.
Intune: haben wir nicht für alle PCs, wir warten mal, wie sich Azure und Windows 11 weiterentwickelt...
Hat jemand noch eine Idee, eine Ansatz?
Grüße
lcer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1078278259
Url: https://administrator.de/forum/wie-angepasste-dateien-auf-windows-pcs-verteilen-1078278259.html
Ausgedruckt am: 08.04.2025 um 12:04 Uhr
7 Kommentare
Neuester Kommentar
Zitat von @lcer00:
Hallo,
ich meine an Netzwerk Last...Hallo,
Zitat von @Vision2015:
Moin...
hab ich doch geschrieben,Moin...
Da habe ich das Problem, dass bei jedem gpupdate die Dateien neu kopiert werden, was unnützen traffic produziert
egal ob opsi oder intune, der traffic bleibt der gleiche.... von was reden den genau?Momentan vergleiche ich per Powershell die Dateihashes und der Netzwerk-Traffic beschränkt sich auf das Herunterladen der Hash-Datei. Nur wenn der Hash nicht stimmt, wird die Datei vom Server geladen.
Ich suche halt eine Lösung für wenig Traffic und wenig überbordendem Aufwand.
Grüße
lcer
Moin,
ich mache das mit VBScript (allerdings nur für die Normal.dotm) mit optionalem Datenvergleich (Datum der letzten Änderung):
ich mache das mit VBScript (allerdings nur für die Normal.dotm) mit optionalem Datenvergleich (Datum der letzten Änderung):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Const OverwriteExisting = TRUE
'Windows-Benutzername und %APPDATA%-Variable auslesen
Set wshShell = CreateObject( "WScript.Shell" )
strUserName = wshShell.ExpandEnvironmentStrings( "%USERNAME%" )
strAppDataDir = wshSHell.ExpandEnvironmentStrings( "%APPDATA%" )
'Vorhandenseins-Prüfungen für Server- und lokale Dateien
LokaleDateiVorhanden = 0
ServerDateiVorhanden = 0
LokalerOrdnerVorhanden = 0
'Prüfung ob lokale Datei existiert
Set objFSO = CreateObject("Scripting.FileSystemObject")
If (objFSO.FileExists(strAppDataDir & "\Microsoft\Templates\Normal.dotm")) Then
LokaleDateiVorhanden = 1
Set objFSO = Nothing
End If
'Prüfung ob Datei auf Server existiert
Set objFSO = CreateObject("Scripting.FileSystemObject")
If (objFSO.FileExists("\\server\word\Deploy\word-neu\Normal.dotm")) Then
ServerDateiVorhanden = 1
Set objFSO = Nothing
End If
'Prüfung ob lokaler Ordner existiert
Set objFSO = CreateObject("Scripting.FileSystemObject")
If (objFSO.FolderExists(strAppDataDir & "\Microsoft\Templates\")) Then
LokalerOrdnerVorhanden = 1
Set objFSO = Nothing
End If
'Wenn beide Dateien vorhanden, dann Prüfung auf Datumsunterschied und ggf. Ersetzung
If LokaleDateiVorhanden AND ServerDateiVorhanden Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLocalFile = objFSO.GetFile(strAppDataDir & "\Microsoft\Templates\Normal.dotm")
dtmLocalDate = objLocalFile.DateLastModified
Set objServerFile = objFSO.GetFile("\\server\word\Deploy\word-neu\Normal.dotm")
dtmServerDate = objServerFile.DateLastModified
'If dtmLocalDate < dtmServerDate Then '...überschreibe sie nur, wenn die Serverdatei neueren Datums ist...
objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
Set objFSO = Nothing
'End If
WScript.Quit
End If
'Wenn lokaler Ordner noch nicht erstellt wurde oder lokale Datei fehlt...
If LokaleDateiVorhanden = 0 OR LokalerOrdnerVorhanden = 0 then
Set objFSO = CreateObject("Scripting.FileSystemObject")
objLocalFilePath = strAppDataDir & "\Microsoft\Templates" & chr(92)
Set objShell = CreateObject("Wscript.Shell")
If LokalerOrdnerVorhanden = 0 Then
objShell.Run "cmd /c mkdir " & chr(34) & objLocalFilePath & chr(34)
End If
Set objServerFile = objFSO.GetFile("\\server\word\Deploy\word-neu\Normal.dotm")
WScript.Sleep (1000)
objFSO.CopyFile objServerFile, objLocalFilePath, OverwriteExisting
Set objFSO = Nothing
WScript.Quit
End If

Robocopy Task oder Startskript per GPO auf die Clients verteilen.