2016-09-16 24 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

'objFileToWrite.writeline objItem.IPAddress(0)' –

+0

@Noodles失敗しました。編集としてのエラーの添付。 –

+0

@BillyKleinhomer [単にMarkdownやHTMLを使って投稿をフォーマットするにはどうすればいいですか?](http://stackoverflow.com/help/formatting)を参照してください。 – Lankymart

答えて

0

VBScriptのTextFileのオブジェクトのデフォルトの方法は、WriteLineメソッドではありません。編集

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を私はまた、あなたのオブジェクトの作成/メソッドチェーンを回避し、その上にメソッドを呼び出す前にSetを経由して各オブジェクトを作成します。私の愚かな間違い。

私はそれを考え出しました。なぜ私は昨晩働いていなかったのか分かりません(おそらく、私は午前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 
関連する問題