当我在powershell v2中创建对象时,我无法访问powershell成员属性,这些属性将与PowerShell V3一起使用。例如如果我在v3中创建下面的对象,
$Services = @();
$item = @{};
$item.Name = "ServiceName";
$item.Action = 2;
$item.ActionTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss";
$obj = New-Object PSObject -Property $item;
$Services = $Services + $obj
我可以访问$ services.Action,它将是2,无论是在PowerShell v2上它都是空白的。
任何帮助?
感谢
答案 0 :(得分:3)
这实际上是因为您将对象包装在数组中。
在v2中,要获取对象数组的所有Action
属性,您可以执行以下操作:
$Services | ForEach-Object { $_.Action }
# or
$Services | Select-Object -ExpandProperty Action
在PowerShell v3中,不再需要这样做:
$Services.Action
将自动执行相同的操作。
此外,如果您刚刚完成$obj.Action
,它也可以在v2中工作(仅针对那个对象)。
答案 1 :(得分:0)
根据您是要列出所有操作还是仅列出特定索引,您可以使用:
$Services | Select -ExpandProperty Action
或(在第一次服务的情况下):
$Services[0].Action