使用Invoke Power Shell将Powershell脚本的输出返回到UIPath

时间:2018-10-26 22:53:46

标签: powershell uipath

我正在尝试从Powershell脚本的输入框中获取一个值,并将其返回给UI路径序列。我创建了一个简单的序列作为示例。是的,我知道我可以在UI路径中完成所有操作,我只是使用一个简单的示例作为尝试在将来的用例中进行测试的方法。这是我的顺序:

sequence

“阅读文本文件”中的我的文本文件是:

$test = "Desktop/PassingArgs2of2.ps1 -Message foo"
Invoke-Expression -Command $test

UiPath中的活动如下:

Read Text File

我在Invoke power shell活动中运行的psCmd如下所示:

Param(
[parameter(Mandatory=$true)]
[string]
$Message)

try{

    $Global:fooVar = $null

    function Test-InputBox(){
        [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
        $msg = "fooMsg"
        $title = "fooTitle"
        $localtest = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)
        $Global:fooVar = $localtest.ToString()
    }
    Test-InputBox
}
catch{}

我尝试在Invoke Power Shell的PowerShellVariables中将fooVar设置为等于testLocal,然后编写它,但这没用。

fooVar

基本上我想让fooVar返回UI路径。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

您快到了。首先,您的Powershell脚本必须返回一个值。以这个为例:

[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')

$title = 'Your title goes here'
$msg   = 'Your favorite color:'

$text = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)
return $text

这是运行中的脚本(请注意,我两次调用它,并且第一次提供“红色”:

powershell messagebox

然后,直接在Invoke Powershell活动中使用此脚本。请注意,这里最重要的部分是Output属性-在这里,我决定使用字符串数组。自然,由于我们仅返回单个值,因此您只需访问output(0).ToString()即可访问用户提供的文本。

invoke ps in UiPath