一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - VBS - 如何用VBS腳本收集遠程計算機或本地計算機安裝的軟件

如何用VBS腳本收集遠程計算機或本地計算機安裝的軟件

2021-11-13 10:55wwchtsy VBS

這篇文章主要介紹了如何用VBS腳本收集遠程計算機或本地計算機安裝的軟件,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

目標

用VBS腳本收集域中遠程計算機或本地計算機安裝的軟件,Windows版本。并將收集的結果保存到計算機名為文件名的文本文件中。文本文件可以保存到網絡路徑中或當前VBS文件所在目錄。同時支持32位和64位系統。
并過濾到一些補丁包、Office組件、NVIDIA、Intel®的驅動等。

制作VBS腳本

保存下面的VBS程序代碼到vbs文件中

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
On Error Resume Next 
 
Const HKCU   = &h80000001
Const HKLM   = &H80000002
Const strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall\"
Const str64KeyPath = "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
 
'FilePath  = "\\Server-File\PCSoftList\"
FilePath  = CreateObject("Scripting.FileSystemObject").GetFolder(".").Path & "\"
Set Wshell   = CreateObject("Wscript.Shell")
Set objFSO   = CreateObject("Scripting.FileSystemobject")
 
'Set collected computers Name
set argus=wscript.arguments
if argus.count=0 then
 strComputerName = Wshell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Hostname")
else
 strComputerName = argus(0)
end if
 
Set textWriteFile = objFSO.OpenTextFile(FilePath & ucase(strComputerName) &".txt",ForWriting,True,True)
 
Set objReg = GetObject("winmgmts://" & strComputerName & "/root/default:StdRegProv")
 
'Get OS Version
intRet = objReg.GetStringValue(HKLM, "SOFTWARE\Microsoft\Windows NT\CurrentVersion","ProductName",strOSVersion)
If intRet = 0 Then
 intRet = objReg.GetStringValue(HKLM, "SOFTWARE\Microsoft\Windows NT\CurrentVersion","CSDVersion",strOSServicePack)
 intRet = objReg.GetStringValue(HKLM, "SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion","ProductName",str64BitOSVersion)
 if intRet = 0 then
  strOSVersion = strOSVersion & " 64bit"
 end if
 intRet = objReg.GetStringValue(HKLM, "SYSTEM\CurrentControlSet\Control\Nls\Language","InstallLanguage",OSLanguageCode)
 if intRet = 0 then
  select case OSLanguageCode
  case "0804" '中文
   strOSVersion = strOSVersion & " Chinese Version"
  case "0411" '日文
   strOSVersion = strOSVersion & " Japanese Version"
  case "0409" '英文
   strOSVersion = strOSVersion & " English Version"
  case else '未知語言
   strOSVersion = strOSVersion & " UnknownLanguage Version"
  end select
 end if
Else
 strOSVersion = "OS Get Failed"
 strOSServicePack = "NoFind"
