最近遇到一个要求:卸载所有电脑的某个工具软件,但是这个手机软件不是SCCM部署的,有的是客户自己安装的,有的是系统软件部署的时候就已经打包好了,版本号各种各样,安装路径也不一样!
首先想到的自然是Powershell。反过来,Get-Apppacke\Get-AppXpacke、Get-WMI对象类Win32_Product等几个方法都不好。最后用在注册表文件中查找UninstallString的方法来处理!
通过以下方式:
1.首先,用PowerShell准确定位注册表文件,
X86脚本:
设置位置HKLM:\software\Microsoft\Windows\currentversion\uninstall
X64脚本:
设置位置HKLM:\software\wow6432node\Microsoft\Windows\currentversion\uninstall
2.检查安装后在注册表文件Uninstall中的程序名称,如:Chrome,Uninstall中的Childitem名称为:GoogleChrome,其中Uninstallstring有卸载运行文档的实际方式,这个文件夹的名称和主要参数:
"C:\ProgramFiles(x86)\Google\Chrome\Application\74.0.3729.131\Installer\setup.exe"-uninstall-system-level-verbose-log
这是我们想要运行的卸载指令。有些手机软件只有实现文档,没有主要参数。比如Teamviewer只有一个Uninstall.exe,我们可以用Uninstall.exe/S静默卸载!
3.详细的PS脚本如下:
设置位置
HKLM:\software\wow6432node\Microsoft\Windows\currentversion\uninstall
#特定注册表文件的位置
$UninstallTeamviewer=get-childitem-path*Teamviewer*|get-itemproperty|%{$_。卸载字符串}
#搜索卸载指令,并将值赋给参数:$UninstallTeamviewer
启动$UninstallTeamviewer/S
#在#Powershell:$UninstallTeamviewer中运行卸载指令
对于注册表文件中已有的卸载程序和主参数,不需要添加上面的主参数个数:"/S"
4.创建脚本:在软件库\概述\脚本中单击鼠标右键并创建脚本:
5.将PowerShell脚本粘贴到脚本中。接下来,继续!
团队查看器
$OS=(Get-wmioobjectWin32_operatingsystem)。建筑
#检查计算机 *** 作系统的版本号
if((gwmiwin32_operatingsystem|selectOSarchitecture)。osaarchitecture-eq"32位"){
#32位运行以下过程
设置位置HKLM:\software\Microsoft\Windows\currentversion\uninstall
#指定以下注册表文件位置
$UninstallTeamviewer=get-childitem-path*Teamviewer*|get-itemproperty|%{$_。卸载字符串}
#搜索卸载指令,并将值赋给参数:$UninstallTeamviewer
启动$UninstallTeamviewer/S
#在#Powershell:$UninstallTeamviewer中运行卸载指令
$UninstallTeamviewer
#输出自变量的结果,方便查看分析。
}
否则{
#64位运行以下过程
设置位置HKLM:\software\wow6432node\Microsoft\Windows\currentversion\uninstall
#指定以下注册表文件位置
$UninstallTeamviewer=get-childitem-path*Teamviewer*|get-itemproperty|%{$_。卸载字符串}
#搜索卸载指令,并将值赋给参数:$UninstallTeamviewer
启动$UninstallTeamviewer/S
#在#Powershell:$UninstallTeamviewer中运行卸载指令
$UninstallTeamViewer
#输出自变量的结果,方便查看分析。
}
6.批准脚本:在新创建的脚本上单击鼠标右键并批准它。
在工作环境中,为了更好的安全性,客户创建的脚本必须经过第二个人的批准(即自己创建的脚本不能被批准)。如果您想批准自己创建的脚本,请转到:管理\站点配置\站点\层次结构设置,
取消“脚本作者需要额外的脚本审批者”前面的勾号。
7.运行脚本:在必须运行或设置整圈的电脑上,选择:运行脚本\下一步,也就是刚开始运行。
8.还可以查询监控中已经运行过的脚本的汇总结果,在“脚本情况”目录中查询手机客户端机器设备上已经运行过的每个脚本的结果。脚本退出代码“0”通常表示脚本已经成功运行。
9.以后也可以在手机软件报告里查!
10.如果某个手机软件安装了MIS包,卸载值会是“msiexec.exe/I{23170f69-40C1-2701-1602-00000100000}”,那么需要更改另一个PowerShell方法,例如:
if((gwmiwin32_operatingsystem|selectOSarchitecture)。osaarchitecture-eq"32位"){
#32位7zipX321602{23170f69-40C1-2701-1602-000001000000}
$script={invoke-expression"msiexec/qn/x“{23170f69-40C1-2701-1602-000001000000}”}
调用命令脚本块$脚本
$script
}否则{
#64位7zipX641602{23170f69-40C1-2702-1602-000001000000}
$script={invoke-expression"msiexec/qn/x“{23170f69-40C1-2702-1602-000001000000}”}
调用命令脚本块$脚本
$script
}
当然,如果没有SCCM的自然环境,你也可以尝试在广告中启用上述脚本!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)