首先,英语不是!我的第一语/母语。
对于我的实习@这家公司,我正在尝试收集一些数据。网络中有200台PC。所有HP SFF PC。所有的PC都将被包含软件和策略的公司磁盘映像覆盖。他们还获得了bios更新。但随着这几个月的发展,这些版本已经过时了。并不是说需要更新BIOS,我们现在想要在哪个版本的哪个版本上使用哪个版本。
有几种PC型号。 例如。 HP DC7600,HP 7700。
有几个bios版本。 例如。 786G1 v01.10,786G1 v01.16
我正在使用以下方法收集此数据。每个人都拥有某个磁盘的网络共享。(公司文件)。
对于客户端方面,我正在使用WMI(Windows Management Instrumentation)来收集所需的信息。
Sub RetrieveInfo()
Dim _PCName As String = My.Computer.Name
Dim _Info As String = vbNullString
Dim _FileName As String = "G:\BiosVersion\" & _PCName & ".txt"
Dim _ManagmentC As New ManagementClass("Win32_ComputerSystem")
Dim _Moc As ManagementObjectCollection = _ManagmentC.GetInstances
For Each _Mo As ManagementObject In _Moc
Dim Model() As String = Split(_Mo.Properties("Model").Value.ToString, " ")
For i = 0 To Model.Length - 1
If Model(i).ToLower.Contains("dc") Then _Info &= Model(i)
Next
Next
_ManagmentC = New ManagementClass("win32_bios")
_Moc = _ManagmentC.GetInstances
For Each _Mo As ManagementObject In _Moc
_Info &= "|" & _Mo.Properties("SMBIOSBIOSVersion").Value.ToString
Next
Try
If IO.File.Exists(_FileName) Then
IO.File.Delete(_FileName)
End If
Catch ex As IO.IOException
_FileName = _FileName.Replace(_PCName, _PCName & "-" & New Random().Next(10, 10000))
End Try
IO.File.WriteAllText(_FileName, _Info)
End Sub
如您所见,这将在共享中使用String PCName(例如PC1001)创建文本文件。 它写了PC型号和& Bios版本到文本文件。 (例如dc7900 | 786G1 v01.16)
对于服务器方面,图表构建部分,我正在执行以下操作。
Dim Path As String = "G:\BiosVersion\"
Sub UpdateChart()
Dim PCModels As New List(Of String)
Dim BiosVersions As New List(Of String)
Dim Files As IO.FileInfo() = New IO.DirectoryInfo(Path).GetFiles
For Each File As IO.FileInfo In Files
If File.Extension = ".txt" Then
PCModels.Add(IO.File.ReadAllText(File.FullName).Split("|")(0))
BiosVersions.Add(IO.File.ReadAllText(File.FullName).Split("|")(1))
End If
Next
PCModels = RemoveDuplicates(PCModels)
BiosVersions = RemoveDuplicates(BiosVersions)
For i = 0 To chartBios.Series.Count - 1
chartBios.Series.Remove(chartBios.Series.Item(i))
Next
Dim Dictionary As New Dictionary(Of String, Integer)
For Each Version As String In BiosVersions
chartBios.Series.Add(Version)
Dim Count As Integer = 0
For Each File As IO.FileInfo In Files
If IO.File.ReadAllText(File.FullName).Split("|")(1).ToLower.Trim = Version.ToLower.Trim Then
Count += 1
End If
Next
Dictionary.Add(Version, Count)
Next
For Each Entry As KeyValuePair(Of String, Integer) In Dictionary
chartBios.Series(Entry.Key).Points.AddY(Entry.Value)
Next
End Sub
Function RemoveDuplicates(ByVal inputList As List(Of String)) As List(Of String)
Dim uniqueStore As New Dictionary(Of String, Integer)()
Dim finalList As New List(Of String)()
For Each currValue As String In inputList
If Not uniqueStore.ContainsKey(currValue) Then
uniqueStore.Add(currValue, 0)
finalList.Add(currValue)
End If
Next
Return finalList
End Function
chartBios =图表控件。
会产生以下结果: 我还不能发布任何图像(垃圾邮件预防) http://i.imgur.com/bGpyH.jpg
我要做的是以下内容。 我有3个Vars,Bios版本,每个版本安装了多少次&型号名称。
对于每个Bios版本号,每个PC型号必须有一个条形,其标签代表bios版本的安装次数。
实施例: 我还不能发布任何图像(垃圾邮件预防) http://i.imgur.com/tP0Sf.jpg
答案 0 :(得分:0)
使用MS Chart Controls,您可以将多个系列添加到一个图表中,每个系列代表您的PC类型,对于每种类型,您都有BIOS版本号和出现次数。