Hallo zusammen,
Ich bin gerade dabei die Neuinstallation unserer Firmenrechner mit der Desired State Configuration der Powershell 4.0 zu automatisieren. Die Rechner laufen mit Win7 professional und ich verwende einen Windows Server 2012 R2 mit einem Webservice als Pull-Server.
ich habe hier nur das Problem, dass manche Teile des Skripts nicht ausgeführt werden wenn ich sie im Pull-Modus vom Webservice ziehe. Einfache teile, wie z.B. ordner erstellen oder Dateien und Programme verschieben macht es ohne Probleme aber bei Anwendungen
wie z.B. Windows Updates zu aktualisieren oder den VLC mediaplayer als .msi Paket zu installieren macht er nicht. Kann es sein, dass diese Programme eine Oberfläche brauchen, die nebenher laufen muss, damit diese auch silent ausgeführt werden können? hier
ist einmal mein gesamtes Skript:
configuration CADKonfig { node 4d374ba6-416b-4b88-9322-00d7a9c2da9d #Zielcomputer { Script deskupdate #DeskUpdate laufen lassen { TestScript = {$false} SetScript = ([String]{ \\hhinstall2\Konfiguration\PowerShellScript\Deskupdate.ps1 #zu verwendendes powershellscript }) GetScript = { } } Script wpi #WPI durchführen { TestScript = {$false} SetScript = ([String]{ \\hhinstall2\Konfiguration\PowerShellScript\WPIsilent.ps1 #zu verwendendes powershellscript }) GetScript = { } } Script VLC #Installiert VLC Media Player { TestScript = {$false} SetScript = ([String]{ \\hhinstall2\Konfiguration\PowerShellScript\vlcInstallieren.ps1 #zu verwendendes powershellscript }) GetScript = { } } Script WU #Windows Updates herunterladen und installieren (Updates für Internet Explorer 11 sind ausgeschlossen) { TestScript = {$false} SetScript = ([String]{ \\hhinstall2\Konfiguration\PowerShellScript\WindowsUpdate #zu verwendendes powershellscript }) GetScript = { } #################### Wichtig!!! ######################## #Wenn Internet Explorer 12 erscheint bitte im Script beim Parameter "-NotTitle" auf "Internet Explorer 12" setzen damit keine Updates dafür heruntergeladen werden } File DirectModeling #Datei in Zielordner kopieren { Ensure = "Present" Type = "Directory" DestinationPath = "C:\PTC\Creo Elements\Direct Model and Drawing Manager 18.1" SourcePath = "\\hhcadfs\PTC\Creo Elements\Direct Modeling 18.1_x64" Recurse = "True" } File PunktKomma #Datei in Zielordner kopieren { Ensure = "Present" Type = "Directory" DestinationPath = "C:\Programme\PunktKomma" SourcePath = "\\hhinstall2\Konfiguration\PunktKomma" Recurse = "True" } File OsdKill #Datei in Zielordner kopieren { Ensure = "Present" Type = "Directory" DestinationPath = "C:\Programme\osdKill" SourcePath = "\\hhinstall2\Konfiguration\osdKill" Recurse = "True" } File Desktop18xx #Datei auf den Desktop kopieren { Ensure = "Present" Type = "Directory" DestinationPath = "C:\Users\Public\Desktop\18.xx" SourcePath = "\\hhcadfs\PTC\Startscripts\Desktop\18.xx" Recurse = "True" DependsOn = "[File]PunktKomma" } File DruckerEinrichtenDesktop #Datei auf den Desktop kopieren { Ensure = "Present" Type = "File" DestinationPath = "C:\Users\Public\Desktop\DruckerEinrichten.ink" SourcePath = $Drucker Recurse = "True" DependsOn = "[File]PunktKomma" } File OsdKillDesktop #Datei auf den Desktop kopieren { Ensure = "Present" Type = "Directory" DestinationPath = "C:\Users\Public\Desktop\osdKill" SourcePath = "C:\Programme\osdkill" Recurse = "True" DependsOn = "[File]OsdKill" } File Mountprinter64bit #Datei auf den Desktop kopieren { Ensure = "Present" Type = "File" DestinationPath = "C:\Users\Public\Desktop\mountprinter64bit.bat" SourcePath = "\\hhinstall2\Konfiguration\Drucker\mountprinter64bit.bat" Recurse = "True" } File PunktKommaAutostart #Datei in Zielordner kopieren { Ensure = "Present" Type = "File" DestinationPath = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\Autostart" SourcePath = "C:\Programme\PunktKomma\Punkt.exe" Recurse = "True" DependsOn = "[File]PunktKomma" } File TempVerzeichnis #Temp Verzeichnis anlegen { Ensure = "Present" Type = "Directory" DestinationPath = "C:\Temp" } Script runmountprinter #Powershell Script ausführen, welches Start-mountprinter64bit.bat ausführt { TestScript = {$false} SetScript = ([String]{ \\hhinstall2\Konfiguration\PowerShellScript\Startmountprinter64bit.ps1 }) GetScript = { } DependsOn = "[File]Mountprinter64bit" } } } $MofFile = CADKonfig $Drucker = "\\hhinstall2\Konfiguration\Drucker\Drucker einrichten (64bit).lnk" CADKonfig -ComputerName $env:COMPUTERNAME -OutputPath "C:\DSCMOF"
Hier ist das Skript für Windows Update welches aufgerufen wird:
Get-WUInstall -NotTitle “Internet Explorer 11″ -AcceptAll
Das WPI Skript:
Start-Process -FilePath “\\hhinstall2\hhinstall\setup\WPI.exe” -verbose -ArgumentList ‘timer=1 force=true’
Das VLC Skript:
$Anwendung = “\\hhinstall2\Konfiguration\vlc-2.2.0-win32\vlc-2.2.0-win32.msi”; #(Get-WmiObject -Class Win32_Product | where {$_.Name -eq “7-Zip 9.20 (x64 edition)”}).Uninstall(); (Get-WmiObject -ComputerName localhost -List | Where-Object -FilterScript {$_.Name -eq “Win32_Product”}).Install($Anwendung);
Und das DeskUpdate Skript:
start -FilePath “C:\Program Files (x86)\Fujitsu\DeskUpdate\ducmd.exe” -ArgumentList “/web /drv”
Ich habe auch einzelne Teile des Skriptes als einzelne Konfigurationen geschrieben und habe diese im Pull-Modus getestet.
Im Push-Modus haben alle einwandfrei funktioniert aber im Pull-Modus haben die Skripte für WPI, Windows Update, Deskupdate und VLC nicht funktioniert. Erstaunlicherweise hat ein Skript, dass den Computer neustarten(nur als test), auch nicht funktioniert.
Ich hoffe irgendjemand kann mir helfen.
Vielen dank im voraus.