要求是使用Microsoft SCCM等工具在多个工作站上执行某个脚本。
此脚本是执行EXE' C:\ ugs \ n \ nx5 \ UGII \ env_print.exe '在每个工作站上。这将使用以下参数完成两次:
脚本的设计必须使上述输出应存储在工作站的某个位置,SCCM可以从中读取值。
为了达到这个要求,我写了下面的VBscript:
On Error Resume Next
Const HKEY_LOCAL_MACHINE = &H80000002
Dim WshShell, fso, file, objRegistry, strKeyPath, strSysDrive, outputFile, strTEMP, file2, oTxtFile, oTxtFile2
Dim ComExec, strSysRoot, strComputer, outputFile2, EXEpath, ComExec2, return, return2, text, text2, CMDPath
strComputer = "."
Set WshShell = Wscript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strSysDrive = WshShell.ExpandEnvironmentStrings("%SystemDrive%")
strSysRoot = WshShell.ExpandEnvironmentStrings("%SystemRoot%")
EXEpath = strSysDrive & "\ugs\nx5\UGII\env_print.exe"
CMDPath = strSysRoot & "\system32\cmd.exe"
'-----------------------SET TXT FILE LOCATION-----------------------
outputFile = strSysDrive & "\env_print_m.txt"
outputFile2 = strSysDrive & "\env_print_n.txt"
'-----------------------CREATE TEXT FILES-----------------------
Set oTxtFile = fso.CreateTextFile(outputFile)
Set oTxtFile2 = fso.CreateTextFile(outputFile2)
'-------COMMAND TO EXECUTE AND REDIRECT OUTPUT TO TXT FILE-------
ComExec = CMDPath & " /c " & EXEpath & " -m >> " & outputFile
ComExec2 = CMDPath & " /c " & EXEpath & " -n >> " & outputFile2
'-----------------------EXEUTE COMMANDS-----------------------
return = WshShell.Run(ComExec, 0, true)
return2 = WshShell.Run(ComExec2, 0, true)
'-----------------------READ OUTPUT FROM TXT FILES-----------------------
Set file = fso.OpenTextFile(outputFile, 1)
text = file.ReadAll
file.Close
Set file2 = fso.OpenTextFile(outputFile2, 1)
text2 = file2.ReadAll
file.Close
'-----------------------WRITE OUTPUT VALUES TO REGISTRY STRING VALUES-----------------------
strKeyPath = "SOFTWARE\env_print_Ver"
objRegistry.CreateKey HKEY_LOCAL_MACHINE, strKeyPath
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\env_print_Ver\env_print_m", text, "REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\env_print_Ver\env_print_n", text2, "REG_SZ"
'-----------------------DELETE TXT FILES-----------------------
fso.DeleteFile outputFile
fso.DeleteFile outputFile2
此脚本使用所需参数执行EXE,并将输出存储到2个不同的TXT文件( env_print_m.txt 和 env_print_n.txt )。
然后从文本文件中读取这些字符串值,并将它们作为注册表字符串值存储在以下位置,以便SCCM可以读取它。
但是,在运行Windows XP的工作站上执行此脚本时,输出不会重定向到TXT文件。也没有显示错误。
我在我的智慧结束。请帮忙。
答案 0 :(得分:0)
由于您的第一个输出文件是不已命名/指定outputFile
,请更改
Set file = fso.OpenTextFile("outputFile", 1)
到
Set file = fso.OpenTextFile(outputFile, 1)
(与第二个相同)
尝试访问错误命名的文件应该使用错误消息中止脚本。您通过EVIL global" On Error Resume Next"切换了此功能。摆脱它,看看"输出是否没有被重定向'由错误消息解释。
添加了wrt评论:
如果像
那样的话WshShell.Run ComExec, 0, true
'不起作用'你应该:
哦,我忘了: