不能在函数内部更新Powershell对象属性



我需要更新一个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解决了这个问题。

最新更新