用VBS腳本收集域中遠(yuǎn)程計(jì)算機(jī)或本地計(jì)算機(jī)安裝的軟件,Windows版本。并將收集的結(jié)果保存到計(jì)算機(jī)名為文件名的文本文件中。文本文件可以保存到網(wǎng)絡(luò)路徑中或當(dāng)前VBS文件所在目錄。同時(shí)支持32位和64位系統(tǒng)。
并過濾到一些補(bǔ)丁包、Office組件、NVIDIA、Intel®的驅(qū)動(dòng)等。
保存下面的VBS程序代碼到vbs文件中
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 '未知語(yǔ)言 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 '讓個(gè)版本的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
假設(shè)保存的文件名為InstalledSoftList.vbs。保存在D:\
請(qǐng)修改下列代碼
'FilePath = "\\Server-File\PCSoftList\" FilePath = CreateObject("Scripting.FileSystemObject").GetFolder(".").Path "\"
當(dāng)前默認(rèn)是保存到InstalledSoftList.vbs文件所在目錄。可以不修改。
請(qǐng)修改下列代碼
'不輸出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
默認(rèn)不顯示Security Update、.NET Framework、Microsoft Visual C++、NVIDIA、Intel®的程序
測(cè)試前可以不修改
收集當(dāng)前計(jì)算機(jī)安裝的軟件
直接雙擊InstalledSoftList.vbs
假設(shè)計(jì)算機(jī)名為PC-Name01,會(huì)在D:\或指定目錄下生成一個(gè)名為PC-Name01.txt的文件。
收集遠(yuǎn)程計(jì)算機(jī)上安裝的軟件。
在CMD窗口中運(yùn)行下列命令。(假設(shè)計(jì)算機(jī)名為PC-Name02)
cscript d:\InstalledSoftList.vbs PC-Name02
會(huì)在D:\或指定目錄下生成一個(gè)名為PC-Name02.txt的文件。
如果運(yùn)行后得到的PC-Name02.txt文件為空文件。請(qǐng)確認(rèn)下列兩項(xiàng)內(nèi)容。
到此這篇關(guān)于如何用VBS腳本收集遠(yuǎn)程計(jì)算機(jī)或本地計(jì)算機(jī)安裝的軟件的文章就介紹到這了,更多相關(guān)VBS腳本收集計(jì)算機(jī)安裝的軟內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:西安 文山 鶴壁 四平 邢臺(tái) 湖州 銅川
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何用VBS腳本收集遠(yuǎn)程計(jì)算機(jī)或本地計(jì)算機(jī)安裝的軟件》,本文關(guān)鍵詞 如,何用,VBS,腳本,收集,遠(yuǎn)程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。