Return 使用 Invoke power shell 从 Powershell 脚本输出到 UIPath

Return output from Powershell script to UIPath using Invoke power shell

我正在尝试从 Powershell 脚本的输入框中获取一个值返回到 UI 路径序列。我创建了一个简单的序列作为示例。是的,我知道我可以在 UI 路径中完成这一切,我只是使用一个简单的示例作为尝试和测试它以用于未来用例的方法。这是我的顺序:

我来自 "Read text file" 的文本文件是:

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

UiPath中的activity是这样的:

我在Invoke power 运行 的psCmd shell activity 看起来像这样:

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 回到 UI 路径。任何帮助将不胜感激。谢谢!

你快到了。首先,您的 Powershell 脚本必须 return 一个值。以此为例:

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

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

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

这是正在运行的脚本(请注意,我调用了两次并在第一次提供了 "red":

然后,直接在Invoke Powershellactivity中使用这个脚本即可。请注意,这里最重要的部分是输出 属性 - 在这里,我决定使用字符串数组。当然,由于我们只有 return 一个值,您可以通过访问 output(0).ToString().

来访问用户提供的文本