我有这个用 VBS 编写的模拟脚本,它当前要求输入计算机名称,如何让它从 txt 列表中提取计算机名称?

I have this impersonat script written in VBS, it currenly asks for a computer name, how do I make it pull the computer name from a txt list?

我有这个用 VBS 编写的模拟脚本。它当前要求输入计算机名称。如何让它从文本列表中提取计算机名称?我希望它自动从文本文件中读取每个计算机名称,而不是询问计算机名称。

这个我试过了,怎么写都不行

Const ForReading = 1
Const ForWriting = 2
Const TriStateUseDefault = -2
strList = "computers.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objList = objFSO.OpenTextFile(strList, ForReading, False, TriStateUseDefault)
arrComputers = Split(objList.ReadAll, vbCrLf)
objList.Close

For Each strComputer In arrComputers
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
    Set objProcess = objWMIService.Get("Win32_Process")

    strCommand = "sc config lanmanserver start= demand"
    strCommand2 = "Net start lanmanserver"

    errReturn = objProcess.Create(strCommand, null, null, intProcessID)

    If errReturn = 0 Then
        WScript.Echo "Lanmanserver was changed to manual: " & intProcessID
    Else
        WScript.Echo "WinRM could not be started due to error: " & errReturn
    End If

    WScript.Sleep 5000 '5 seconds

    errReturn = objProcess.Create(strCommand2, Null, Null, intProcessID)

    If errReturn = 0 Then
        WScript.Echo "The Server Service was started with a process ID: " & intProcessID
    Else
        WScript.Echo "The Server Service could not be started due to error: " & errReturn

这是原代码:

Set objShell = WScript.CreateObject("WScript.Shell")

objcomputer = InputBox("Please Enter a Computer Name to Start the Server Service on.")

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & objComputer & "\root\cimv2")
Set objProcess = objWMIService.Get("Win32_Process")

strCommand = "sc config lanmanserver start= demand"
strCommand2 = "Net start lanmanserver"

errReturn = objProcess.Create(strCommand, Null, Null, intProcessID)

If errReturn = 0 Then
    WScript.Echo "Lanmanserver was changed to manual: " & intProcessID
Else
    WScript.Echo "WinRM could not be started due to error: " & errReturn
End If

WScript.Sleep 5000 '5 seconds

errReturn = objProcess.Create(strCommand2, null, null, intProcessID)

If errReturn = 0 Then
    WScript.Echo "The Server Service was started with a process ID: " & intProcessID
Else
    WScript.Echo "The Server Service could not be started due to error: " & errReturn
End If

我需要它能够通过文本文件插入计算机名称并为每个计算机名称重复。

看来 Ansgar 是对的我不知道我在想什么!!!我尝试了下面的代码并且它有效。谢谢!

Const ForReading = 1
Const ForWriting = 2
Const TriStateUseDefault = -2
strList = "computers.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objList = objFSO.OpenTextFile(strList, ForReading, False, TriStateUseDefault)
arrComputers = Split(objList.ReadAll, vbCrLf)
objList.Close

For Each strComputer In arrComputers
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
Set objProcess = objWMIService.Get("Win32_Process")


strCommand = "sc config lanmanserver start= demand"
strCommand2 = "Net start lanmanserver"

errReturn = objProcess.Create(strCommand, null, null, intProcessID)

 If errReturn = 0 Then
     Wscript.Echo "Lanmanserver was changed to manual: " & intProcessID
 Else
     Wscript.Echo "WinRM could not be started due to error: " & errReturn
 End If

wscript.sleep 5000 '5 seconds

errReturn = objProcess.Create(strCommand2, null, null, intProcessID)

 If errReturn = 0 Then
     Wscript.Echo "The Server Service was started with a process ID: " & intProcessID
 Else
     Wscript.Echo "The Server Service could not be started due to error: " & errReturn
end if
next