【发布时间】:2016-11-24 12:58:59
【问题描述】:
我正在使用使用自定义对象的 PowerShell 编写脚本。但棘手的部分是这个自定义对象使用另一个自定义对象作为属性。我正在尝试使用 C# 语法来做到这一点。
当我尝试运行脚本时,我收到了这个错误:
The type or namespace name 'Disk' could not be found (are you missing a using directive or an assembly reference?)
c:\Users\trumpe\AppData\Local\Temp\orydsmyw.0.cs(1) : public class VirtualMachine{
c:\Users\trumpe\AppData\Local\Temp\orydsmyw.0.cs(2) : >>> public Disk Disks;
c:\Users\trumpe\AppData\Local\Temp\orydsmyw.0.cs(3) : public string IPAddress;
有没有办法在 PowerShell 中做到这一点?这是我在一个文件中的课程代码:
Add-Type -Language CSharp @"
public class Disk{
public string VirtualMachineDiskID;
public string StorageID;
public string StorageIdentifier;
public string DiskFileName;
public string StorageProfileID;
public int CapacityKB;
public int ControllerKey;
public int DeviceKey;
public int DiskMode;
public int UnitNumber;
}
"@;
Add-Type -Language CSharp @"
public class VirtualMachine{
public Disk Disks; #<=== This part stops working because it cannot find the type Disk
public string IPAddress;
public string Name;
public string OSFullName;
public string PowerState;
public string ResourcePoolID;
public string TenantID;
public string UniqueId;
public string VirtualMachineID;
public int NumCPU;
public int NumNic;
public int StorageCapacityAllocatedMB;
public int RamAllocatedMB;
public bool IsRemoved;
public bool IsTemplate;
}
"@;
我不限于 C# 语法,因此欢迎所有解决方案。
【问题讨论】:
-
仅供参考,我删除了稍后添加的问题正文中的标签。 meta.stackoverflow.com/questions/280315/tags-in-question-bodies
-
@Matt 好的,我不会再添加它们了。
-
我认为我找到了你正在寻找的东西,这解释了你所做的事情为什么不起作用。这里关于课程的答案也会对你有所帮助。
-
非常感谢您的回答。它对我帮助很大,最重要的是,我找到了另一个使用 C# 语法的解决方案。您所要做的就是将依赖的类放在一个 Add-Type 中,即 Add-Type -Language CSharp @" public class Disk{ public string VirtualMachineDiskID; public string StorageID; } public class VirtualMachine{ public Disk Disks; #
标签: c# class powershell pscustomobject