将PowerShell参数从dictionary更改为C#方法中的字符串列表

将PowerShell参数从dictionary更改为C#方法中的字符串列表,c#,C#,我有一个方法可以调用PowerShell命令和参数。我这样定义它: using(PowerShell ps = PowerShell.Create()) { ps.AddScript( contentScript ); foreach (var item in parameters) { ps.AddParameter(item.Key, item.Value.xyz); } } 公共字符串运行脚本(字符串内容脚本、字典参数) { 使

我有一个方法可以调用PowerShell命令和参数。我这样定义它:

using(PowerShell ps = PowerShell.Create())
{
     ps.AddScript( contentScript );

     foreach (var item in parameters)
     {
         ps.AddParameter(item.Key, item.Value.xyz);
     }
}
公共字符串运行脚本(字符串内容脚本、字典参数)
{
使用(PowerShell ps=PowerShell.Create())
{
ps.AddScript(contentScript);
ps.AddParameters(参数);
我的PowerShell命令参数定义如下:

using(PowerShell ps = PowerShell.Create())
{
     ps.AddScript( contentScript );

     foreach (var item in parameters)
     {
         ps.AddParameter(item.Key, item.Value.xyz);
     }
}
[参数]
公共列表属性{get;set;}=new List();

如何更改我的
RunScript
方法,以便在参数中只获取传递的字符串列表?

要将字典转换为列表,您只需迭代字典并将每个项添加到新列表中。如果您需要EntityProperty中的一些信息,您可以像这样访问它:

List<string> parameterList = new List<string>();
foreach (var item in parameters)
{
     parameterList.Add(item.Key + item.Value.xyz);
}

创建powershell时,您使用以下方式:(例如)

或者你使用字典:

IDictionary parameters = new Dictionary<String, String>();
parameters.Add("name", "Ethernet*");
parameters.Add("ThrottleLimit", 5);

PowerShell shell = PowerShell.Create();
   shell.AddCommand("Get-NetAdapter");
   shell.AddParameters(parameters);

使用
properties
作为arg

命令行是参数之间带有空格的字符串。因此,使用string.Join(“,parameters)如果需要帮助,您必须显示属性的内容我只需要参数列表中的项值,如果我写入parameterList.Add(item.Value);我得到错误是的,这是因为字典中的值if类型为EntityProperty,而列表仅接受字符串。如果我使用value.StringValue?是的,例如。作为参数,您只能使用字符串,因此您需要以某种方式将EntityProperty转换为字符串。我不知道这种类型,因此我无法帮助您。是的,因此在参数中呃,我只希望这些值作为strings@ZZZSharePoint对不起,我不明白,您必须有属性和值才能创建prowershell…?请显示属性的内容..这将更容易理解,所以在字典中我有这样的值{[PnKey,{Pest}]},{[Id,{r_001}]}我只想将Pest和r_001作为我的参数并将其传递给我的PowerShell我从未使用过,但您可以尝试我的固定答案我获取values.ToString并将其添加到列表中,并将此列表作为参数传递
public string RunScript(string contentScript, List<string> parameters)
    {
        using (PowerShell ps = PowerShell.Create())
        {
            ps.AddScript(contentScript);
            ps.AddParameters(parameters);