0
<script language="VBScript">
Option Explicit
' On Error Resume Next


Dim colIPResults, objFile, objFSO, objNIC, objWMI, objWSHNetwork, strAddresses, strIPAddress, strWQL
Const FOR_APPENDING = 8

Sub DestroyObjects()
If IsObject(objFile) Then Set objFile = Nothing
If IsObject(objFSO) Then Set objFSO = Nothing
If IsObject(objWMI) Then Set objWMI = Nothing
If IsObject(objWSHNetwork) Then Set objWSHNetwork = Nothing
' If IsObject() Then Set = Nothing
End Sub


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWSHNetwork = CreateObject("WScript.Network")
Set objWMI = GetObject("WinMGMTS:root\cimv2")
Set StrComputer = objWSHNetwork.Computername 
strWQL = "SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'True'"
Set colIPResults = objWMI.ExecQuery(strWQL)
For Each objNIC In colIPResults
For Each strIPAddress in objNIC.IPAddress
If strAddresses = "" Then
strAddresses = strIPAddress
Else
strAddresses = strAddresses
End If
Next
Next

Document.write("PC Tag Number: " + StrComputer)

If strAddresses ="0.0.0.0" Or strAddresses ="" or strAddresses = "undefined" Then
    Document.write("No Connection Detected")
Else
    Document.write "Network Address - "+ strAddresses
End If

DestroyObjects()
</script>

変数が未定義であると私に言い続けます!

(StrComputerの変数)

4

1 に答える 1

3

6行目でStrComputerを宣言したことはありません。

ここで少し詳しく説明するために、Option Explicitを使用しました。これは、VBScriptを使用している場合でも、使用する前にすべての変数を宣言する必要があることを意味します。このため、6行目のDimステートメントにStrComputerを含める必要があります。

Dim colIPResults、objFile、objFSO、objNIC、objWMI、objWSHNetwork、strAddresses、strIPAddress、strWQL、StrComputer。

また、命名規則を変更して、小文字ではなく大文字の最初の文字を使用しているようです(StrComputerとstrComputer)。確かに好きな名前を付けることができますが、一貫性を保ち、読み通したときに正しく見えるバグのあるコードになってしまわないようにすることもできます。

于 2011-11-03T20:06:41.050 に答える