mac_shinobi Posted March 13, 2014 Posted March 13, 2014 (edited) @Arthur / @Steve21 or anyone else Using version 2 of powershell at work but am going to attempt to install version 3 on my laptop ( not sure if it will work or not due to restrictions possibly ) I have the below script but want it converting to powershell const HKEY_CURRENT_USER = &H80000001 const HKEY_LOCAL_MACHINE = &H80000002 Const ForReading = 1, ForWriting = 2, ForAppending = 8 strComputer = "." Set StdOut = WScript.StdOut Dim username, asset, hdd, manuhdd Dim colIPResults, objFile, objFSO, objNIC, objWMI, objWSHNetwork, strAddresses, strIPAddress, strWQL, strComp, osVer Dim strRAM dim filesys, filetxt dim newfolder Dim usbPath Dim spVer Dim strSerial, strModel, strVendor, strNumModel Set objNetwork = CreateObject("Wscript.Network") Set filesys = CreateObject("Scripting.FileSystemObject") username = objNetwork.username strComputer = objNetwork.ComputerName usbPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "") Sub DestroyObjects() If IsObject(objWMI) Then Set objWMI = Nothing If IsObject(objWSHNetwork) Then Set objWSHNetwork = Nothing End Sub Dim strMAC Set objWSHNetwork = CreateObject("WScript.Network") Set objWMI = GetObject("WinMGMTS:root\cimv2") strWQL = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'True'" Set colIPResults = objWMI.ExecQuery(strWQL) For Each objNIC In colIPResults For Each strIPAddress in objNIC.IPAddress If strAddresses = "" Then strAddresses = strIPAddress Else strAddresses = strAddresses End If Next strMAC = objNIC.MACAddress Next 'IPAddress 'Set objWMIService = GetObject("WinMGMTS:root\cimv2") 'Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=True",,48) 'For Each objItem in colItems ' strMAC = objItem.MACAddress 'Next If strAddresses ="0.0.0.0" Or strAddresses ="" or strAddresses = "undefined" Then strAddresses = "No Connection Detected or invalid ip address" Else strAddresses = strAddresses End If DestroyObjects() 'Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 'Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48) 'For Each Item In colItems 'manu = Item.Manufacturer ' model = Item.Model 'Next Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct",,48) For Each objItem in colItems Select Case objItem.Vendor Case "Dell Inc.": strSerial = objItem.IdentifyingNumber strModel = objItem.Name strVendor = objItem.Vendor strNumModel = objItem.Version If strNumModel = "" Or IsNull(strNumModel)=true Then strNumModel = "N/A" End If Case "LENOVO": strSerial = objItem.IdentifyingNumber strNumModel = objItem.Name strVendor = objItem.Vendor strModel = objItem.Version End Select Next Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMemory", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) totalMemory = 0 For Each item In colItems totalMemory = totalMemory + item.Capacity / (1024^2) Next strRam = FormatNumber((totalMemory / 1024), 2) & " Gb" 'Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS") 'For Each objItem in colItems ' serial = objItem.SerialNumber 'Next Set colItems = objWMIService.ExecQuery("Select * from Win32_SystemEnclosure") For Each objItem in colItems If Len(objItem.SMBIOSAssetTag) <= 0 Then asset = "N/A" Else asset = objItem.SMBIOSAssetTag End If Next Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "HARDWARE\DESCRIPTION\System\CentralProcessor\0" strValue = "ProcessorNameString" objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValue,strScriptStatus Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery("select * from Win32_DiskDrive where Name like '%PHYSICALDRIVE0%'") For Each objDisk in colDisks hdd = ConvertSize(objDisk.Size) manuhdd = Int(objDisk.Size /(1000000000)) & " GB" Next Set oWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set QueryWMI = oWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem") For Each oItem In QueryWMI spVer = oItem.Caption & " with Service Pack " & oItem.ServicePackMajorVersion osVer = oItem.Version Next Set filetxt = filesys.OpenTextFile(usbPath & "\" & ucase(username) & " - " & Trim(strComputer) & ".htm" , 2, True) 'filetxt.WriteLine "Username,Manufacturer,Serial Number,Model,Computer Name,RAM,HDD,Asset Tag,Processor" 'filetxt.WriteLine ucase(username) & "," & manu & "," & serial & "," & model & "," & strComputer & "," & strRAM & "," & hdd & "( " & manuhdd & " )" & "," & asset & "," & strScriptStatus filetxt.WriteLine "Computer Spec for : " & strComputer & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Username :" filetxt.WriteLine "" & ucase(username) & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Operating System & Service Pack Level :" filetxt.WriteLine "" & spVer & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Operating System Version :" filetxt.WriteLine "" & osVer & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Manufacturer :" filetxt.WriteLine "" & strVendor & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Serial Number :" filetxt.WriteLine "" & strSerial & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Numerical Model :" filetxt.WriteLine "" & strNumModel & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Model Name :" filetxt.WriteLine "" & strModel & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Computer Name :" filetxt.WriteLine "" & strComputer & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "I.P Address :" filetxt.WriteLine "" & strAddresses & "" filetxt.WriteLine "" 'filetxt.WriteLine "" 'filetxt.WriteLine "MAC Address :" 'filetxt.WriteLine "" & strMAC & "" 'filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Total RAM :" filetxt.WriteLine "" & strRAM & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Actual HDD Capacity :" filetxt.WriteLine "" & HDD & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Manufacturer HDD Capacity :" filetxt.WriteLine "" & manuhdd & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Asset Tag :" filetxt.WriteLine "" & asset & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Processor :" filetxt.WriteLine "" & Trim(strScriptStatus) & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "A.D Description :" filetxt.WriteLine "" & ProperCase(username) & space(1) & strModel & space(1) & "(" & strSerial & ")" & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine " " filetxt.WriteLine "===========================================================" Dim ObjExec Dim strFromProc Dim strOutput 'output.innerhtml = "" Set objShell = CreateObject("WScript.Shell") Set ObjExec = objShell.Exec("%comspec% /c ipconfig /all 2>&1") Do strFromProc = ObjExec.StdOut.ReadLine() strOutput = strOutput & strFromProc & " " Loop While Not ObjExec.Stdout.atEndOfStream filetxt.WriteLine "" filetxt.WriteLine "" & strOutput & "" filetxt.WriteLine "" filetxt.Close msgbox ucase(username) & vbcrlf & spVer & vbcrlf & osVer & vbcrlf & strVendor & vbcrlf & strModel & " ( " & strNumModel & " ) " & vbcrlf & strSerial & vbcrlf & asset & vbcrlf & vbcrlf & strComputer & vbcrlf & strAddresses & vbcrlf & strScriptStatus & vbcrlf & strRAM & vbcrlf & hdd & "( " & manuhdd & " )" & vbcrlf & ProperCase(username) & space(2) & strModel & space(2) & "(" & strSerial & ")" wscript.sleep 1000 Function ConvertSize(Size) Do While InStr(Size,",") 'Remove commas from size CommaLocate = InStr(Size,",") Size = Mid(Size,1,CommaLocate - 1) & _ Mid(Size,CommaLocate + 1,Len(Size) - CommaLocate) Loop Suffix = " Bytes" If Size >= 1024 Then suffix = " KB" If Size >= 1048576 Then suffix = " MB" If Size >= 1073741824 Then suffix = " GB" If Size >= 1099511627776 Then suffix = " TB" Select Case Suffix Case " KB" Size = Round(Size / 1024, 1) Case " MB" Size = Round(Size / 1048576, 1) Case " GB" Size = Round(Size / 1073741824, 1) Case " TB" Size = Round(Size / 1099511627776, 1) End Select ConvertSize = Size & Suffix End Function Function ProperCase(sText) '*** Converts text to proper case e.g. ***' '*** surname = Surname ***' '*** o'connor = O'Connor ***' Dim a, iLen, bSpace, tmpX, tmpFull iLen = Len(sText) For a = 1 To iLen If a <> 1 Then 'just to make sure 1st character is upper and the rest lower' If bSpace = True Then tmpX = UCase(mid(sText,a,1)) bSpace = False Else tmpX=LCase(mid(sText,a,1)) If tmpX = " " Or tmpX = "'" Or tmpX ="." Then bSpace = True End if Else tmpX = UCase(mid(sText,a,1)) End if tmpFull = tmpFull & tmpX Next ProperCase = tmpFull End Function Set objMemory = Nothing Set objWMIService = Nothing Thank you Edited March 13, 2014 by mac_shinobi
amckinley Posted March 20, 2014 Posted March 20, 2014 (edited) Converting VBScript to Windows PowerShell And about PSv3. I found that you must have .Net Framework 4.5 installed before you attempt to install PSv3 Edited March 20, 2014 by amckinley
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now