我需要更新一个PS对象属性。
$myObject = [PSCustomObject]@{
Name="Fill Me In" }
Write-Output $myObject.Name
$myObject.Name = "Robert Anderson"
Write-Output $myObject.Name
但是当我在函数中放置相同的代码时,我得到一个错误:
$myObject = [PSCustomObject]@{
Name="Fill Me In" }
function Update-Name {
param
(
[Object[]]$WorkItem
)
Write-Output $WorkItem.Name
$WorkItem.Name = "Robert Anderson"
Write-Output $WorkItem.Name
}
Update-Name -WorkItem $myObject
错误是:
> Fill Me In
> The property 'Name' cannot be found on this object. Verify that the property exists and can be set.
> + $WorkItem.Name = "Robert Anderson"
> + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> + CategoryInfo : InvalidOperation: (:) [], RuntimeException
> + FullyQualifiedErrorId : PropertyAssignmentException
> Fill Me In
我的错误是将参数设置为期望对象数组,而实际上我只传递单个对象。在
注释的帮助下,将参数更改为[Object]$WorkItem
解决了这个问题。