Multiple Install Script PowerShell?
Hallo Schwarmintelligenz :-)Ich suche ein Script das über PowerShell ausführbar ist zum installieren einer Reihe von Programmen Allerdings sind dies Rechner die sich zwar im Internet befinden aber kein Zugriff auf meinen FTP Server haben auf dem ich die .exe ablegen kann bzw sollen sie diesen Zugriff nicht haben.
$install = Start-Process -FilePath "path" -ArgumentList "/qb" -Wait
if ($install.ExitCode -eq 0) {
Write-Host "Install Successful"
} else {
Write-Host "Install Failed"
}
so in der Richtung soll das aussehen. Allerdings soll sich das script vorher auch die .exe von den verschiedenen Herstellern downloaden.
Heißt also
Ich dachte da an sowas wie einen get Befehl von der und der Quelle im Internet und wenn gezogen dann direkt Install und danach das nächste Programm und vorzugsweise alles quiet.
habt ihr da mögliche Ansätze?
3 Antworten
Im Idealfall sähe dass wes Dir vorschwebt in etwa so aus. Total simpel...
Invoke-WebRequest 'https://get.load-balance.net/?sIcCiPQWJIPFJGgqFzks4pTMe' -OutFile '.\iview459g_x64_setup.exe' #Download
Start-Process '.\iview459g_x64_setup.exe' -arg ' '<#hier evtl. silent-parameter#> -wait #ausführen
#und so weiter
Invoke-WebRequest 'https://img1.dreamies.de/img/766/b/f2wn56r4me2.jpg' -o '.\Erzesel.jpg' #was Du lädst ist eigentlich völlig Wurscht
Start-Process '.\Erzesel.jpg' -wait #mit Standardanwendung öffnen könnte ebensogut ein .mci oder .zip sein.
'ferdsch...'
pause
Der automatisierte Download über http(s) kann jedoch scheidern, wenn der entsprechende Host irgendwelche Absicherungen, Capcha, DSVGO Meldungen etc. Vorgeschaltet hat.
Obiges Script lädt den Installer des bekannten Bildconverters Irfanview (vertrauenswürdiges Programm) herunter und startet den Installer..
vorzugsweise alles quiet
ob der betreffende Installer einen silent-Parameter hat, hängt vom Hersteller des Installers ab. Darauf habe werde ich noch Du Einfluss! Mach Dich Dazu auf der Herstellerseite schlau.
Wegen des Feststellens ob eine Install erfolgreich war , Do kommt es wiederum darauf an, ob eine Rückmeldung über eine Exitcode an den Aufrufer implementiert wurde.
so holt man sich den Exitcode: (ping ist einfach nur ein beliebiges Programm wo ich weis wie man einen Fehler auslöst 🤭)
$proc=Start-Process 'ping.exe' -arg '127.0.0.1 -n 1' -Wait -PassThru
if (!$proc.ExitCode){'alles ok'} else {'da war was falsch'}
$proc=Start-Process 'ping.exe' -arg '0815 -n 1' -Wait -PassThru #hier habe ich einen Fehler provoziert
if (!$proc.ExitCode){'alles ok'} else {'da war was falsch'}
pause
Du benötigst dafür vermutlich "wget":
Schaue dir curl an, das ist bei neuerem Windows dabei. Oder Invoke-WebRequest direkt in PowerShell.