最近碰到一個需求:針對所有電腦卸載某個小軟件,但這個軟件并不是SCCM部署,有的是用戶自己安裝的,有的是系統部署時就已經封裝好的,版本繁多,安裝路徑也不一樣!
成都創新互聯專注于濱城網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供濱城營銷型網站建設,濱城網站制作、濱城網頁設計、濱城網站官網定制、重慶小程序開發服務,打造濱城網絡公司原創品牌,更為您提供濱城網站排名全網營銷落地服務。首先想到的當然是用Powershell來做,先后測試了用Get-apppacke\get-appxpacke, Get-WmiObject -Class win32_product等幾種方法都不行,最后用找注冊表中的UninstallString的方式解決!
方法如下:
1、 先用PowerShell定位到注冊表位置,
X86 Script:
Set-Location HKLM:\software\microsoft\Windows\Currentversion\uninstall
X64 Script:
Set-Location HKLM:\software\WOW6432Node\microsoft\Windows\Currentversion\uninstall
2、 查詢到軟件安裝后在注冊表Uninstall中的名稱,如:Chrome,在Uninstall中的Childitem名為:Google Chrome,其中Uninstallstring有卸載的運行文件具體路徑、此文件名及參數:
"C:\Program Files (x86)\Google\Chrome\Application\74.0.3729.131\Installer\setup.exe" --uninstall --system-level --verbose-logging
這就是我們要運行的卸載命令,有些軟件只有執行文件,并不帶參數,如Teamviewer 只有一個Uninstall.exe,我們可以使用Uninstall.exe /S進行靜默卸載!
3、 完整的PS腳本如下:
Set-Location
HKLM:\software\WOW6432Node\microsoft\Windows\Currentversion\uninstall
#指定注冊表的位置
$UninstallTeamviewer =? get-childitem -path *Teamviewer* | get-itemproperty | %{$_.Uninstallstring}
#查找卸載命令并賦值給變量:$UninstallTeamviewer
start $UninstallTeamviewer /S
#Powershell中運行卸載命令:$UninstallTeamviewer
針對注冊表中已有卸載程序和參數的,上面不用再加參數數:“/S”
4、 創建腳本:在SoftWare Library\Overview\Scripts中右鍵、Create Script:
5、 將PowerShell腳本貼到腳本,下一步,完成!
TeamViewer
$OS = (Get-WmiObject Win32_OperatingSystem).OSArchitecture
????#檢查操作系統版本
if ((gwmi win32_operatingsystem | select osarchitecture).osarchitecture -eq "32-bit"){
????#32 Bit 運行以下步驟
Set-Location HKLM:\software\microsoft\Windows\Currentversion\uninstall
????#指定以下注冊表位置
$UninstallTeamviewer = get-childitem -path *Teamviewer* | get-itemproperty | %{$_.Uninstallstring}
????#查找卸載命令并賦值給變量:$UninstallTeamviewer
start $UninstallTeamviewer /S
????#Powershell中運行卸載命令:$UninstallTeamviewer
$UninstallTeamviewer
????#輸出變量結果,方便查詢分析
}
else{
#64 Bit 運行以下步驟
Set-Location HKLM:\software\WOW6432Node\microsoft\Windows\Currentversion\uninstall
????#指定以下注冊表位置
$UninstallTeamviewer = get-childitem -path *Teamviewer* | get-itemproperty | %{$_.Uninstallstring}
????#查找卸載命令并賦值給變量:$UninstallTeamviewer
start $UninstallTeamviewer /S
????#Powershell中運行卸載命令:$UninstallTeamviewer
$UninstallTeamViewer
????#輸出變量結果,方便查詢分析
}
6、 核準腳本:在剛創建的腳本上點右鍵、批準
在生產環境中,為了安全,用戶創建的腳本需要第二人來批準(即自己不能批準自己創建的腳本),如果想自己批準自己的創建的腳本,請在進到:Administration\Site Configuration\Sites\Hierarchy Settings,
將“Script authors require additional script approver前面的勾取消。
7、 運行腳本:在需要運行的電腦或集全中點右鍵,選擇:Run Script\Next,即開始運行。
8、 在Monitoring中也可以查看已運行的腳本匯總結果 ,在“腳本狀態”列表中,可以查看在客戶端設備上運行的每個腳本的結果。 腳本退出代碼為“0”通常表示腳本已成功運行。
9、 也可以晚點再去軟件報告里進行查詢!
10、 如果針對某個軟件是使用MIS封裝包安裝的,Uninstall值會是“MsiExec.exe /I {23170F69-40C1-2701-1602-000001000000}“,就要改另一種PowerShell方式,例:
if ((gwmi win32_operatingsystem | select osarchitecture).osarchitecture -eq "32-bit"){
#32 Bit 7zip X32 1602 {23170F69-40C1-2701-1602-000001000000}
$script = { invoke-expression "msiexec /qn /x '{23170F69-40C1-2701-1602-000001000000}' "}
Invoke-Command -ScriptBlock $script
$script
}else{
#64 Bit 7zip X64 1602 {23170F69-40C1-2702-1602-000001000000}
$script = { invoke-expression "msiexec /qn /x '{23170F69-40C1-2702-1602-000001000000}' "}
Invoke-Command -ScriptBlock $script
$script
}
當然,如果沒有SCCM環境,也可以嘗試用在AD中調用上面的腳本!
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞標題:從SCCM中創建并運行Powershell腳本卸載軟件-創新互聯
本文地址:http://vcdvsql.cn/article14/dsdcde.html
成都網站建設公司_創新互聯,為您提供網站導航、商城網站、用戶體驗、Google、網站營銷、移動網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