[RESOLU] exécuter un script powershell ?

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
olaplanche
Messages : 173
Inscription : 26 janv. 2017 - 11:11

11 déc. 2017 - 14:57

Bonjour,

J'ai besoin d'exécuter un script powershell depuis un paquet (pour supprimer les apps inutiles de Windows 10 post-upgrade).
J'ai trouvé plusieurs posts sur le forum à ce propos, mais tous traités différemment !

Existe t-il une solution plus "propre" que les autres ?

Pour info :
- Version de WAPT installée : 1.3.13
- OS du serveur : Debian Jessie
- OS de la machine d'administration/création des paquets : Windows 10

Merci
Dernière modification par olaplanche le 19 déc. 2018 - 10:12, modifié 2 fois.
- Version de WAPT installée : 2.3.0.13516 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

13 déc. 2017 - 12:31

utiliser la fonction run_powershell

par exemple :

Code : Tout sélectionner

run_powershell('Get-AppxPackage -Name Microsoft.Windows.Cortana -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}')
C'est le plus propre
olaplanche
Messages : 173
Inscription : 26 janv. 2017 - 11:11

13 déc. 2017 - 16:06

Bonjour et merci pour la réponse.

Je suis en train de tester avec le paquet suivant :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():
    run_powershell('Get-AppXPackage -User Administrateur | where-object {$_.name –notlike “*store*”} | Remove-AppxPackage')
    run_powershell('Get-appxprovisionedpackage –online | where-object {$_.packagename –notlike “*store*”} | Remove-AppxProvisionedPackage -online')
    run_powershell('Get-AppxPackage -AllUsers | where-object {$_.name –notlike “*store*”} | Remove-AppxPackage')
Seule la commande du milieu semble fonctionner (pas de soucis avec un nouveau compte utilisateur). Je ne trouve rien sur la fonction run_powershell, est-il possible d'avoir un retour d'info comme dans la console powershell ? La console wapt ne remonte aucune erreur, mais pourtant les apps ne sont pas supprimé du compte administrateur !

Merci
- Version de WAPT installée : 2.3.0.13516 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
olaplanche
Messages : 173
Inscription : 26 janv. 2017 - 11:11

14 déc. 2017 - 13:51

Complément d'info :

J'utilise la version x64 de powershell et cela pourrait être dû à des limitations de celui-ci pour le compte système.
- Version de WAPT installée : 2.3.0.13516 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
olaplanche
Messages : 173
Inscription : 26 janv. 2017 - 11:11

18 oct. 2018 - 13:07

Bonjour,

Je remonte ce problème que je n'ai toujours pas résolu.
Pas mal de chose ont changé entre temps, à savoir :

- Version de WAPT installée : 1.6.2.7
- OS du serveur : Debian Stetch
- OS de la machine d'administration/création des paquets : Windows 10

Ensuite j'utilise un nouveau script lors de mon déploiement MDT, le voici :

