쉘의 명령에 대해 PSEXEC을 사용하는 몇몇 서버의 디스크 상태를 가져 와서 테이블에 추가하려고합니다. 그러나 나는 쉘 결과에서 캡션 만 얻는다. 여기 PsExec를 Shell.Exec()을 사용하여 MS Access에서 실행할 때 결과를 성공적으로 가져올 수 있습니까?
내 코드입니다 :Option Compare Database
Option Explicit
Const svrUname = "username"
Const svrPass = "password"
Const ForReading = 1
Sub First()
Dim svr(2, 1) As String
svr(0, 0) = ""
svr(0, 1) = "server name"
svr(1, 0) = "PSEXEC \\(IPADD) -u " & svrUname & " -p " & svrPass "
svr(1, 1) = ""
Dim i As Integer
For i = 0 To 1
Call ShellRun(svr(i, 0) & "WMIC logicaldisk get size, caption, " _
& "freespace", svr(i, 1))
Next
End Sub
Public Sub ShellRun(sCmd As String, svrName As String)
' Run a shell command, returning the output as a string
Dim oShell As Object
Dim oExec As Object
Dim oOutput As Object
Dim a As String
' Run command
Set oShell = CreateObject("Wscript.Shell")
Set oExec = oShell.Exec(sCmd)
Set oOutput = oExec.StdOut
' handle the results as they are written to and read from the StdOut object
Dim sInfo As String
Dim sLine As String
While Not oOutput.AtEndofStream
sLine = oOutput.Readline
Call EXTRACTINFO(sLine, svrName)
a = a & sLine
SKIP:
Wend
MsgBox a
oExec.Terminate
End Sub
MS 액세스에서 실행할 때이 결과를 얻을 기대했다 것 같다 무엇
문제?
코드가 컴파일되지 않습니다. 'svrUname'과 같은 변수가 있기 때문에 모듈에서'Option Explicit'을 놓친 것 같습니다. – Gustav
옵션 뒤에 선언했습니다. 내 코드에는 Option Compare Database와 Option Explicit가 있습니다. –
PSEXEC를 사용하지 않고 "WMIC logicaldisk get caption, size, freespace"를 표시하면 완전히 표시되고 acess는 전체 결과를 읽을 수 있습니다. –