我在C#表单应用程序中运行PowerShell。我想在PowerShell命令中添加多个参数。
但是当我输入第二个AddParameter
电话时,它失败并显示错误:
System.Management.Automation.ParameterBindingException
代码:
PowerShell shell = PowerShell.Create().AddCommand("Get-NetAdapter");
shell.AddParameter("name", "Ethernet*");
shell.AddParameter("InterfaceIndex", "5");
foreach (PSObject result in shell.Invoke())
{
Console.WriteLine("{0,-24}{1}", result.Members["Name"].Value,
result.Members["InterfaceDescription"].Value);
} // End foreach.
看起来它只接受1个参数。
还有一个AddParameters
,但我无法正常工作。
任何人都有这方面的经验吗?
答案 0 :(得分:0)
您无法与public class Converter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
TextBlock content = value as TextBlock;
if(content != null)
{
string text = content.Text;
if(string.IsNullOrEmpty(text))
{
DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(TextBlock.TextProperty, typeof(TextBlock));
if (dpd != null)
dpd.AddValueChanged(content, OnTextChanged);
}
else
{
OnTextChanged(content, EventArgs.Empty);
}
}
return Binding.DoNothing;
}
private void OnTextChanged(object sender, EventArgs e)
{
TextBlock textBlock = sender as TextBlock;
string converterText = textBlock.Text;
//set foreground based on text...
textBlock.Foreground = Brushes.Violet;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
cmdlet同时使用$("#btn_finish").click(function (e) {
e.preventDefault();
...
和name
。这是因为它们属于不同的参数集,因此必须单独使用。
要查看该cmdlet的参数集的详细信息,请参阅此处:https://technet.microsoft.com/en-us/library/jj130867(v=wps.630).aspx
或者在PowerShell中使用InterfaceIndex
。
但是,如果在使用同一参数集中允许的参数时仍然无法添加参数,则可以尝试将这两个参数作为单个命令添加,如下所示(使用Get-NetAdapter
和Get-Help Get-NetAdapter
例如,因为它们在同一参数集中被允许:name
为throttlelimit
}:
ByName
或者您可以使用参数名称和值的字典:
Get-NetAdapter
来源:https://msdn.microsoft.com/en-us/library/dn614674(v=vs.85).aspx