Сценарий удаления Powershell - реальная головная боль

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

Буду очень признателен за помощь в предотвращении этой перезагрузки.

К вашему сведению: этот сценарий передается через инструмент управления и выполняется с повышенными правами на цели.

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

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

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

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

Другие вопросы по тегам