在 PowerShell 中,PSObject
是一个基础类,用于表示 PowerShell 中的对象。每个 PSObject
都有一个属性集合,这些属性可以通过添加新的 NoteProperty
来扩展。当你向 PSObject
添加一个新的属性时,如果该属性的名称与现有的属性名称相同,PowerShell 会自动将新属性追加到集合中,并且新属性的名称会变成原始名称加上一个递增的数字。
PSObject
的一个属性。PSProperty
,用于存储简单的键值对。问题: 当你尝试向 PSObject
添加一个已存在的属性时,新属性的名称变成了原始名称加上一个递增的数字。
原因: 这是 PowerShell 的设计行为,以避免属性名称冲突。当检测到同名属性时,PowerShell 会自动为新属性生成一个唯一的名称。
如果你希望避免属性名称的自动更改,可以采取以下措施:
$myObject = New-Object PSObject
$propertyName = "MyProperty"
if (-not ($myObject.PSObject.Properties.Name -contains $propertyName)) {
$myObject | Add-Member -MemberType NoteProperty -Name $propertyName -Value "SomeValue"
} else {
Write-Warning "Property '$propertyName' already exists on the object."
}
Hashtable
),它允许键重复。$myHashTable = @{}
$propertyName = "MyProperty"
# 添加或更新属性
$myHashTable[$propertyName] = "SomeValue"
通过这些方法,你可以更好地控制 PSObject
的属性添加过程,避免不必要的名称更改。
领取专属 10元无门槛券
手把手带您无忧上云