Powershell WPF 使用文本框输入作为命令

问题描述 投票:0回答:1

正在开发一个使用 azcli 的项目。当我在 WPF 文本框中对命令进行硬编码时,该命令会运行并在输出文本框中返回所需的结果。

但是,当我尝试从文本框中获取用户输入的内容时,没有任何反应。我没有收到任何错误,但也没有得到结果。最多我可以让输出文本框简单地显示我在输入文本框中输入的文本

以下代码有效,正如我在代码中的注释中所述,对命令进行硬编码会产生所需的结果。


function run {
    
#This runs the command and produces the desired result when I click "RunButton"
    $cmdOutput = (az ad user list 2>&1)
    $cmdOutput
    $outputBox.text = $cmdOutput
}

$LoginButton.add_click({login})
$RunButton.add_click({run})

$xamlForm.ShowDialog() | out-null

当我尝试在 RunBox 中使用以下“运行”函数和“az ad user list”cmdlet 时,我的输出框只是显示 (az ad user list 2>&1)

,而不是将其硬编码到变量中
function run {

    $runInput = "(" + $RunBox.Text + " 2>&1)"
    $runOutput = $runInput
    $runOutput
    $outputBox.text = $runOutput
}

我也用 $Runbox.Value.Text 尝试过,但没有成功。

额外的问题,我确信我搞砸了我的 StatusBox try/catch。一旦我点击登录,它总是简单地更新为已连接。

提前欢呼并感谢!

wpf azure powershell command-line-interface
1个回答
0
投票

我确实同意

@Mathias R. Jessen
,并且我使用下面的相同方式使用
script

$rithreader = [System.Xml.XmlReader]::Create([System.IO.StringReader]::new($xaml))
$rithwin = [Windows.Markup.XamlReader]::Load($rithreader)

function RithwikTest {
    $test = $rithwin.FindName("RunBox").Text
    try {
        $testout = Invoke-Expression -Command $test 2>&1
        $rithwin.FindName("OutputBox").Text = $testout
    } catch {
        $rithwin.FindName("OutputBox").Text = "Hello Rithwik Bojja , Error occurred: $_"
    }
}
$rithwin.FindName("RunButton").add_Click({RithwikTest})
$rithwin.ShowDialog() | Out-Null

Output:

enter image description here

是的

@TheMadTechnician
有风险,仅建议单个或本地用户使用。

© www.soinside.com 2019 - 2024. All rights reserved.