[GELÖST] Wie führt man ein PowerShell-Skript aus?

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Gesperrt
Olaplanche
Nachrichten: 178
Anmeldung: 26. Januar 2017 - 11:11 Uhr

11. Dezember 2017 - 14:57 Uhr

Hallo,

ich muss ein PowerShell-Skript aus einem Paket ausführen, um nach einem Upgrade unnötige Apps von Windows 10 zu entfernen.
Ich habe dazu bereits einige Forenbeiträge gefunden, aber die Vorgehensweise ist unterschiedlich.

Gibt es eine elegantere Lösung?

Zur Information:
- Installierte WAPT-Version: 1.3.13
- Server-Betriebssystem: Debian Jessie
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10.

Vielen Dank.
Zuletzt bearbeitet von olaplanche am 19. Dezember 2018 um 10:12 Uhr, 2 Mal bearbeitet.
- Installierte WAPT-Version: 2.6.0.16795 Enterprise
- Server-Betriebssystem: Linux / Debian Bookworm
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

13. Dezember 2017 - 12:31 Uhr

Verwenden Sie die Funktion run_powershell

Zum Beispiel :

Code: Alle auswählen

run_powershell('Get-AppxPackage -Name Microsoft.Windows.Cortana -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}')
Es ist am saubersten
Olaplanche
Nachrichten: 178
Anmeldung: 26. Januar 2017 - 11:11 Uhr

13. Dezember 2017 - 16:06 Uhr

Hallo und vielen Dank für die Antwort.

Ich teste derzeit mit folgendem Paket:

Code: Alle auswählen

# -*- 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')
Nur der mittlere Befehl scheint zu funktionieren (mit einem neuen Benutzerkonto gibt es keine Probleme). Ich finde keine Informationen zur Funktion `run_powershell`; gibt es eine Möglichkeit, wie in der PowerShell-Konsole, Feedback zu erhalten? Die Wapt-Konsole meldet keine Fehler, trotzdem werden die Apps nicht vom Administratorkonto entfernt!

DANKE
- Installierte WAPT-Version: 2.6.0.16795 Enterprise
- Server-Betriebssystem: Linux / Debian Bookworm
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Olaplanche
Nachrichten: 178
Anmeldung: 26. Januar 2017 - 11:11 Uhr

14. Dezember 2017 – 13:51 Uhr

Zusätzliche Information:

Ich verwende die x64-Version von PowerShell, und dies könnte an den Einschränkungen dieser Version für das Systemkonto liegen.
- Installierte WAPT-Version: 2.6.0.16795 Enterprise
- Server-Betriebssystem: Linux / Debian Bookworm
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Olaplanche
Nachrichten: 178
Anmeldung: 26. Januar 2017 - 11:11 Uhr

18. Oktober 2018 – 13:07 Uhr

Guten Morgen,

Ich bringe dieses Problem erneut zur Sprache, da ich es immer noch nicht gelöst habe.
In der Zwischenzeit hat sich einiges verändert, nämlich:

- Installierte WAPT-Version: 1.6.2.7
- Server-Betriebssystem: Debian Stetch
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10

Als Nächstes verwende ich während meiner MDT-Bereitstellung ein neues Skript; hier ist es:

Code: Alle auswählen

    # 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"
Ich würde es gerne in einem wapt-Paket verwenden, aber ich weiß nicht wie...
Kann mir jemand den richtigen Weg weisen?

DANKE
- Installierte WAPT-Version: 2.6.0.16795 Enterprise
- Server-Betriebssystem: Linux / Debian Bookworm
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Olaplanche
Nachrichten: 178
Anmeldung: 26. Januar 2017 - 11:11 Uhr

19. Dezember 2018 - 10:12 Uhr

Ich habe mein Problem mit folgendem Code gelöst:

Code: Alle auswählen

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

uninstallkey = []

def install():
    run('powershell.exe -NoProfile -NonInteractive -File RemoveBuiltinApps.ps1')
Sie müssen die Ausführung von PowerShell-Skripten auf den betroffenen Rechnern aktivieren oder den Parameter "-executionpolicy bypass" hinzufügen
- Installierte WAPT-Version: 2.6.0.16795 Enterprise
- Server-Betriebssystem: Linux / Debian Bookworm
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Jeancharles
Nachrichten: 21
Anmeldung: 11. Juni 2019 - 10:02 Uhr

15. Oktober 2019 - 11:45 Uhr

Hallo,

etwas spät, aber wäre es nicht besser, den PowerShell-Befehl so zu ändern, dass "-executionpolicy bypass" direkt in den Befehl eingefügt wird?
Olaplanche
Nachrichten: 178
Anmeldung: 26. Januar 2017 - 11:11 Uhr

15. Oktober 2019 - 12:00 Uhr

Guten Morgen,

Das ist genau das, was ich in meinem Satz angedeutet habe ;) :
Sie müssen die Ausführung von PowerShell-Skripten auf den betroffenen Rechnern aktivieren oder den Parameter "-executionpolicy bypass" hinzufügen.
- Installierte WAPT-Version: 2.6.0.16795 Enterprise
- Server-Betriebssystem: Linux / Debian Bookworm
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Jeancharles
Nachrichten: 21
Anmeldung: 11. Juni 2019 - 10:02 Uhr

15. Oktober 2019 - 12:04 Uhr

Ah ja, genau, beim Lesen merke ich, dass :)
ich zu schnell vorgehe und dabei die Hälfte der Informationen vergesse!

Danke!
Gesperrt