2014-02-07 3 views
0

Я пытаюсь сохранить вывод с objShell.run, а затем отобразить его.Хранить objShell.run в переменной

On Error Resume Next 
Set objShell = CreateObject("WScript.Shell") 
strPermissionsDirValue = "" 
strPermissionsDirValue = objShell.run ("cacls C:\SQL2008") 
WScript.Echo VBTab & strPermissionsDirValue 
strPermissionsDirValue = "" 

Когда я исполняю выше я получаю 0.

Выход должен быть C: \ SQL2008 CREATOR OWNER: (OI) (CI) (IO) F NT AUTHORITY \ SYSTEM: (OI) (CI) F BUILTIN \ Администраторы: (OI) (CI) F

ответ

1

Объект WScript.Shell возвращает номера только в зависимости от статуса выхода приложения, которое вы запустили.

Одним из способов было бы вывести вывод в файл temp. Измените эту строку ..

strPermissionsDirValue = objShell.run ("cacls C:\SQL2008") 

Для этого ..

objShell.run "cmd /k cacls C:\SQL2008 > temp.txt" 

Затем, только что прочитал, что временный файл и в этом случае, процесс в каждой строке вывода CACLS.

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objInputFile = objFSO.OpenTextFile("temp.txt", 1) 

Do While objInputFile.AtEndOfStream = False 
    strLine = objInputFile.ReadLine  
Loop 
+0

Спасибо. Решил пойти с Set DirPermissions = objShell.Exec ("% COMSPEC%/с CACLS C: \ SQL2008") Do Хотя DirPermissions.Status = 0: WScript.Sleep 100: Loop DirPermissionsFolder = DirPermissions.StdOut.ReadAll WScript.Echo DirPermissionsFolder – user3277026

Смежные вопросы