I just signed up for Google Voice and put a widget to the right that will connect you directly to my voicemail. (Sorry, no live calls...). If you need help with something, feel free to leave me a voicemail and I'll return your call.
-Corey
I just signed up for Google Voice and put a widget to the right that will connect you directly to my voicemail. (Sorry, no live calls...). If you need help with something, feel free to leave me a voicemail and I'll return your call.
-Corey
Accessing files via vbscript is easy enough using the FileSystemObject. You probably already know how to create the object, get a file, copy it, delete it, and lots of other cool things. But what if the file isn't on the local machine or server? What if the file is on a web server? You certainly can't access it like a machine on your local intranet.
Does that mean you can't access those files? Using the routine below you can. Here's the scenario that prompted this code. I was writing an application in HTA that needed to reference a file on the web that is updated quite frequently. I could have copied it to a local server and used FSO to access it but that means more administrative overhead for me. If the application had HTTP access, why not let it download the file? After some research it turns out you can use the MSXML object to download files directly to your computer. Check it out:
Sub httpBinaryDownload(sstrURL2,sstrPath2)
Set sobjFSO = Createobject("Scripting.FileSystemObject")
sarrURL = Split(sstrURL2,"/")
sstrFile = sarrURL(UBound(sarrURL))
sstrFullPath = sstrPath2 & "\" & sstrFile
Set sobjXMLHTTP = CreateObject("MSXML2.XMLHTTP")
sobjXMLHTTP.open "GET", sstrURL2, False
sobjXMLHTTP.send()
If sobjXMLHTTP.Status = 200 Then
Set sobjADOStream = CreateObject("ADODB.Stream")
sobjADOStream.Open
sobjADOStream.Type = 1 'adTypeBinary
sobjADOStream.Write sobjXMLHTTP.ResponseBody
sobjADOStream.Position = 0 'Set the stream position to the start
If sobjFSO.Fileexists(sstrFullPath) Then sobjFSO.DeleteFile sstrFullPath
Set sobjFSO = Nothing
sobjADOStream.SaveToFile sstrFullPath
sobjADOStream.Close
Set sobjADOStream = Nothing
End If
Set sobjXMLHTTP = Nothing
End Sub
Note: If you are copying and pasting, be sure to fix the line breaks.
Now, this code takes in the http path of the file and the local folder path to save the file to. It makes an MSXML object and ADODB stream to save the file locally. It works fairly fast! Test it out and if you run into trouble, let me know.
-Corey Thomas
For the few, and by few I mean very few, that read these posts I want to come right out and say sorry. Sorry I've been away so long! I took a new job last year with <insert major global conglomeration> and have been completely swamped the past few months writing new code in HTA format for a new solution, possibly to be patented. We'll have to see how that goes.
In celebration of the hard work I've been doing, I have decided to start some code examples on HTA programming and how you can add a spiffy GUI to your existing scripts. Neat? You bet. Stay tuned and I promise not to leave you hanging.
-Corey
Just ran across the need to determine what kind of machine I am running a script on. I needed to detect whether or not the machine was a laptop or desktop. Just so happens that WMI provides a nifty class for this.
As you check out the function below, notice some of the really odd chassis types available. How many of you have a "pizza box" or "lunchbox" chassis?
Function getChassisType(sstrComputer)
'Global: Dim intChassisType to reference by number
'Returns a string value of the type.
Set sobjWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & sstrComputer & "\root\cimv2")
Set colChassis = sobjWMIService.ExecQuery _
("Select ChassisTypes from Win32_SystemEnclosure")
For Each objChassis in colChassis
For i = Lbound(objChassis.ChassisTypes) to Ubound(objChassis.ChassisTypes)
intChassisType = objChassis.ChassisTypes(i)
Next
Next
Select Case intChassisType
Case 1
getChassisType = "Other"
Case 2
getChassisType = "Unknown"
Case 3
getChassisType = "Desktop"
Case 4
getChassisType = "Low Profile Desktop"
Case 5
getChassisType = "Pizza Box"
Case 6
getChassisType = "Mini Tower"
Case 7
getChassisType = "Tower"
Case 8
getChassisType = "Portable"
Case 9
getChassisType = "Laptop"
Case 10
getChassisType = "Notebook"
Case 11
getChassisType = "Hand Held"
Case 12
getChassisType = "Docking Station"
Case 13
getChassisType = "All in One"
Case 14
getChassisType = "Sub Notebook"
Case 15
getChassisType = "Space-Saving"
Case 16
getChassisType = "Lunch Box"
Case 17
getChassisType = "Main System Chassis"
Case 18
getChassisType = "Expansion Chassis"
Case 19
getChassisType = "SubChassis"
Case 20
getChassisType = "Bus Expansion Chassis"
Case 21
getChassisType = "Peripheral Chassis"
Case 22
getChassisType = "Storage Chassis"
Case 23
getChassisType = "Rack Mount Chassis"
Case 24
getChassisType = "Sealed-Case PC"
Case Else
getChassisType = "Unknown"
End Select
Set sobjWMIService = Nothing
End Function
Enjoy the code and as always, let me know if this script helps you out!
-Corey Thomas
MCSE/MCSA/MCDBA/Security+,CIW Associate