iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
IT管理

OCS Inventory:開源資產管理解決方案系列 第 18

如何使用 OCS Inventory 代理程式遠端移除應用程式

  • 分享至 

  • xImage
  •  

上一篇已經教大家如何使用 OCS Inventory 遠端部署 MSI 應用程式,今天我們來介紹如何使用 OCS Inventory 遠端移除應用程式。

建立套件
先到 Deployment 點選 Build

作業系統選擇 Windows

選擇 Uninstall 應用程式

填入想要移除的應用程式資訊

  • Package Name : 填入 Package Name (不可重複)
  • Description : 填入 Description
  • Application Identifier : 例如 Adobe Acrobat (64-bit)

使用系統管理員打開命令提示字元,透過下列指令找出應用程式的識別。

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 來獲取所需的資訊

  • DOWNLOAD ID="1680234092"
  • PRI="5"
  • ACT="EXECUTE”
  • PROTO="HTTPS”
  • FRAGS="0"
  • COMMAND="wmic product where (name='Adobe Acrobat (64-bit)') call uninstall"

檢視啟用套件
先到 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/


上一篇
如何使用 OCS Inventory 代理程式遠端部署 MSI 應用程式
下一篇
如何在 OCS Inventory 遠端更新代理程式
系列文
OCS Inventory:開源資產管理解決方案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言