痾 有多少user 電腦名稱這兩個 你去你的AD裡面就可以看到了
至於安裝哪些軟體,可以看看這個,用指令把電腦軟體清單列入,在存入共用區,這樣應該就可以收集大家的軟體清單了@@"
有點聽不太懂意思,AD內的computer內不是有寫有多少台主機嗎?如果是要確認這些主機有沒有存活,可以去看DNS解析紀錄裡面的時間確認。
程式自己跑出來的要嘛就是要在client上裝agent,不然就是要用派送批次檔的方式給client執行,但....跑出來的資料還是要自己看阿@@"
恩..簡單來說 因為我要知道的不只有確認有哪些主機存活 還有像是安裝哪些軟體 軟體序號.. 主管基本上想知道所有東西= =..
所以我希望可以自己寫一隻程式可以查詢到網域到所有電腦的情況。
基本上Client電腦開了防火牆,Ping、WMI查詢都沒用。只能裝Agent軟體... 不然就Client登入時跑Logon Script,或排程跑(對付不關機不登出的),自掃自回...
這個不難,我以前用來收集過公司電腦名稱和 IP
1.獲取AD所有的帳戶可以寫python來取得。有時間我會把code丟上來。
2.要獲取軟體資訊的話用python寫不好寫(要操作WMI)。建議用GPO派powershell去取得,丟到一個網芳資料夾。
3.建議還是找一套資產管理系統來比較好。第2個方法只是應急的。
import ldap
import os
def get_uas_list():
ldap_username = "「AD帳戶」"
password = "「AD密碼」"
conn = ldap.initialize('ldap://「AD位址」')
conn.protocol_version = 3
conn.set_option(ldap.OPT_REFERRALS, 0)
conn.simple_bind_s(ldap_username, password)
basedn = "「網域的DN(ex:DC=abc,DC=com,DC=tw)」"
result = []
temp = conn.search_s(
basedn,
ldap.SCOPE_SUBTREE,
"(sAMAccountName=UAS*)") # AD查詢條件,這裡是查所有UAS開頭的帳號
# 整理AD傳回的資訊
for i in temp:
if i[0]:
yield (
i[0].split(",", 1)[0].replace('CN=', ''),
i[0].split(",", 1)[1].replace('OU=', '').split(",", 1)[0],
i[1]['sAMAccountName'][0].decode('utf-8') + "\n"
)
# 寫入檔案
with open("uas_list.txt", "w", encoding="UTF-8") as f:
f.writelines([",".join(i) for i in get_uas_list()])
os.system("pause")
要先裝pyldap。
另外AD有傳回限制,傳回的結果太多的話會有問題。
有AD的話,可以用GPO派powershell的執行檔去USER端執行程式爬資料,
再傳去AD的共用資料區放整理,
查網域內的帳戶與電腦,Powershell需要 Active Directory module,
通常伺服器自己的Powershell會有這個模組,一般PC的沒有要自己安裝
安裝的軟體建議爬機碼去找,WMI的只有通過Windows install的才會有紀錄的樣子,
會有短缺,也有可能是Powershell利用WMI撈到的軟體資料沒有很齊全
傳回的資料再弄到EXCEL去表格化比較方便看,大概像下圖這樣
簡單來說 這是3段工作
第1段 在AD上用Powershell爬網域內的電腦有幾台,並且篩選出還啟用中的
第2段 對網域內的電腦用GPO派送Powershell執行檔,執行完的資料丟回AD內
第3段 用EXCEL把AD收集到的資料匯入後查看
我這裏有一個很好用。
Advanced IP Scanner
https://www.advanced-ip-scanner.com/news/