上一篇已經教大家如何使用 OCS Inventory 遠端部署 MSI 應用程式,今天我們來介紹如何使用 OCS Inventory 遠端移除應用程式。
建立套件
先到 Deployment 點選 Build
作業系統選擇 Windows
選擇 Uninstall 應用程式
填入想要移除的應用程式資訊
使用系統管理員打開命令提示字元,透過下列指令找出應用程式的識別。
wmic product get name
Name
Adobe Acrobat (64-bit)
Microsoft .NET AppHost Pack - 5.0.17 (x64_x86)
Microsoft Azure Libraries for .NET – v2.9
Microsoft Windows Desktop Targeting Pack - 5.0.0 (x64)
SQL Server Management Studio
Microsoft Visual C++ 2013 x64 Minimum Runtime - 12.0.21005
FortiClient VPN
Microsoft ASP.NET Core 3.1.10 Targeting Pack (x64)
Visual Studio 2017 Isolated Shell for SSMS LangPack - 繁體中文
IntelliTraceProfilerProxy
TypeScript SDK
Microsoft .NET Framework 4.6 Targeting Pack
...(略)...
點選 Validate,顯示套件建立成功。
查看套件存放路徑
ll /var/lib/ocsinventory-reports/download/1680234092
total 12
drwxr-xr-x 2 www-data www-data 4096 Mar 31 11:41 ./
drwxrwxr-x 4 www-data www-data 4096 Mar 31 11:41 ../
-rw-r--r-- 1 www-data www-data 394 Mar 31 11:41 info
檢視一下套件 INFO 的內容
cat /var/lib/ocsinventory-reports/download/1680234092/info
<?xml version="1.0" encoding="UTF-8"?>
<DOWNLOAD ID="1680234092" PRI="5" ACT="EXECUTE" DIGEST="" PROTO="HTTPS" FRAGS="0" DIGEST_ALGO="MD5" DIGEST_ENCODE="Hexa" COMMAND="wmic product where (name='Adobe Acrobat (64-bit)') call uninstall" NOTIFY_USER="0" NOTIFY_TEXT="" NOTIFY_COUNTDOWN="" NOTIFY_CAN_ABORT="0" NOTIFY_CAN_DELAY="0" NEED_DONE_ACTION="0" NEED_DONE_ACTION_TEXT="" GARDEFOU="rien" />
代理程式將透過套件的 INFO 來獲取所需的資訊
檢視啟用套件
先到 Deployment 點選 Activate
在 Available Packages 點選剛剛建立的套件
代理程式是透過指令移除,所以不需要部署時間。
遠端部署套件
到計算機的 Deployment,點選 Add Package。
遠端部署進階選項選擇 NO,點選 Validate。
勾選套件名稱,點選 Add Selected Packages。
遠端部署套件已成功指派
到計算機的 Deployment,該部署狀態處於 WAITING NOTIFICATION。
若不想等待下次 PROLOG 的時間,可以直接手動重啟服務。
此時部署狀態已經變更為 NOTIFIED
EXIT_CODE_44029 發生什麼事?
你的劍在我的咽喉上割下去吧,不用再猶豫了。
錯誤分析
從代理程式的下載日誌只能知道執行失敗了
預設路徑為 C:\ProgramData\OCS Inventory NG\Agent\Download.log
==============================================================================
Starting OCS Inventory Package Download and Setup Tool on Friday, March 31, 2023 12:11:31.
DOWNLOAD => Running OCS Inventory Download Version 2.9.1.0
DOWNLOAD => Using OCS Inventory FrameWork Version 2.9.1.0
DOWNLOAD => Using network connection with Communication Server
DOWNLOAD => Using Communication Provider <OCS Inventory cURL Communication Provider> Version <2.9.1.0>
DOWNLOAD => Starting new period of 10 cycles
DOWNLOAD => Parsing directory <C:\ProgramData\OCS Inventory NG\Agent\download> for packages
DOWNLOAD => Package <1680234092> verified and added to process queue
DOWNLOAD => Executing action <EXECUTE> for package <1680234092>
ERROR *** DOWNLOAD => Will not register package <1680234092> in history: result <EXIT_CODE_44029> not a success
DOWNLOAD => Sending result code <EXIT_CODE_44029> for package <1680234092>
DOWNLOAD => Starting new period of 10 cycles
DOWNLOAD => Parsing directory <C:\ProgramData\OCS Inventory NG\Agent\download> for packages
DOWNLOAD => No package found, exiting
DOWNLOAD => Unloading communication provider
DOWNLOAD => Execution duration: 00:10:12.
從套件的 INFO 可以得知執行指令為
wmic product where (name='Adobe Acrobat (64-bit)') call uninstall
在命令提示字元該指令無法執行
問題似乎因為括號造成的,改成以下指令試看看。
wmic product where name='Adobe Acrobat (64-bit)' call uninstall
終於可以正常移除軟體。
錯誤排除
編輯應用程式產生 Package Info 的 xml 範本
sudo vi /usr/share/ocsinventory-reports/ocsreports/config/teledeploy/options/uninstallopt.xml
找到 Package Definition 區段
<!-- Package definition -->
<packagedefinition>
<!--
Package definition will create the info file containing the instructions needed for deployment
variables from formoptions can be used with :formblockid
-->
<!-- Priority -->
<PRI>5</PRI>
<!-- Action (EXECUTE / LAUNCH / STORE) -->
<ACT>EXECUTE</ACT>
<!-- PROCOTOL used either HTTP or HTTPS-->
<PROTO>:PROTO:</PROTO>
<!-- File command -->
<COMMAND>wmic product where (name=':application_identifier:') call uninstall</COMMAND>
<!-- Notify user -->
<NOTIFY_USER>:NOTIFY_USER:</NOTIFY_USER>
<!-- Notify text -->
<NOTIFY_TEXT>:NOTIFY_TEXT:</NOTIFY_TEXT>
<!-- Notify popup countdown -->
<NOTIFY_COUNTDOWN>:NOTIFY_COUNTDOWN:</NOTIFY_COUNTDOWN>
<!-- Can user abort -->
<NOTIFY_CAN_ABORT>0</NOTIFY_CAN_ABORT>
<!-- Can user delay -->
<NOTIFY_CAN_DELAY>0</NOTIFY_CAN_DELAY>
<!-- Need finish action on deployment -->
<NEED_DONE_ACTION>0</NEED_DONE_ACTION>
<!-- End deployment popup -->
<NEED_DONE_ACTION_TEXT/>
</packagedefinition>
更改 File Command 如下
<COMMAND>wmic product where name=':application_identifier:' call uninstall</COMMAND>
接下來到 Available Packages 移除失敗的套件
記得再到 Deleted Packages 點選刪除,才算真正的刪除乾淨。
到 Deployment 點選 Build,重新建置 Uninstall 應用程式。
點選 Validate,顯示套件建立成功。
重新佈署
到計算機的 Deployment,再新重新佈署一次吧。
這次終於成功了,完成時間為下午 3 點 08 分 。
事件檢視器的確有這筆移除紀錄,時間也是吻合的。
應用程式與功能也的確找不到 Adobe Acrobat
就這樣我們把故障的功能給修好了,下一篇來教大家如何在 OCS Inventory 遠端更新代理程式,敬請期待。
參考文件
https://wiki.ocsinventory-ng.org/05.Deployment/Windows/Summary/