向现有Powershell对象添加字符串属性的正确方法?

Los*_*het 3 powershell powershell-4.0 powershell-5.0

因此,例如,我有一个自定义对象$server。我想创建一个新属性,$server.output以包含大小不同的多行输出。最好的方法是什么?关于如何向对象添加简单的字符串属性,网络上似乎没有任何直接的信息?

仅供参考,我使用的是Powershell v4,但也可以为v5提供解决方案。

The*_*le1 5

除了重新创建对象或确保属性在对象初始化时存在之外,还必须使用Add-Member在上创建新属性pscustomobject

# alternatively, use `-Force` on `Add-Member`
if (-not ($obj | Get-Member -Name output))
{
    $obj | Add-Member -MemberType NoteProperty -Name output -Value ''
}
Run Code Online (Sandbox Code Playgroud)

v3 +支持:

$obj | Add-Member -NotePropertyName output -NotePropertyValue '' -Force
Run Code Online (Sandbox Code Playgroud)

添加多个成员:

$obj | Add-Member -NotePropertyMembers @{output = ''; output1 = ''} -Force
Run Code Online (Sandbox Code Playgroud)

Add-Member