如何更改Powershell嵌套WMI类属性?

时间:2011-12-02 01:02:52

标签: powershell wmi

假设我将MOF文件定义为:

class TARGET_INFO
{
    [WmiDataId(1),
     MaxLen(31),
     Description(".") : amended
    ] string HardwareId;

    [WmiDataId(2)] uint32 Policy;
};

class DEFAULT_POLICY
{
    [WmiDataId(1),
     read, write,
     Description(".") : amended
    ] uint32 NumberDevices;

    [WmiDataId(3),
     read, write,
     MaxLen(31),
     Description(".") : amended,
     WmiSizeIs("NumberDevices")
    ] TARGET_INFO TargetInfo[];
};

Get-WmiObject -namespace root\wmi -class DEFAULT_POLICY可以给我一个具有数组TargetInfo的实例。 当这个元素的HardwareId等于“blabla”时,我想将TargetInfo元素的一个Policy属性修改为1。 怎么做到这一点? 我尝试了Set-WmiInstance和Put(),但它们都不起作用。我总是有不同的错误。 非常感谢。

1 个答案:

答案 0 :(得分:0)

您应该可以直接设置属性:

foreach( $targetInfo in $defaultPolicyInstance.TargetInfo )
 {
      if( $targetInfo.HardwareId -eq "blahba" )
      {
           $targetInfo.Policy = 1
      }
 }