2016-04-29 3 views
3

У меня есть vbscript для вызова сценария PowerShell в надежде вернуть выход PowerShell в графический интерфейс HTA (HTML Application). Прямо сейчас я просто хочу посмотреть, могу ли я вернуть вывод PowerShell в MsgBox в vbscript. Мне не повезло с этим.Как вернуть переменную PowerShell в VBScript

VBScript код:

Set shell = CreateObject("WScript.Shell") 
return = shell.Run("powershell.exe -executionpolicy bypass -noprofile -file pathToScript\PowerShellToVBA.ps1", , true) 
MsgBox return 

PowerShell Код:

Clear-Host 
return 50 

Я пытаюсь сохранить возвращаемое значение очень просто, пока он работает. С этим я бы ожидал, что MsgBox вернет «50», но вместо этого он вернет «0». Любые идеи, что я делаю неправильно?

+1

Я думаю, что 0 является код завершения выполнения Powershell , выступать за успех. Кажется, ваш 'return' вытащил статус выполнения. Вы можете «выйти 50» в powershell, но я не думаю, что это законный способ делать что-то. –

+0

Вы можете посмотреть на это ==> [Получить вывод сценария PowerShell в HTA] (http://stackoverflow.com/questions/35198533/get-output-of-a-powershell-script-in-a -hta/35267951 # 35267951) – Hackoo

ответ

2

Я думаю, что вы просто хотите Выйдите команду, чтобы получить возвращаемое значение:

VBScript

pscommand = ".\myscript.ps1; exit $LASTEXITCODE" 
cmd = "powershell.exe -noprofile -command " & pscommand 
Set shell = CreateObject("WScript.Shell") 
rv = shell.Run(cmd, , True) 
MsgBox "PowerShell returned: " & rv, vbSystemModal 

Powershell

exit 50; 

EDIT # 1

Или, если вы хотите, чтобы захватить возвращение строку:

VBScript

pscommand = ".\myscript2.ps1" 
cmd = "powershell.exe -noprofile -command " & pscommand 
Set shell = CreateObject("WScript.Shell") 
Set executor = shell.Exec(cmd) 
executor.StdIn.Close 
MsgBox executor.StdOut.ReadAll 

Powershell

Write-Output '***SUCCESS***'; 
+0

Сладкий, который заставил его вернуть 50! Теперь это работает только с числовыми значениями? Я изменил выход на строковое значение, и он не работает. – Quanda

+1

. Выход только поддерживает целочисленные возвращаемые значения, но вы можете просто захватить вывод. Я расширил свой ответ, чтобы продемонстрировать. –

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