2016-09-16 2 views
0

죄송합니다.이 부분이 보류로 간주되는 경우, 저는 이것을 프로그래머 스택에서 삭제했습니다.VBScript 개체를 문자열로 변환 하시겠습니까?

나는 일반적으로이 웹 사이트의 자동 로그인 사용자입니다. 프로그래밍 방식의 다른 방법에 대해 더 잘 교육하기 위해 코드의 일부분을 선택하십시오.

저는 VBScript가있는 벽에 부딪 혔습니다. 내 문제를 어떻게 말할지는 모르겠습니다.

컴퓨터의 IP 주소 (모두)를 텍스트 파일에 쓰려고합니다.

아래 코드를 실행하면 컴퓨터의 IP 주소 (ipv6 및 ipv4 또는 활성화 한 모든 것)가 출력됩니다.

나는이 텍스트 파일에 기록 할,하지만 난 Scripting.FileSystemObject

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

를 사용할 때 단순히

objFileToWrite(strIP) 

어떤 생각을 할 수없는 이유는 무엇입니까? 이것은 여전히 ​​진행중인 작업이므로 코드가 엉성함을 알고 있습니다. 그러니 제발 좋게 생각하십시오. 이것은 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

objItem.IPAddress (0)' –

+0

@Noodles 실패. 편집으로 오류 첨부. –

+0

@BillyKleinhomer 이미지를 오류로 게시하지 말고 간단한 blockquote'>를 사용하십시오. [Markdown 또는 HTML을 사용하여 게시물의 서식을 지정하려면 어떻게합니까?] (http://stackoverflow.com/help/formatting)를 참조하십시오. – Lankymart

답변

0

VBScript를이 TextFile 객체의 기본 방법은를 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 
관련 문제