2013-07-25 2 views
5

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

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

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

Это мой сценарий:

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 

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

ответ

10

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

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

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

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

Вы можете использовать флаг Norestart MSIexec, чтобы попытаться предотвратить перезагружается.

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

Смежные вопросы