嗨,Scripting Guy!我有一個(gè)包含一組 IP 地址的文本文件。我想使用腳本讀取這些地址,然后使用這些地址連接到它們的計(jì)算機(jī)。這個(gè)目的可以達(dá)到嗎?
-- RL
嗨,RL。毫無(wú)疑問(wèn)您可以做到,下面我們介紹怎么做。首先,請(qǐng)確保您的文本文件類似如下所示,每個(gè) IP 地址位于一行:
192.168.1.1192.168.1.2192.168.1.3192.168.1.4
接下來(lái),您需要一個(gè)可以逐行讀取文本文件的腳本,并在讀取過(guò)程中將 IP 地址存儲(chǔ)在變量中。以下腳本讀取名為 C:\Addresses.txt 的文件,并回顯讀取到的每個(gè)值:
Const ForReading = 1Set objFSO = CreateObject("Scripting.FileSystemObject")Set objTextFile = objFSO.OpenTextFile _("c:\Addresses.txt", ForReading)Do Until objTextFile.AtEndOfStreamstrComputer = objTextFile.ReadlineWscript.Echo strComputerLoop
如您所見(jiàn),我們打開(kāi)這個(gè)文件,然后使用一個(gè) Do Until 循環(huán)來(lái)讀取每一行代碼。Do Until 會(huì)讀取一行代碼(使用 ReadLine 方法),將讀取的值存儲(chǔ)在變量 strComputer 中,然后回顯這個(gè)值(由于文本文件的每一行都只有一個(gè) IP 地址,因此回顯的每個(gè)值也是一個(gè) IP 地址)。然后,這個(gè)腳本會(huì)接著循環(huán)讀取下一行代碼,自動(dòng)重復(fù)上述過(guò)程,直到讀完所有行(換句話說(shuō),它會(huì)一直運(yùn)行,直到 AtEndOfStream 屬性為真)。
現(xiàn)在我們需要做的就是將回顯 IP 地址的代碼行替換為可以執(zhí)行某些更有用任務(wù)的代碼。在我們的示例中,我們將檢索文本文件中的 IP 地址所對(duì)應(yīng)的每一臺(tái)計(jì)算機(jī)上安裝的操作系統(tǒng)的名稱。這其實(shí)很簡(jiǎn)單,因?yàn)?WMI 允許您使用 IP 地址連接計(jì)算機(jī),就像這樣:
strComputer = GetObject("192.168.1.1")
這就是我們要做的事情;唯一的不同就是我們不是將 IP 地址硬編碼進(jìn)來(lái),而是使用變量 strComputer 來(lái)表示 IP 地址。由于 strComputer 的值會(huì)隨著每次循環(huán)的運(yùn)行而更改(因?yàn)槲覀兠看味紡奈谋疚募凶x入一個(gè)新的 IP 地址),因此腳本運(yùn)行完畢后,我們也就完成了連接文本文件中的每臺(tái)計(jì)算機(jī)——以及檢索其信息——的任務(wù)。
Const ForReading = 1Set objFSO = CreateObject("Scripting.FileSystemObject")Set objTextFile = objFSO.OpenTextFile _("c:\Addresses.txt", ForReading)Do Until objTextFile.AtEndOfStreamstrComputer = objTextFile.ReadlineSet objWMIService = GetObject _("winmgmts:\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _("SELECT * FROM WIN32_OperatingSystem")For Each objItem in colItemsWscript.Echo objItem.CaptionNextLoop
比您想的還要簡(jiǎn)單,是吧?
聯(lián)系客服