首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBScript是否将对象转换为字符串?

VBScript是否将对象转换为字符串?
EN

Stack Overflow用户
提问于 2016-09-17 02:10:39
回答 2查看 5.2K关注 0票数 0

很抱歉,如果这被认为是转帖,我确实从程序员堆栈中删除了这篇文章。

我通常是这个网站的静默用户。挑选你的代码片段,让自己更好地了解编程的不同方式。

我遇到了VBScript的麻烦,我不知道该如何表达我的问题。

我正在尝试将一台计算机的IP地址(全部)写入一个文本文件。

如果你运行下面的代码,它将输出你计算机的IP地址(ipv6和ipv4,或者你激活的任何东西)。

我希望将其写入文本文件,但当我使用Scripting.FileSystemObject

代码语言:javascript
运行
复制
Set objFileToWrite = CreateObject("Scripting.FileSystemObject").OpenTextFile(CurrentDirectory & "\" & SN.SerialNumber & ".txt",2,true)

我不能简单地

代码语言:javascript
运行
复制
objFileToWrite(strIP)

有什么想法吗?这仍然是一项正在进行的工作,所以我知道我的代码是草率的,所以请注意这一点。这是3-4个不同代码源的混搭,我对VBScript是如何工作的还知之甚少。不过,我正在努力学习!

任何帮助都将不胜感激。

代码语言:javascript
运行
复制
'************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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-17 04:12:42

编辑:@Noodles for credit。我犯了个愚蠢的错误。

我想我想通了。我不确定为什么它昨晚不能工作(可能是因为我在凌晨2点尝试做这件事),但这是我的工作代码块。

很抱歉浪费你们的时间,谢谢你们的投入!

代码语言:javascript
运行
复制
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
票数 1
EN

Stack Overflow用户

发布于 2016-09-17 03:21:20

VBScript TextFile对象的默认方法不是WriteLine。我也会避免你的对象创建/方法链,在调用对象上的方法之前通过Set创建每个对象:

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39537710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档