IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Installation de maj EXE par lots


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut Installation de maj EXE par lots
    Bonjour la communauté,
    Je dois déployer des mises à jour Office sur un ensemble de postes. Ces mises à jour sont aux formats CAB et EXE.
    Pour le format CAB, j'ai réussi à faire un script PowerShell, avec une boucle Foreach et la commande Add-WindowsPackage, j'ai réussi à installer un lot de fichiers CAB.
    Pour les maj au format EXE, je n'y parviens pas.
    Ci-dessous le code de mon script,....qui ne fonctionne pas

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Start-Transcript -Path "c:\Temp\InstallExeUpdates.txt" -Append
    $StartDate=Get-Date -Format "dddd dd/MM/yyyy HH:mm:ss"
    #Liste des maj au format EXE
    $Updates=Get-ChildItem -Path C:\Temp -File *.exe | 
        Where-Object { $InstalledPatches -notcontains ( $_.BaseName -replace '^.*?\-(kb\d{7})\-.*$', '$1' )}
    $Updates
    $Process="C:\WINDOWS\system32\cmd.exe"
    #$Arguments="/quiet /norestart"
    if(-not $Updates ){
        Write-Host "already installed"
        #exit
        }
    Foreach($Update in $Updates){
        Write-Host "$Update" #juste pour affichage de l'information
        $Install=Start-Process $Update -ArgumentList '/quiet', '/norestart'
        $Install.WaitForExit()
        #Move-Item -Path C:\Temp\$Update -Destination C:\Temp\Installed\$Update
        }
    $EndDate=Get-Date -Format "dddd dd/MM/yyyy HH:mm:ss"
    $Duration=((Get-Date $EndDate) - (Get-Date $StartDate)).ToString()
    $Duration
    Stop-Transcript


    Message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Impossible d’appeler une méthode dans une expression Null.
    Au caractère C:\Temp\InstallExeUpdates.ps1:16 : 5
    +     $Install.WaitForExit()
    +     ~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation : (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

    Merci infiniment pour toute aide....Je ne trouve plus la solution.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    L'erreur dans ton code est ici : $Install.WaitForExit()

    Tu ne peux pas utiliser WaitForExit() puisque $Install est null.
    Pour que $Install récupère le processus d’installation, tu dois passer le paramètre PassThru à la cmdlet Start-Process

    -PassThru
    Returns a process object for each process that the cmdlet started. By default, this cmdlet does not generate any output.


    PS : Malgré cette erreur ta première installation doit bien se lancer.

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    $Install=Start-Process $Update -ArgumentList '/quiet', '/norestart'
    Tu devrais aussi nommer une propriété de ton objet $Update

Discussions similaires

  1. [Run]Exécution de java.exe au lieu de javaw.exe par Eclipse
    Par newfsch dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 24/11/2005, 12h53
  2. insertions par lots
    Par boubilescu dans le forum Access
    Réponses: 1
    Dernier message: 04/11/2005, 10h32
  3. [Mail] newsletter, envoi de mail par lot
    Par jexl dans le forum Langage
    Réponses: 9
    Dernier message: 08/09/2005, 16h44
  4. Outil pour modification de fichiers html par lots
    Par Tavernier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 19/08/2005, 09h21
  5. [sybase] Suppression de tables par lot
    Par Higgins dans le forum Sybase
    Réponses: 2
    Dernier message: 30/09/2004, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo