我正在阅读一本关于 WMI 和 Powershell 的书,它解释了如何在 Powershell 中创建自定义类。它涉及编写一些 C# 代码和add-type
命令。当我尝试使用+=
命令在对象中创建多个条目时,出现以下错误:
Method invocation failed because [pawobject] doesn't contain a method named 'op_Addition'.
At line:23 char:14
+ $MyObjects += <<<< $MyObject
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
我用来创建类的代码是这样的:
$source = @"
public class pawobject
{
public string Description { get; set; }
public string Name { get; set; }
public int Number { get; set;}
}
"@
并将其添加到 PowerShell 我使用以下内容:
Add-Type $source -Language CSharpVersion3
创建值的代码是这样的:
$MyObject = New-Object -TypeName pawobject -Property @{
Name = "MyObject5";
Number = 200;
Description = "Take3"
}
这将创建一个$MyObject
. 我的问题就是从这里来的。我尝试使用多个条目创建对象,如下所示:
$MyObjects += $MyObject
但我收到上述错误。我试过了
$MyObjects = $MyObjects + $MyObject
我在网上环顾四周,并尝试将以下代码添加到public class
:
public static string Add(string a, string b) {
return (a + b);
}
但这似乎只适用于数字。我对 C# 一点也不熟悉,所以我什至不确定从哪里开始寻找修复这个错误。我可以看到这非常有用,因为我总是在我的环境中创建新对象。能够定义我们自己的类型将是一个巨大的优势,尤其是能够控制可以将哪些类型的数据放入每个属性中。提前感谢您,祝您有美好的一天!
编辑:让我解释一下我想要结果做什么。
我希望能够这样声明:
$MyObject = New-Object -TypeName pawobject -Property @{
Name = "MyObject";
Number = 100;
Description = "Take1"
}
当我得到输出时,$MyObject
我得到了这个:
Description Name Number
----------- ---- ------
Take1 MyObject 100
然后我希望能够声明这一点:
$MyObjects += $MyObjects
最后$MyObjects
得到这个:
Description Name Number
----------- ---- ------
Take1 MyObject 100
Take2 MyObject5 200
基本上添加(不确定添加两组对象的技术术语)$MyObject
到$MyObjects