VBScript将对象转换为字符串?
问题描述:
如果这被认为是一个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?
答
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
答
编辑:@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
'objFileToWrite.writeline objItem.IPAddress(0)' – 2016-09-16 18:34:12
@Noodles不成功。作为编辑附加错误。 –
@BillyKleinhomer请不要将错误发布为图片,而应使用简单的块引用'>'请参阅[如何使用Markdown或HTML格式化我的帖子](http://stackoverflow.com/help/formatting)。 – Lankymart