Code : Tout sélectionner

    # Functions
    function Write-LogEntry {
        param(
            [parameter(Mandatory=$true, HelpMessage="Value added to the RemovedApps.log file.")]
            [ValidateNotNullOrEmpty()]
            [string]$Value,
            [parameter(Mandatory=$false, HelpMessage="Name of the log file that the entry will written to.")]
            [ValidateNotNullOrEmpty()]
            [string]$FileName = "RemovedApps.log"
        )
        # Determine log file location
        $LogFilePath = Join-Path -Path $env:windir -ChildPath "Temp\$($FileName)"
        # Add value to log file
        try {
            Add-Content -Value $Value -LiteralPath $LogFilePath -ErrorAction Stop
        }
        catch [System.Exception] {
            Write-Warning -Message "Unable to append log entry to RemovedApps.log file"
        }
    }
    # Get a list of all apps
    Write-LogEntry -Value "Starting built-in AppxPackage and AppxProvisioningPackage removal process"
    $AppArrayList = Get-AppxPackage -PackageTypeFilter Bundle -AllUsers | Select-Object -Property Name, PackageFullName | Sort-Object -Property Name
    # White list of appx packages to keep installed
    $WhiteListedApps = @(
        "Microsoft.DesktopAppInstaller", 
        "Microsoft.WindowsCalculator", 
        "Microsoft.WindowsStore"
    )
    # Loop through the list of appx packages
    foreach ($App in $AppArrayList) {
        # If application name not in appx package white list, remove AppxPackage and AppxProvisioningPackage
        if (($App.Name -in $WhiteListedApps)) {
            Write-LogEntry -Value "Skipping excluded application package: $($App.Name)"
        }
        else {
            # Gather package names
            $AppPackageFullName = Get-AppxPackage -Name $App.Name | Select-Object -ExpandProperty PackageFullName
            $AppProvisioningPackageName = Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -like $App.Name } | Select-Object -ExpandProperty PackageName
            # Attempt to remove AppxPackage
            if ($AppPackageFullName -ne $null) {
                try {
                    Write-LogEntry -Value "Removing application package: $($App.Name)"
                    Remove-AppxPackage -Package $AppPackageFullName -ErrorAction Stop | Out-Null
                }
                catch [System.Exception] {
                    Write-LogEntry -Value "Removing AppxPackage failed: $($_.Exception.Message)"
                }
            }
            else {
                Write-LogEntry -Value "Unable to locate AppxPackage for app: $($App.Name)"
            }
            # Attempt to remove AppxProvisioningPackage
            if ($AppProvisioningPackageName -ne $null) {
                try {
                    Write-LogEntry -Value "Removing application provisioning package: $($AppProvisioningPackageName)"
                    Remove-AppxProvisionedPackage -PackageName $AppProvisioningPackageName -Online -ErrorAction Stop | Out-Null
                }
                catch [System.Exception] {
                    Write-LogEntry -Value "Removing AppxProvisioningPackage failed: $($_.Exception.Message)"
                }
            }
            else {
                Write-LogEntry -Value "Unable to locate AppxProvisioningPackage for app: $($App.Name)"
            }
        }
    }
    # White list of Features On Demand V2 packages
    Write-LogEntry -Value "Starting Features on Demand V2 removal process"
    $WhiteListOnDemand = "NetFX3|Language|Browser.InternetExplorer"
    # Get Features On Demand that should be removed
    $OnDemandFeatures = Get-WindowsCapability -Online | Where-Object { $_.Name -notmatch $WhiteListOnDemand -and $_.State -like "Installed"} | Select-Object -ExpandProperty Name
    foreach ($Feature in $OnDemandFeatures) {
        try {
            Write-LogEntry -Value "Removing Feature on Demand V2 package: $($Feature)"
            Get-WindowsCapability -Online -ErrorAction Stop | Where-Object { $_.Name -like $Feature } | Remove-WindowsCapability -Online -ErrorAction Stop | Out-Null
        }
        catch [System.Exception] {
            Write-LogEntry -Value "Removing Feature on Demand V2 package failed: $($_.Exception.Message)"
        }
    }
    # Complete
    Write-LogEntry -Value "Completed built-in AppxPackage and AppxProvisioningPackage removal process"
Je souhaiterais m'en servir dans un paquet wapt, mais je ne vois pas comment...
Si quelqu'un peut m'aiguiller sur le bon chemin ?

Merci
- Version de WAPT installée : 2.3.0.13516 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
olaplanche
Messages : 173
Inscription : 26 janv. 2017 - 11:11

19 déc. 2018 - 10:12

J'ai résolu mon problème avec le code suivant :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *
#import subprocess

uninstallkey = []

def install():
    run('powershell.exe -NoProfile -NonInteractive -File RemoveBuiltinApps.ps1')
Il faut penser à activer l’exécution des scripts powershell sur les postes concernés ou ajouter le paramètre "-executionpolicy bypass"
- Version de WAPT installée : 2.3.0.13516 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
jeancharles
Messages : 21
Inscription : 11 juin 2019 - 10:02

15 oct. 2019 - 11:45

Bonjour,

Avec du retard, ne serait-ce pas mieux de modifier la commande powershell pour ajouter le " -executionpolicy bypass" directement dans la commande ?
olaplanche
Messages : 173
Inscription : 26 janv. 2017 - 11:11

15 oct. 2019 - 12:00

Bonjour,

C'est bien ce que j'ai indiqué dans ma phrase ;) :
Il faut penser à activer l’exécution des scripts powershell sur les postes concernés ou ajouter le paramètre "-executionpolicy bypass"
- Version de WAPT installée : 2.3.0.13516 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
jeancharles
Messages : 21
Inscription : 11 juin 2019 - 10:02

15 oct. 2019 - 12:04

Ah oui effectivement en lisant c'est cela :)
je veux aller trop vite et j'oublie la moitié des informations en cours de route!

Merci!
Verrouillé