天天看點

SCCM2016定制軟體資産報表

SCCM是微軟的企業級桌面管理産品,說是桌管,但其實在老王看來SCCM最能拿得出手的實際上是它的資産智能報表和符合性基線功能。

大家玩過SCCM的都知道,SCCM報表預設能統計上來的資産無非就是硬體資訊,軟體安裝資訊,許可資訊。

統計軟體的時候可以按照軟體的次元,統計某集合下所有的已安裝軟體,通過報表鑽取一級一級的找到安裝了軟體的計算機,計算機的硬體配置,IP,登入使用者。

但是在我國企業資訊項目永遠都需要的就是定制,老闆們需要簡單一目了然

舉個例子,有個需求,需要定義出一類非辦公軟體,在一張報表裡面統計出有哪些計算機,安裝了非辦公軟體,以及這些計算機的使用人。

得到這個需求後,如果你仔細看過每一張報表你會發現,看起來很簡單的需求,但沒有一張報表可以直接顯示出來這些資訊。而且怎樣定義出來非标準軟體也是個問題,如果你隻是到處簡簡單單的了解一下,你是找不到怎麼去定義這個東西的。

本篇文章老王就以這個需求為例,為廣大itpro介紹一下如何去定義非辦公軟體,簡單的找到我們需要的資料,以及如何在不開發的情況下的輸出成報表。

在正式開始之前,我們需要補充一些基礎知識

什麼是WMI,WMI是微軟提供的一個封裝了Windows上面所有硬體軟體資訊資源的規範API接口,我們可以通過wmic指令,VBScript,powershell,C#,WQL語言去對WMI封裝的資源進行查詢,管理操作。

舉個例子我們可以通過powershell調用WMI類SoftwareLicensingProduct,查詢系統windows office的到期時間。

WQL是WMI特有的查詢語言

可以通過wbemtest工具查找類,對WQL語言進行測試。

WQL類似于SQL語言,但文法仍存在不同之處,不可直接拿到SQLServer裡面執行。

WMI和SCCM的關系

SCCM用戶端代理通過WMI收集用戶端資訊,彙報給SCCM伺服器

SMS Provider :在ConfigMgr 控制台和站點資料庫伺服器之間提供接口的WMI提供程式,預設安裝完成主站點之後自動包括的一個元件,由于SCCM使用WMI(WQL語言),而SQL資料庫運作的是SQL執行個體,可以簡單了解為是通過SMS Provider将WQL翻譯為SQL,最終實作SCCM和SQL之間的互動。

大家在SCCM控制台執行操作的時候,比較明顯的兩個地方,基于查詢規則建立集合,監視裡面建立查詢的時候,我們通過圖形界面點選的時候,在圖形界面看到的語言顯示的會是WQL,很多人以為是SQL語言,實際上我們控制台上面寫的查詢并不是實際的SQL,而是通過smsprov将wql轉為sql語言最終去執行,事實上不僅僅是這個地方,很多個位置都是我們在SCCM控制台執行的操作背景都會通過smsprov這個元件實際幫我們轉換成SQL執行。

OK,基礎知識鋪墊到位,下面開始完成我們的需求,要實作這個需求有兩種方案,今天我們先說曲線救國的一種

這個需求首先我們需要定義出一類軟體,這一些軟體為非辦公軟體,先把這部分資料拿到。

打開SCCM控制台-監視-查詢,查詢是個好玩具,我們可以通過簡單的向導,生成一個WQL查詢,我們甚至不需要關注WQL語言怎麼寫,隻需要知道我們想要的資料應該在哪找到就可以。

一,建立查詢,定義需要包含在查詢内的範圍,本次我們選擇裝置集合

SCCM2016定制軟體資産報表

二,點選編輯查詢語句,彈出查詢向導,定義查詢結果中,需要顯示的列,這裡有很多屬性類大家可以多去看看找出自己需要的。

SCCM2016定制軟體資産報表

最終顯示結果應該包括

已安裝的應用資訊類下面的顯示名稱屬性

已安裝的應用資訊類下面的版本屬性

系統資源類下面的名稱屬性(計算機名)

系統資源下面的上一個登入使用者名屬性

SCCM2016定制軟體資産報表

