関連するシステム診断を収集してログに記録するツールの一部として、次のコードスニペットを実行しようとしています。このスニペットの目的は、コマンドを実行した結果を収集することです。
vssadmin list writers
スニペットは次のとおりです。
' 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
最初のコードスニペット(コメントアウト)を使用して、コマンドを実行し、バッチファイルからstdoutをキャプチャできます。切り取られた2番目のコードでは、stdoutをキャプチャできません。
昇格されたアクセス許可でバッチスクリプトを実行できる必要があるため、2つの機能の妥協点を探しています。
他の機能の制限により、通話スクリプト全体を昇格モードで実行できません。
基本的なスクリプトの範囲内にあるオプションが不足しているため、この出力をログに追加する方法についてのアイデアを探しています。
strcmd="cmd /c " & sCurPath & "\vsswritercheck.bat"
return = wshshell.run(strcmd , 0 , true)
if return=0 then
blnSuccess = True
else
blnSuccess = False
end if
両方使ってみませんか?
コメントアウトしたコードを使用します。これは非昇格モードで機能し、昇格された権限が必要な場合、スクリプトが代わりにShellExecute()を使用して自分自身を呼び出し、Exec()への後続の呼び出しで既に昇格された権利とまだstdoutをキャプチャします。
少し風変わりですが、楽です。