c# - 添加依赖于第一个类型的第二个类型时出错

标签 c# class powershell pscustomobject

我正在使用 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# 语法,因此欢迎所有解决方案。

最佳答案

引入类:

Class Disk{

    [string] $VirtualMachineDiskID;
    [string] $StorageID;
    [string] $StorageIdentifier;
    [string] $DiskFileName;
    [string] $StorageProfileID;
    [int] $CapacityKB;
    [int] $ControllerKey;
    [int] $DeviceKey;
    [int] $DiskMode;
    [int] $UnitNumber;

}

Class VirtualMachine {
    [Disk] $Disks;
    [string] $IPAddress;
    [string] $Name;
    [string] $OSFullName;
    [string] $PowerState;
    [string] $ResourcePoolID;
    [string] $TenantID;
    [string] $UniqueId;
    [string] $VirtualMachineID;
    [int] $NumCPU;
    [int] $NumNic;
    [int] $StorageCapacityAllocatedMB;
    [int] $RamAllocatedMB;
    [bool] $IsRemoved;
    [bool] $IsTemplate;
}

$disk = New-Object Disk
$disk.StorageID = 4711

$vm = New-Object VirtualMachine
$vm.Disks = $disk

关于c# - 添加依赖于第一个类型的第二个类型时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40787037/

相关文章:

python - 是否可以从 Python 中删除类定义?

c# - 使用 regex.replace() 在指定字符数后添加空格的正确语法是什么?

c# - 如何将 Quartz.NET 与 ASP.NET Core Web 应用程序一起使用?

c# - 从日期时间到当前时区的 Unix 纪元时间的转换

c# - PowerShell 和 Google Protocol Buffer 技术

powershell - 使用变量-Path参数运行Powershell命令

powershell - 合并两个哈希表并通过在 Powershell 中分组来获取公共(public)值

c# - 如何使用 C# 在 Excel 中添加数据透视图?

c++ - 为什么它试图发送一个字符数组而不是一个字符串?

jquery - 删除选定的类 jquery