我有这个用 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
我有这个用 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