Powershell Get-SCVirtualDiskDrive 生成​​公共语言规范 (CLR) 错误

Powershell Get-SCVirtualDiskDrive generates a Common Language Specification (CLR) error

当 运行 VirtualMachineManager 模块中的 Get-SCVirtualDiskDrive 命令没有特别特殊的方式时。

Get-SCVirtualDiskDrive -VMMServer $VMMServer -VM $VMName

我收到一个通用语言特定 (CLS) 错误

format-default : 字段或 属性: "Lun" for type: "Microsoft.SystemCenter.VirtualMachineManager.VirtualDiskDrive" 仅在字母大小写上与字段不同 或 属性:"LUN"。该类型必须符合公共语言规范 (CLS)。 + CategoryInfo : NotSpecified: (:) [格式默认], ExtendedTypeSystemException + FullyQualifiedErrorId : NotACLSComplaintProperty,Microsoft.PowerShell.Commands.FormatDefaultCommand

根据我在网上可以找到的关于 .NET 和 PowerShell 的一些提示,我很难尝试让这个命令起作用

这行代码有效

$method1 = [Microsoft.SystemCenter.VirtualMachineManager.VirtualDiskDrive].GetMethod("get_LUN")

我真的希望这行代码能够 return 但没有,它 return 没什么...

$method2 = [Microsoft.SystemCenter.VirtualMachineManager.VirtualDiskDrive].GetMethod("get_Lun")

除了让这条线工作之外,脚本的目的是扩展虚拟机的主要 VHD。我真的很希望有人能在这里提供帮助,这不是我第一次 运行 遇到这个问题,但这一次,这是不可避免的。

问题是因为我运行正在使用 Powershell 版本 4,而 virtualmachinemanager 模块只兼容版本 2。

留两个选项

  • 卸载 Window 管理框架以将 Powershell 降级到版本 2
  • 使用 Start-Process 运行 作为 Powershell 版本 2 的脚本

Start-Process -File PowerShell.exe -Argument "-Version 2 -noprofile -noexit -file test.ps1 $params"

不太理想,我希望有人可以改进这个答案