Powershell卸载脚本 - 真的很头疼

时间:2013-07-25 20:37:36

标签: powershell

我目前正在编写一个脚本,其中包含一些安装在WES 7设备上的程序卸载。我需要卸载的其中一个应用程序(VMware Horizo​​n 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 个答案:

答案 0 :(得分:10)

我强烈建议不要使用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