2016-09-16 215 views
0

如果这被认为是一个REPOST,我从程序堆栈中删除了这个。VBScript将对象转换为字符串?

我通常是这个网站的无声用户。为了更好地教导自己对事物编程的不同方式,选择你的代码片段。

我已经遇到了VBScript的墙,我不知道如何说出我的问题。

我想写一台计算机的IP地址(所有这些)到一个文本文件。

如果您运行下面的代码,它会输出您的计算机的IP地址(ipv6和ipv4,或任何您已激活的)。

我想这是写入到一个文本文件,但是当我使用一个Scripting.FileSystemObject

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

我不能简单地做

objFileToWrite(strIP) 

有什么想法?这仍然是一个正在进行的工作,所以我知道我的代码是sl,的,所以请对此很好。这是一种3-4种不同代码源的混搭,我对VBScript的工作原理一无所知。尽管我正在努力学习!

任何帮助将不胜感激。

'************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) 

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

+0

'objFileToWrite.writeline objItem.IPAddress(0)' – 2016-09-16 18:34:12

+0

@Noodles不成功。作为编辑附加错误。 –

+0

@BillyKleinhomer请不要将错误发布为图片,而应使用简单的块引用'>'请参阅[如何使用Markdown或HTML格式化我的帖子](http://stackoverflow.com/help/formatting)。 – Lankymart

回答

0

VBScript的文本文件对象的默认方法不是的WriteLine。我也想避免你的对象创建/法链,并创建通过Set每个对象调用它的方法之前:

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 
0

编辑:@Noodles信贷。对我来说愚蠢的错误。

我想通了。我不知道为什么它昨晚没有工作(可能是因为我试图在凌晨2点这样做)但是这里是我有的代码块。

对不起,浪费你的时间人,感谢您的意见!

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