Hola,
necesito ejecutar un script de PowerShell desde un paquete (para eliminar aplicaciones innecesarias de Windows 10 después de una actualización).
He encontrado varias publicaciones en foros sobre esto, ¡pero todas lo abordan de manera diferente! ¿
Existe una solución más sencilla?
Para su información:
- Versión de WAPT instalada: 1.3.13
- Sistema operativo del servidor: Debian Jessie
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
Gracias
[RESUELTO] ¿Cómo ejecutar un script de PowerShell?
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
-
olaplancha
- Mensajes: 178
- Inscripción: 26 de enero de 2017 - 11:11
Última edición realizada por olaplanche el 19 de diciembre de 2018 a las 10:12, editado 2 veces.
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
- Sfonteneau
- Experto en WAPT
- Mensajes: 2312
- Registrado: 10 de julio de 2014 - 23:52
- Contacto :
utilice la función run_powershell
Por ejemplo :
Es el más limpio
Por ejemplo :
Código: Seleccionar todo
run_powershell('Get-AppxPackage -Name Microsoft.Windows.Cortana -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}')-
olaplancha
- Mensajes: 178
- Inscripción: 26 de enero de 2017 - 11:11
Hola y gracias por la respuesta.
Actualmente estoy probando con el siguiente paquete:
Solo el comando intermedio parece funcionar (sin problemas con una cuenta de usuario nueva). No encuentro información sobre la función `run_powershell`; ¿es posible obtener información como en la consola de PowerShell? La consola de Wapt no informa de ningún error, pero las aplicaciones no se eliminan de la cuenta de administrador
GRACIAS
Actualmente estoy probando con el siguiente paquete:
Código: Seleccionar todo
# -*- 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')GRACIAS
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
-
olaplancha
- Mensajes: 178
- Inscripción: 26 de enero de 2017 - 11:11
Información adicional:
Estoy utilizando la versión x64 de PowerShell y esto podría deberse a limitaciones de la misma para la cuenta del sistema.
Estoy utilizando la versión x64 de PowerShell y esto podría deberse a limitaciones de la misma para la cuenta del sistema.
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
-
olaplancha
- Mensajes: 178
- Inscripción: 26 de enero de 2017 - 11:11
Buen día,
Vuelvo a plantear este problema porque todavía no lo he solucionado.
Entretanto han cambiado bastantes cosas, a saber:
- Versión WAPT instalada: 1.6.2.7
- Sistema operativo del servidor: Debian Stetch
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
A continuación, uso un nuevo script durante mi implementación de MDT; aquí está:
Me gustaría usarlo en un paquete wapt, pero no veo cómo...
¿Puede alguien indicarme la dirección correcta?
GRACIAS
Vuelvo a plantear este problema porque todavía no lo he solucionado.
Entretanto han cambiado bastantes cosas, a saber:
- Versión WAPT instalada: 1.6.2.7
- Sistema operativo del servidor: Debian Stetch
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
A continuación, uso un nuevo script durante mi implementación de MDT; aquí está:
Código: Seleccionar todo
# 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"¿Puede alguien indicarme la dirección correcta?
GRACIAS
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
-
olaplancha
- Mensajes: 178
- Inscripción: 26 de enero de 2017 - 11:11
Resolví mi problema con el siguiente código:
Debe habilitar la ejecución del script de PowerShell en las máquinas afectadas o agregar el parámetro "-executionpolicy bypass"
Código: Seleccionar todo
# -*- coding: utf-8 -*-
from setuphelpers import *
#import subprocess
uninstallkey = []
def install():
run('powershell.exe -NoProfile -NonInteractive -File RemoveBuiltinApps.ps1')- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
-
Jean Charles
- Mensajes: 21
- Inscripción: 11 de junio de 2019 - 10:02
Hola,
un poco tarde, pero ¿no sería mejor modificar el comando de PowerShell para agregar "-executionpolicy bypass" directamente al comando?
un poco tarde, pero ¿no sería mejor modificar el comando de PowerShell para agregar "-executionpolicy bypass" directamente al comando?
-
olaplancha
- Mensajes: 178
- Inscripción: 26 de enero de 2017 - 11:11
Buen día,
Eso es exactamente lo que indiqué en mi frase
:
Eso es exactamente lo que indiqué en mi frase
Debe habilitar la ejecución de scripts de PowerShell en las máquinas afectadas o agregar el parámetro "-executionpolicy bypass".
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
-
Jean Charles
- Mensajes: 21
- Inscripción: 11 de junio de 2019 - 10:02
Ah, sí, efectivamente, al leer sobre ello, ¡eso es! 
Estoy intentando ir demasiado rápido y se me olvida la mitad de la información por el camino. ¡
Gracias!
Estoy intentando ir demasiado rápido y se me olvida la mitad de la información por el camino. ¡
Gracias!
