On Error Resume Next
intStartingAddress = 1
intEndingAddress = 254
strSubnet = "192.168.1."
For i = intStartingAddress to intEndingAddress
strComputer = strSubnet & i
Wscript.Echo strComputer
Next
보시다시피 간단한 코드입니다. 먼저 변수를 지정합니다. intStartingAddress에는 값 1이, intEndingAddress에는 값 254가, strSubnet에는 192.168.1.(1 뒤의 마침표에 주의)이할당됩니다. 짐작하셨겠지만 이 값들은 IP 주소를 만드는 데 사용됩니다.
변수를 지정한 후에는 1(intStartingAddress)부터 254(intEndingAddress)까지 실행되는 For-Next 루프를 작성합니다. 1부터 254까지인 이유는 IP 주소 범위가 이 IP 범위이기 때문입니다. 예를 들어 IP 범위가 192.168.1.7부터 109.168.1.54까지인 경우 동일한 루프를 사용하지만 intStartingAddress의 값을 7로 변경하고 intEndingAddress의 값을 54로 변경하면 됩니다.
루프 안에서 문자열 값 192.168.1.에 루프 변수의 현재 값인 (i)가 결합됩니다. 루프를 처음 실행하면 i는 1이 되고 192.168.1.에 1이 결합됩니다. 즉, 192.168.1.1이 첫 번째 IP 주소가 됩니다. 루프의 마지막에서 192.168.1.에 254가 결합되어 마지막 IP 주소는 192.168.1.254가 됩니다. 이 스크립트를 실행하면 결과는 다음과 같습니다.
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
아주 간단하죠?
여러 IP 주소의 출력 이외에 일부 WMI 코드를 대신 실행하고 싶은 경우 다음과 같이 할 수 있습니다.
On Error Resume Next
intStartingAddress = 1
intEndingAddress = 254
strSubnet = "192.168.1."
For i = intStartingAddress to intEndingAddress
strComputer = strSubnet & i
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_OperatingSystem")
For Each objItem in ColItems
Wscript.Echo strComputer & ": " & objItem.Caption
Next
Next
보시다시피 IP 주소에 다시 strComputer 변수 값을 설정한 후 해당 주소가 나타내는 컴퓨터의 WMI 서비스에 연결합니다. WMI에서 컴퓨터에 연결할 때는 컴퓨터 이름과 IP 주소를 모두 사용할 수 있으므로 간단하게 이 방법을 사용할 수 있습니다.
이제 약간 살을 붙여 보겠습니다. 라우터나 기타 용도로 사용되기 때문에 제외하고 싶은 IP 주소가 있는 경우 다음과 같이 Select Case 문을 사용하여 특정 컴퓨터를 제외하도록 스크립트를 수정할 수 있습니다.
intEndingAddress = 254
strSubnet = "192.168.1."
For i = intStartingAddress to intEndingAddress
Select Case i
Case 10
Case 50
Case 100
Case Else
strComputer = strSubnet & i
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_OperatingSystem")
For Each objItem in ColItems
Wscript.Echo strComputer & ": " & objItem.Caption
Next
End Select
Next
i의 값(IP 주소의 마지막 8진수)이 10, 50, 100인 경우 아무 일도 발생하지 않습니다. 컴퓨터의 IP 주소가 192.168.1.10, 192.168.1.50 또는 192.168.1.100이면 WMI 코드가 실행되지 않고 스크립트의 루프가 지나가기 때문에 아무 일도 발생하지 않습니다. WMI 코드는 이 세 주소를 제외한 나머지 IP 주소의 컴퓨터에 대해서만 실행됩니다. 이 방법은 간단하지만 스크립트의 WMI 부분에서 특정 IP 주소를 제외하는 효과적인 방법입니다.
|