【发布时间】:2016-06-02 10:07:09
【问题描述】:
我在C:\Weblogic\wlserver\server\lib 中有两个文件 weblogic.jar 和 weblogic.policy。使用第一种方法,脚本会找到它们并显示文件名:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Weblogic\wlserver\server\lib")
Set colFiles = objFolder.Files
For Each objFile in colFiles
If(StrComp(objFile.Name, "weblogic.jar", 1) = 0 OR StrComp(objFile.Name, "weblogic.policy", 1) = 0) Then
Wscript.Echo objFile.Name, objFile.Size
End If
Next
当我尝试将 WMI 与 CIM_DataFile 一起使用时,脚本在同一文件夹中找不到任何文件(但在其他文件夹中找到了一些文件):
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colFiles = objWMIService.ExecQuery ("Select Name from CIM_DataFile where FileName = 'weblogic'",, 48)
For Each objFile in colFiles
Wscript.Echo objFile.Name
Next
我在 Windows Server 2012 R2 上,我以管理员身份运行脚本,文件夹 C:\Weblogic 需要管理员权限。
这是 WMI 权限问题吗? 有人已经有这个问题了吗?解决办法是什么?
编辑:
感谢您的回答。
很遗憾,这行不通。我得到相同的结果。 我在同一个脚本上运行 2 方法。我尝试在我的桌面上创建名为 weblogic.jar、weblogic.policy 的测试文件...但 WMI 找不到它们!
也许 WMI 在此服务器上不再正常工作?
这是我的脚本:
If Not WScript.Arguments.Named.Exists("elevate") Then
Wscript.Echo "Run"
CreateObject("Shell.Application").ShellExecute WScript.FullName _
, WScript.ScriptFullName & " /elevate", "", "runas", 1
WScript.Quit
End If
Set objFSO=CreateObject("Scripting.FileSystemObject")
outFile="C:\test.txt"
Set objFileLog = objFSO.CreateTextFile(outFile,True)
objFileLog.Write "Scripting.FileSystemObject :" & vbCrLf
Set objFolder = objFSO.GetFolder("C:\Weblogic\wlserver\server\lib")
Set colFiles = objFolder.Files
For Each objFile in colFiles
If(StrComp(objFile.Name, "weblogic.jar", 1) = 0 OR StrComp(objFile.Name, "weblogic.policy", 1) = 0) Then
Wscript.Echo objFile.Name, objFile.Size
objFileLog.Write " " & objFile.Path & " " & objFile.Size & vbCrLf
End If
Next
objFileLog.Write "winmgmts :" & vbCrLf
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colFiles = objWMIService.ExecQuery ("Select Name from CIM_DataFile where FileName = 'weblogic'",, 48)
For Each objFile in colFiles
Wscript.Echo objFile.Name
objFileLog.Write " " & objFile.Name & vbCrLf
Next
objFileLog.Close
结果是:
Scripting.FileSystemObject :
C:\Weblogic\wlserver\server\lib\weblogic.jar 5541
C:\Weblogic\wlserver\server\lib\weblogic.policy 30888
winmgmts :
c:\oracle\...\templates\wlserver\server\lib\weblogic.policy
c:\oracle\...\wlserver\server\lib\weblogic.policy
c:\oracle\...\sample\config\wls\web-inf\weblogic.xml
我没有在文件夹中获取带有 WMI 的 weblogic 文件: "C:\Weblogic\wlserver\server\lib\" "C:...\桌面\"
【问题讨论】:
-
这将是一个权限问题,请确保您按照@Hackoo 的建议从提升的命令行窗口运行 VBScript。您没有在问题中详细说明如何调用脚本?在使用
cscript.exe调用脚本之前,您需要有一个提升的命令窗口,例如,仅将建议的脚本添加到现有的脚本中是行不通的。作为一个简单的测试,尝试使用Run As Administrator打开cmd.exe,这样它将获得提升的权限。然后运行类似cscript /nologo "path to your script file". -
我在同一个脚本实例中运行 2 个函数(FSO 和 WMI):FSO 可以访问文件,而 WMI 没有列出它们。我从一开始就使用“以管理员身份运行”的cmd。此外,我在我的桌面上创建了一些带有 weblogic 名称的文件,它们不需要管理员权限,但 WMI 找不到它们。我尝试了“cscript /nologo”,但结果和以前一样。