0

SORRY IF THIS IS CONSIDERED A REPOST, I DID DELETE THIS FROM THE PROGRAMMER STACK.

I am usually a silent user of this website. Picking bits and pieces of your code to better educate myself on the different ways of programming things.

I have run into a wall with VBScript, and I'm not sure how to word my issue.

I am trying to write the IP addresses of a computer (all of them) to a text file.

If you run the code below, it will output your computer's IP addresses (ipv6 and ipv4, or whatever you have active).

I want this to be written to a text file, but when I use a Scripting.FileSystemObject

Set objFileToWrite = CreateObject("Scripting.FileSystemObject").OpenTextFile(CurrentDirectory & "\" & SN.SerialNumber & ".txt",2,true)

I cannot simply do

objFileToWrite(strIP)

Any thoughts? This is still a work in progress, so I know my code is sloppy, so please be nice on that. This is kind of a mashup of 3-4 different code sources, and I have little idea of how VBScript works yet. I am trying to learn though!

Any help would be greatly appreciated.

'************Where I left off.  Issue is converting object to String?
Set objWMIService = GetObject( "winmgmts://./root/CIMV2" )
Set colItems      = objWMIService.ExecQuery( strQuery, "WQL", 48 )

For Each objItem In colItems
    If IsArray( objItem.IPAddress ) Then
        If UBound( objItem.IPAddress ) = 0 Then
            strIP = "IP Address: " & objItem.IPAddress(0)
        Else
            strIP = "IPv4 and IPv6 Addresses: " & vbCrLf & Join(objItem.IPAddress, vbCrLf )
        End If
    End If
Next

WScript.Echo(strIP)

Update: @Noodles Apparently I don't have enough Rep to add pics?

5
  • objFileToWrite.writeline objItem.IPAddress(0) Commented Sep 16, 2016 at 18:34
  • @Noodles Unsuccessful. Attaching error as an edit. Commented Sep 16, 2016 at 19:11
  • @BillyKleinhomer please don't post errors as images instead use a simple blockquote > see How do I format my posts using Markdown or HTML?. Commented Sep 16, 2016 at 19:27
  • The point was you use the WriteLine method to write out the property of an object (not the object itself). Help is here microsoft.com/en-au/download/details.aspx?id=2764 Commented Sep 16, 2016 at 19:45
  • @Noodles UGH, thank you! I can't believe I missed that. That is exactly what I was leaving off. Commented Sep 16, 2016 at 20:17

2 Answers 2

1

Edit: @Noodles for credit. Stupid mistake on my part.

I figured it out I guess. I am not sure why it wasn't working last night (probably because I was trying to do this at 2 am) But here is the working block of code I have.

Sorry to waste your time guys, thanks for the input!

winmgmt1 = "winmgmts:{impersonationLevel=impersonate}!//" & ""
'WScript.Echo winmgmt1
Set SNSet = GetObject( winmgmt1 ).InstancesOf ("Win32_BIOS")

dim WMI:  set WMI = GetObject("winmgmts:\\.\root\cimv2")
dim Nads: set Nads = WMI.ExecQuery("Select * from Win32_NetworkAdapter where physicaladapter=true")
dim nad
dim strIP



'This is to grab the Directory of this script.  It is stored in "CurrentDirectory"
dim fso: set fso = CreateObject("Scripting.FileSystemObject")
dim CurrentDirectory
CurrentDirectory = fso.GetAbsolutePathName(".")

' Text box output.
for each SN in SNSet
     MsgBox "Your serial number is: " & SN.SerialNumber & vbCrLf & vbCrLf & "SN saved to: " & CurrentDirectory & "\Computers by Sn\" & SN.SerialNumber & ".txt"

' Creates file.
Set objFileToWrite = CreateObject("Scripting.FileSystemObject").OpenTextFile(CurrentDirectory & "\Computers by SN\" & SN.SerialNumber & ".txt",2,true)

' Writes serial number to text file.
objFileToWrite.WriteLine("Your serial number is: " & SN.SerialNumber)
objFileToWrite.WriteLine("")


'*************************** Convert WScript to String?
Dim WshNetwork
Set WshNetwork = CreateObject("WScript.Network")
dim ComputerName
ComputerName = WshNetwork.ComputerName
'dim compName: set compName = CreateObject("Scripting.FileSystemObject")

'objFileToWrite("Computer Name: " & ComputerName)
'objFileToWrite(WshNetwork.ComputerName) <<<<<<<<<<<<<<<<<Not working.  Tried CType(ComputerName, String)
'*************************** Not working properly.  Needs to be in text file rather than Echo

' Writes MAC address to text file.
for each Nad in Nads
    if not isnull(Nad.MACAddress) then objFileToWrite.WriteLine(Nad.description & ":   " & Nad.MACAddress)
next

strQuery = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress > ''"

'***********************************Where I left off.  Issue is converting object to String
Set objWMIService = GetObject( "winmgmts://./root/CIMV2" )
Set colItems      = objWMIService.ExecQuery( strQuery, "WQL", 48 )

For Each objItem In colItems
    If IsArray( objItem.IPAddress ) Then
        If UBound( objItem.IPAddress ) = 0 Then
            strIP = "IP Address: " & objItem.IPAddress(0)
        Else
            strIP = "IPv4 and IPv6 Addresses: " & vbCrLf & Join(objItem.IPAddress, vbCrLf )
        End If
    End If
Next

WScript.Echo(strIP)
objFileToWrite.WriteLine(strIP)
'test = CType(strIP, String)
'objFileToWrite(test)
'***********************************Where I left off.

' Closes text file. 
objFileToWrite.Close
Set objFileToWrite = Nothing

Next
Sign up to request clarification or add additional context in comments.

Comments

0

The VBScript TextFile object's default method isn't WriteLine. I would also avoid your object creation/method chain and create each object via a Set before calling methods on it:

Dim objFSO
Set objFSO  = CreateObject("Scripting.FileSystemObject")
Set objFileToWrite = objFSO.OpenTextFile("C:\Temp\test.txt",2,true)
objFileToWrite.WriteLine("Information to write - i.e. the IP address")
objFileToWrite.WriteLine()
objFileToWrite.Close

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.