我需要使用PowerShell執行驗證,並根據結果在WPF應用程序中執行操作。我知道我可以從PowerShell修改TextBlocks,但是當我嘗試從PowerShell中修改WPF變量的值時,什麼都不會發生。WPF和PowerShell - 將變量從PS傳遞到C#或修改值
下面是一個例子。
MainWindow.xaml:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Test"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="74,76,0,0" TextWrapping="Wrap" Text="false" VerticalAlignment="Top" Height="177" Width="371"/>
</Grid>
</Window>
MainWindow.xaml.cs:
using System;
using System.Windows;
using System.Windows.Controls;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Text.RegularExpressions;
using System.IO;
namespace Test
{
public partial class MainWindow : Window
{
private bool exists = false;
public MainWindow()
{
InitializeComponent();
// Setup PowerShell Environment
Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.ThreadOptions = PSThreadOptions.UseCurrentThread;
runSpace.Open();
runSpace.SessionStateProxy.SetVariable("exists", exists);
PowerShell ps = PowerShell.Create();
ps.Runspace = runSpace;
string check = "$exists = true";
ps.AddScript(check);
// Execute
ps.Invoke();
runSpace.Close();
if (exists == true)
{
textBlock.Text = "It is true!";
}
}
}
}
我如何修改C#/ WPF變量在PowerShell中做一些驗證後?這甚至有可能嗎?
我不想爲臨時變量創建隨機文本塊/標籤/文本框。
TRUE;在PowerShell中沒有任何特殊含義,嘗試改變'check'字符串' 「$存在= $真」' –
試了一下。不起作用。 也試過使用:[System.Boolean] :: true,它也不起作用。 感謝您的答覆。 –
運行腳本以獲取值後使用'GetVariable'。 –