三,定義非辦公軟體,過濾隻顯示非辦公軟體的資料

聽到這個需求的時候,我腦袋裡第一時間想到的是通過軟體标簽來玩,定義一批軟體标簽,然後給一次性的給收集上來的軟體按照标簽打上,最終在按照标簽統計報表。

但其實通過查詢我們也可以實作完成這種需求,打開剛才的編輯查詢語句,調出查詢向導,編輯條件,這裡有兩種玩法,第一種條件是直接添加的方式,添加條件,條件類型為值清單,位置為已安裝的應用程式,顯示名稱,基于顯示名稱作為判斷條件,運算符選擇屬于,點選左下方的值,可以列出所有通過SCCM收集上來的用戶端上面已經安裝的軟體,我們可以一個一個點選然後添加到右面。定義出一批非辦公軟體清單,然後點選确定儲存。

SCCM2016定制軟體資産報表

點選查詢設計界面的顯示查詢語句,可以看到通過我們在向導編輯後,自動生成的WQL語言,可以拷貝出來,以後直接導入複用。

SCCM2016定制軟體資産報表
SCCM2016定制軟體資産報表

四,執行查詢結果,可以看到輸出在界面上的資料

SCCM2016定制軟體資産報表

五,查詢結果轉換

到現在為止,我們所需要的資料已經拿到了,看到這裡大家應該可以發現,查詢的好處就是簡單,友善,通過一個向導就可以直接幫我們生成想要的查詢結果。這可能也就是一直保留WQL的一個原因,友善我們這些不能直接寫SQL的itpro在圖形界面執行查詢,但是不完美的地方就是定義好的查詢,隻能在SCCM控制台點選運作這樣檢視,不能生成報表,是以看起來還是不太友善。

查詢的語言還不能直接用來做出報表,原因就是SCCM報表使用的是SQL語言做的,而查詢界面的查詢結果是WQL語言

但是我們可以通過方法将WQL轉成能用來做報表的SQL語言

SCCM有一個log叫smsprov.log,位于安裝路徑Program Files\Microsoft Configuration Manager\Logs裡面,smsprov.log記錄了我們在SCCM控制台執行的所有操作,以及背後的實際運作,例如我們推送軟體的過程,界面上面執行WQL查詢背景轉換SQL的過程。

我們點選運作一次建立好的查詢結果,然後通過cmtrace打開smsprov.log,可以看到背景實際上WQL轉成SQL後的語句,語句可以直接拷貝交給開發,或者放到Report Builder制作報表。

SCCM2016定制軟體資産報表

六,制作報表

在SCCM控制台監視報表中建立一個報表,會自動呼叫出Report Builder視窗

SCCM2016定制軟體資産報表

添加資料源,使用共享連接配接或報表模型,浏覽Reportserver目錄下,找到SCCM報表目錄中的資料源檔案

SCCM2016定制軟體資産報表

添加憑據後測試連接配接,確定成功建立連接配接,點選确定。

SCCM2016定制軟體資産報表

添加資料集,選擇使用嵌入的資料集,浏覽已經添加的資料源,在查詢視窗把從smsprov日志複制的轉換後的sql語句粘貼進來

SCCM2016定制軟體資産報表

添加之後,點選重新整理字段,如果沒有報錯,會在字段界面顯示我們在查詢中定義的四個列,如果這一步報錯不能正常重新整理字段,說明語句中可能包含錯誤。

SCCM2016定制軟體資産報表

可以改成更加直覺的顯示名

SCCM2016定制軟體資産報表

傳回Report Builder首頁,點選添加表,選擇我們定好的資料集

SCCM2016定制軟體資産報表

将可用字段拖拽到值區域

SCCM2016定制軟體資産報表

點選下一步,選擇報表顔色樣式

SCCM2016定制軟體資産報表

點選完成,可以看見我們定制好的報表,可以通過插入圖檔,文字,進行編輯格式,編輯完成後,點選上方儲存即可自動釋出回SCCM

SCCM2016定制軟體資産報表

打開SCCM Report網頁,可以看見我們剛才釋出的報表,資料是實時更新的,可以計劃生成,也可以轉成其他格式輸出。

SCCM2016定制軟體資産報表