VBscript WMI не находит файлы, FSO делает

У меня есть два файла weblogic.jar и weblogic.policy в C:\Weblogic\wlserver\server\lib, При первом способе скрипт находит их и отображает имя файла:

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

Я не получаю файлы weblogic с WMI в папках: "C:\Weblogic\wlserver\server\lib\" "C:...\Desktop\"

1 ответ

Попробуйте что-то вроде этого, чтобы запустить скрипт с правами администратора:

If Not WScript.Arguments.Named.Exists("elevate") Then
  CreateObject("Shell.Application").ShellExecute WScript.FullName _
    , WScript.ScriptFullName & " /elevate", "", "runas", 1
  WScript.Quit
End If
'Your code goes here 
Другие вопросы по тегам