End If
if InStr(LCase(strOSVersion),"windows")>0 then
 textWriteFile.WriteLine("""" & ucase(strComputerName) & """" & vbTab & """" & strOSVersion & """" & vbTab & """" & strOSServicePack & """")
end if
 
'Display User Software.
objReg.EnumKey HKCU, strKeyPath,arrSubKeys
For Each strSubKey In arrSubKeys
 intGet = objReg.GetDWORDValue(HKCU, strKeyPath & strSubKey,"SystemComponent",intSystemComponent)
 If IsNull(intSystemComponent) then
  intSystemComponent = 0
 End If
 intRet = objReg.GetStringValue(HKCU, strKeyPath & strSubKey,"ParentDisplayName",strName)
 If intSystemComponent = 0 and intRet > 0 then
  intRet = objReg.GetStringValue(HKCU, strKeyPath & strSubKey,"DisplayName",strName)
  If strName <> "" And intRet = 0 And ignorePgm(strName) Then
   strName = replace(replace(strName,vbCrLf,""),vbTab,"")
   intRet = objReg.GetStringValue(HKCU, strKeyPath & strSubKey,"DisplayVersion",strVersion)
   textWriteFile.WriteLine("""" & ucase(strComputerName) & """" & vbTab & """" & strName & """" & vbTab & """" & strVersion & """")
  End If
 End If
Next
 
'Display Machine 32bit Software.
objReg.EnumKey HKLM, strKeyPath,arrSubKeys
For Each strSubKey In arrSubKeys
 intGet = objReg.GetDWORDValue(HKLM, strKeyPath & strSubKey,"SystemComponent",intSystemComponent)
 If IsNull(intSystemComponent) then
  intSystemComponent = 0
 End If
 intRet = objReg.GetStringValue(HKLM, strKeyPath & strSubKey,"ParentDisplayName",strName)
 If intSystemComponent = 0 and intRet > 0 then
  intRet = objReg.GetStringValue(HKLM, strKeyPath & strSubKey,"DisplayName",strName)
  If strName <> "" And intRet = 0 And ignorePgm(strName) Then '
   strName = replace(replace(strName,vbCrLf,""),vbTab,"")
   intRet = objReg.GetStringValue(HKLM, strKeyPath & strSubKey,"DisplayVersion",strVersion)
   textWriteFile.WriteLine("""" & ucase(strComputerName) & """" & vbTab & """" & strName & """" & vbTab & """" & strVersion & """")
  End If
 End If
Next
 
'Display Machine 64bit Software.
objReg.EnumKey HKLM, str64KeyPath,arrSubKeys
For Each strSubKey In arrSubKeys
 intGet = objReg.GetDWORDValue(HKLM, str64KeyPath & strSubKey,"SystemComponent",intSystemComponent)
 If IsNull(intSystemComponent) then
  intSystemComponent = 0
 End If
 intRet = objReg.GetStringValue(HKLM, str64KeyPath & strSubKey,"ParentDisplayName",strName)
 If intSystemComponent = 0 and intRet > 0 then
  intRet = objReg.GetStringValue(HKLM, str64KeyPath & strSubKey,"DisplayName",strName)
  If strName <> "" And intRet = 0 And ignorePgm(strName) Then
   strName = replace(replace(strName,vbCrLf,""),vbTab,"")
   intRet = objReg.GetStringValue(HKLM, str64KeyPath & strSubKey,"DisplayVersion",strVersion)
   textWriteFile.WriteLine("""" & ucase(strComputerName) & """" & vbTab & """" & strName & """" & vbTab & """" & strVersion & """")
  End If
 End If
Next
 
textWriteFile.Close
 
function ignorePgm(strPgm)
 If inStr(1,strPgm,"Microsoft Office ",1)<=0 then
  '不輸出Security Update、.NET Framework、Microsoft Visual C++、NVIDIA、Intel(R)的程序
  ignorePgm = inStr(1,strPgm,"Security Update",1)<=0 _
   And inStr(1,strPgm,".NET Framework",1)<=0 _
   And inStr(1,strPgm,"Microsoft Visual C++",1)<=0 _
   And inStr(1,strPgm,"NVIDIA",1)<=0 _
   And inStr(1,strPgm,"Intel(R)",1)<=0
 Else
  '讓個版本的Office能正常輸出
  ignorePgm = inStr(1,strPgm,"Microsoft Office ",1)>0 _
     And (inStr(1,strPgm," 2000 ",1)>0 _
      Or inStr(1,strPgm," 2003 ",1)>0 _
      Or (inStr(1,strPgm,"Microsoft Office Access ",1)=1 And inStr(1,strPgm," MUI",1)<=0) _
      Or strPgm="Microsoft Office Professional Plus 2007" _
      Or strPgm="Microsoft Office Professional Plus 2010" _
      Or strPgm="Microsoft Office Professional Plus 2016" _
      Or strPgm="Microsoft Office Standard 2007" _
      Or strPgm="Microsoft Office Standard 2010" _
      Or strPgm="Microsoft Office Standard 2016" _
      Or strPgm="Microsoft Office Standard 2019")
 
 End If
end function

假設保存的文件名為InstalledSoftList.vbs。保存在D:\

修改結果文件保存路徑。

請修改下列代碼

?
1
2
'FilePath  = "\\Server-File\PCSoftList\"
FilePath  = CreateObject("Scripting.FileSystemObject").GetFolder(".").Path & "\"

當前默認是保存到InstalledSoftList.vbs文件所在目錄。可以不修改。

修改過濾條件(設置不想顯示的程序名)

請修改下列代碼

?
1
2
3
4
5
6
'不輸出Security Update、.NET Framework、Microsoft Visual C++、NVIDIA、Intel(R)的程序
 ignorePgm = inStr(1,strPgm,"Security Update",1)<=0 _
  And inStr(1,strPgm,".NET Framework",1)<=0 _
  And inStr(1,strPgm,"Microsoft Visual C++",1)<=0 _
  And inStr(1,strPgm,"NVIDIA",1)<=0 _
  And inStr(1,strPgm,"Intel(R)",1)<=0

默認不顯示Security Update、.NET Framework、Microsoft Visual C++、NVIDIA、Intel®的程序
測試前可以不修改

測試

測試方法1

收集當前計算機安裝的軟件

直接雙擊InstalledSoftList.vbs

假設計算機名為PC-Name01,會在D:\或指定目錄下生成一個名為PC-Name01.txt的文件。

測試方法2

收集遠程計算機上安裝的軟件。
在CMD窗口中運行下列命令。(假設計算機名為PC-Name02)

cscript d:\InstalledSoftList.vbs PC-Name02

會在D:\或指定目錄下生成一個名為PC-Name02.txt的文件。

測試方法2的注意事項

如果運行后得到的PC-Name02.txt文件為空文件。請確認下列兩項內容。

  • 遠程計算機必須于運行腳本的計算機是同一個域的成員計算機
  • 遠程計算機的防火墻為關閉狀態,或設置了【入站規則】【Windows Management Instrumentation(WMI)】允許

到此這篇關于如何用VBS腳本收集遠程計算機或本地計算機安裝的軟件的文章就介紹到這了,更多相關VBS腳本收集計算機安裝的軟內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/wwchtsy/article/details/113950742

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩一区二区中文字幕视频 | nxgx欧美| 亚洲日本va中文字幕 | 高清国语自产拍免费视频国产 | 荡女淫春2古装 | 王淑兰李思雨李铁柱乡村小说免费 | zoomkool最新版 | 成人日b视频| 极致堕落(高h) | 91精品国产高清久久久久 | 男同桌扒开女同桌胸罩喝奶 | 国产一区二区在线看 | 十六一下岁女子毛片免费 | 啪啪模拟器 | 国产麻豆视频 | 91精品国产品国语在线不卡 | 精品成人网 | 午夜福利体检 | 爱爱调教 | 色批网站www | 人妖欧美一区二区三区四区 | 大陆黄色片 | 国产日韩欧美精品在线 | 单身男女韩剧在线看 | 无遮挡激情 | 欧美╳bbbb | 19+韩国女主播激情vip视频在线 | 国产成人福利免费视频 | 日韩每日更新 | 鸭子玩富婆流白浆视频 | 成年男女免费视频网站 | 日本h乱淫动漫在线观看 | 9自拍视频在线观看 | 草草国产成人免费视频 | 女教师被女同学调教成脚奴 | 国产一区二区三区免费在线视频 | 国产成人综合亚洲一区 | 欧美日韩中文国产一区 | 99这里只有精品在线 | 4444www免费看| 天堂资源8中文最新版 |