我正在尝试使用域在多台计算机上创建任务,并从输入文件中提供脚本。
它可以是VBS或BATCH,但我无法让它工作。 这就是我到目前为止所做的:
InputFile = "c:\scripts\input\workstations.Txt"
Const OverWriteFiles = True
Set oShell = WScript.CreateObject("WSCript.shell")
Set objFile = objFSO.OpenTextFile(InputFile)
Set myLog = objFSO.OpenTextFile("C:\scripts\output\log.log", 2)
Do Until objFile.AtEndOfStream
strComputer = objFile.ReadLine
On Error Resume Next
oShell.run "cmd schtasks /Create /U lumcnet\user/p wachtwoord /SC DAILY /ST 05:02 /TN ""Herstart"" /TR ""\""C:\PACS Beheer Tools\Werkstation herstarten\Notification.HTA\"" /F /RL HIGHEST /S" strComputer
If Err Then myLog.WriteLine strComputer
On Error Goto 0
Loop
myLog.Close
MsgBox "Done"
和
FOR /f %%a IN (c:\scripts\input\workstation.txt) DO (
schtasks /Create /U lumcnet\pacs-report /p report /SC DAILY /ST 05:02 /TN "Herstart" /TR "\"C:\PACS Beheer Tools\Werkstation herstarten\Notification.HTA\"" /F /RL HIGHEST /S 2-%%a
if ERRORLEVEL 1 echo %%a>>"c:\scripts\output\log.log"
)
GOTO :EOF
答案 0 :(得分:1)
您在该行中有一个虚假的尾随strComputer
:
oShell.run "cmd ... /S" strComputer
在/S
之后添加一个空格,并在字符串和变量之间添加一个连接运算符:
oShell.run "cmd ... /S " & strComputer
答案 1 :(得分:1)
如果您的路径有空格,则需要在命令的开头和结尾放置一个\"
.....(您已经拥有空间,并且我拿出来 - 对不起:))
您还缺少cmd和strComputer变量之间的&
符号。
您尚未定义objFSO。
无论如何,这对我来说似乎有用了:
InputFile = "c:\scripts\input\workstations.Txt"
Const OverWriteFiles = True
Set oShell = WScript.CreateObject("WSCript.shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(InputFile)
Set myLog = objFSO.OpenTextFile("C:\scripts\output\log.log", 2)
Do Until objFile.AtEndOfStream
strComputer = objFile.ReadLine
On Error Resume Next
oShell.run "schtasks /Create /U lumcnet\user /p wachtwoord /SC DAILY /ST 05:00 /TN herstart /TR ""\""C:\admin folder\workstation reboot\Notification.HTA\"""" /F /RL HIGHEST /S " & strComputer
If Err Then myLog.WriteLine strComputer
On Error Goto 0
Loop
myLog.Close
MsgBox "Done"
免责声明:我绝不会建议像这样存储用户名和密码。有权访问底层系统的任何人都可以枚举凭据。
我希望有所帮助。