Удаление Powershell Script - У вас настоящая головная боль

В настоящее время я пишу script, который включает в себя несколько удалений программ, установленных на устройстве WES 7. Одно из приложений, которое мне нужно удалить (VMware Horizon View Client), требует перезагрузки. Когда это является частью script, он, кажется, принимает кнопку по умолчанию (YES) и переходит к перезагрузке устройства. Следовательно, script терпит неудачу.

Я был бы очень признателен за вашу помощь в том, как предотвратить эту перезагрузку.

FYI: этот script отправляется с помощью инструмента управления и запускается на целевой странице.

Это мой script:

set-executionpolicy unrestricted
#############################################################
# Un-install unwanted applications
#############################################################
$application = Get-WMIObject Win32_Product -filter "Name='ThinPrint Client Windows 8.6'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='2X Client'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='Adobe Reader X (10.1.4)'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='VMware Horizon View Client'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='VERDE VDI User Tools'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='vWorkspace Connector for Windows'"
$application.Uninstall()

#############################################################
# Remove Internet Explorer Access
#############################################################
dism /online /norestart /Disable-Feature /FeatureName:Internet-Explorer-Optional-x86

#############################################################
# Remove IE Browser LNK from Taskbar
#############################################################
del "C:\Users\User\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Launch Internet Explorer Browser.lnk"

#############################################################
# Make Citrix Receiver the shell
#############################################################
Push-Location
CD 'HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon'
New-Itemproperty -path .\ -name Shell -Type String -Value 'c:\program files\Citrix\Receiver\receiver.exe'
Pop-Location

set-executionpolicy restricted
# End of Script

Я бы очень признателен за помощь в том, как предотвратить перезагрузку на полпути через script.

Ответ 1

Я настоятельно рекомендую НЕ использовать Win32_Product. Каждый раз, когда Win32_Product называется, он выполняет проверку целостности программного обеспечения для каждой установки. Это не только делает вещи очень медленными, но также может вызвать восстановление программного обеспечения, если оно обнаруживает что-то не так.

http://gregramsey.net/2012/02/20/win32_product-is-evil/

Вместо этого зайдите в реестр и просто вызовите строку удаления.

http://support.microsoft.com/kb/247501

Вы можете использовать флаг msiexec norestart для предотвращения перезагрузки.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa372024(v=vs.85).aspx