VBScript Capture StdOut de ShellExecute

2

Estou tentando executar o seguinte snippet de código como parte de uma ferramenta para reunir e registrar alguns diagnósticos de sistema pertinentes. O objetivo deste snippet é reunir o resultado da execução do comando:

vssadmin list writers

O snippet é o seguinte:

'   Set WshShell = CreateObject("WScript.Shell")
'   WScript.Echo sCurPath & "\vsswritercheck.bat"
'   Set WshShellExec = WshShell.Exec("elevate.cmd cmd.exe /c " & sCurPath & "\vsswritercheck.bat")

Set oShell = CreateObject("Shell.Application")
oShell.ShellExecute "cmd.exe", sCurPath & "\vsswritercheck.bat", , "runas", 1
vsswriter = VSSWriterCheck

Select Case oShell.Status
    Case WshFinished
        strOutput = oShell.StdOut.ReadAll
    Case WshFailed
        strOutput = oShell.StdErr.ReadAll
End Select
WScript.Echo strOutPut
vsswriter = strOutPut

Com o primeiro trecho de código (comentado), posso executar o comando e capturar stdout a partir do arquivo de lote. No segundo código recortado, não consigo capturar stdout.

Eu preciso poder executar o script em lote com permissões Elevadas, por isso estou procurando um compromisso entre a funcionalidade dos dois.

Não consigo executar todo o script de chamada no modo elevado devido a restrições de outras funcionalidades.

Estou procurando ideias sobre como adicionar essa saída ao meu log, já que estou ficando sem opções que estão no escopo dos scripts básicos.

    
por Joe 24.09.2012 / 16:37

2 respostas

1
strcmd="cmd /c " & sCurPath & "\vsswritercheck.bat"
return = wshshell.run(strcmd , 0 , true)
if return=0 then
    blnSuccess = True
else
    blnSuccess = False
end if
    
por 26.09.2012 / 17:02
0

Que tal usar os dois?

Use esse código que você comentou, que funciona no modo não elevado, e adicione um teste extra onde, se direitos elevados forem necessários, o script chamará a si mesmo usando ShellExecute (), fazendo a chamada subsequente para Exec () para já ter direitos elevados e ainda capturar stdout.

É um pouco maluco, mas sem esforço.

    
por 02.01.2013 / 17:40