检索PowerShell数组并放入ASP.NET C#数组? [英] Retrieve PowerShell array and put in an ASP.NET C# array?

查看:47
本文介绍了检索PowerShell数组并放入ASP.NET C#数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿伙计们,我可以通过ASP.NET C#页面运行PowerShell脚本,并将单值PS变量写入标签。但是,我无法弄清楚如何在ASP.NET C#中将PS阵列转换或转换为多维数组。



这是我到目前为止所拥有的。如果MyVar1是PS中的数组,我如何正确检索数据,将其转换为多维数组,以便我可以绑定到gridview?



我得到无法隐式地将类型''object''转换为''string [*,*]''。存在显式转换(你是否错过了演员?)尝试

  string  [,] arrMultiD = Results; 





这是运行和获取PS的代码结果。

 Runspace runspace = RunspaceFactory.CreateRunspace(); 
runspace.Open();
var shell = PowerShell.Create();
string filePath = Server.MapPath( 脚本/ MyScript.txt);
StreamReader reader = File.OpenText(filePath);
string powerShellCode = reader.ReadToEnd();
reader.Close();

shell.Commands.AddScript(powerShellCode);
var results = shell.Invoke();
var MyVar1 = shell.Runspace.SessionStateProxy.GetVariable( MyVar1);
runspace.Close();





谢谢!

解决方案

< blockquote>我能算出来,测试脚本文件包含2行...


result = Get-Process


结果



 Runspace runSpace = RunspaceFactory.CreateRunspace(); 
runSpace.Open();
string filePath = Server.MapPath( 脚本/ TestScript.txt);
StreamReader reader = File.OpenText(filePath);
string powerShellCode = reader.ReadToEnd();
reader.Close();
var shell = PowerShell.Create();
shell.Commands.AddScript(powerShellCode);
Collection< psobject> results = shell.Invoke();

DataTable tempTable = new DataTable();
tempTable.Columns.Add( Id);
tempTable.Columns.Add( Processname);

foreach (PSObject psObject in results)
{
DataRow row = tempTable.NewRow();
row [ Id] = psObject.Properties [ Id]。Value.ToString();
row [ Processname] = psObject.Properties [ Processname]。Value.ToString();
tempTable.Rows.Add(row);
}

GridView1.DataSource = tempTable;
GridView1.DataBind();
runSpace.Close(); < / psobject >


Hey guys, I am able to run PowerShell scripts via an ASP.NET C# page and write single valued PS variables to a label. However, I can''t figure out how to get or convert a PS array to a multidimensional array in ASP.NET C#.

Here is what I have so far. If "MyVar1" is an array in PS, how do I properly retrieve the data, convert it to a multidimensional array so I can bind into gridview?

I get "Cannot implicitly convert type ''object'' to ''string[*,*]''. An explicit conversion exists (are you missing a cast?)" error when trying

string[,] arrMultiD = Results;



Here is the code to run and get the PS results.

Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
var shell = PowerShell.Create();
string filePath = Server.MapPath("Scripts/MyScript.txt");
StreamReader reader = File.OpenText(filePath);
string powerShellCode = reader.ReadToEnd();
reader.Close();

shell.Commands.AddScript(powerShellCode);
var results = shell.Invoke();
var MyVar1 = shell.Runspace.SessionStateProxy.GetVariable("MyVar1");
runspace.Close();



Thanks!

解决方案

I was able to figure this out, the test script file contains 2 lines...


result = Get-Process


result

Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.Open();
string filePath = Server.MapPath("Scripts/TestScript.txt");
StreamReader reader = File.OpenText(filePath);
string powerShellCode = reader.ReadToEnd();
reader.Close();
var shell = PowerShell.Create();
shell.Commands.AddScript(powerShellCode);
Collection<psobject> results = shell.Invoke();

DataTable tempTable = new DataTable();
tempTable.Columns.Add("Id");
tempTable.Columns.Add("Processname");

foreach (PSObject psObject in results)
{
    DataRow row = tempTable.NewRow();
    row["Id"] = psObject.Properties["Id"].Value.ToString();
    row["Processname"] = psObject.Properties["Processname"].Value.ToString();
    tempTable.Rows.Add(row);
}

GridView1.DataSource = tempTable;
GridView1.DataBind();
runSpace.Close();</psobject>


这篇关于检索PowerShell数组并放入ASP.NET C#数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