SCCM2016定製軟件資產報表

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

你們玩過SCCM的都知道,SCCM報表默認能統計上來的資產無非就是硬件信息,軟件安裝信息,許可信息。
shell

統計軟件的時候能夠按照軟件的維度,統計某集合下全部的已安裝軟件,經過報表鑽取一級一級的找到安裝了軟件的計算機,計算機的硬件配置,IP,登陸用戶。

可是在我國企業信息項目永遠都須要的就是定製,老闆們須要簡單一目瞭然

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

獲得這個需求後,若是你仔細看過每一張報表你會發現,看起來很簡單的需求,但沒有一張報表能夠直接顯示出來這些信息。並且怎樣定義出來非標準軟件也是個問題,若是你只是處處簡簡單單的瞭解一下,你是找不到怎麼去定義這個東西的。

本篇文章老王就以這個需求爲例,爲廣大itpro介紹一下如何去定義非辦公軟件,簡單的找到咱們須要的數據,以及如何在不開發的狀況下的輸出成報表。


在正式開始以前,咱們須要補充一些基礎知識

什麼是WMI,WMI是微軟提供的一個封裝了Windows上面全部硬件軟件信息資源的規範API接口,咱們能夠經過wmic命令,VBScript,powershell,C#,WQL語言去對WMI封裝的資源進行查詢,管理操做。
舉個例子咱們能夠經過powershell調用wmi類,查詢系統windows office的到期時間。windows

WQL是WMI特有的查詢語言服務器

能夠經過wbemtest工具查找類,對WQL語言進行測試。ide

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,而是經過smsprod將wql轉爲sql語言最終去執行,事實上不只僅是這個地方,不少個位置都是咱們在SCCM控制檯執行的操做後臺都會經過smsprod這個組件實際幫咱們轉換成SQL執行。ui


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定製軟件資產報表

至此咱們經過第一種方法實現了需求,思路流程以下

1.經過自帶查詢功能曲線定義非辦公軟件
2.將查詢得到的WQL語句轉換爲SQL語句
3.使用轉換後的SQL語句建立Report報表

在經過查詢定義條件時候,也能夠在條件處,條件類型選擇簡單值,運算符選擇相似於,能夠經過模糊匹配出一類軟件,如 全部名稱%匹配遊戲的軟件,全部名稱%匹配下載軟件的,能夠添加多個條件,多個條件之間會是or的關係,而後把WQL轉換爲SQL拿去使用。

select SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, SMS_R_System.LastLogonUserName from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%遊戲%" or SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%下載%"

 但願能夠經過個人這篇文章爲你們拋磚引玉,把SCCM的報表功能更好的在企業運用起來,下篇我講爲你們介紹,如何經過爲軟件定義標識的方式區分出不一樣類別軟件。

相關文章
相關標籤/搜索