I have a Powershell Object[] ($myObject), I am looking to trim off sci_ from any object property name that begins with sci_ but keep the value of the properties
$myObject.psobject.Properties does not seem to reveal the property names but found $myObject | Get-Member -MemberType Properties | Select-Object Name does, but havent worked out a way to rename or trim off the sci_ from the property names?
CodePudding user response:
The $myObject variable contains an array of objects, so loop over each object in the array to be able to inspect its properties via .psobject:
$myArray = $myObject |ForEach-Object {
# prepare dictionary to hold the (renamed) properties
$newProperties = [ordered]@{}
foreach($property in $_.psobject.Properties){
# remove any `sci_` prefix
$newName = $property.Name -replace '^sci_'
$newProperties[$newName] = $property.Value
}
# create new object based on the renamed properties
[pscustomobject]$newProperties
}
$myArray now contains an array of objects just like $myObject, except all the objects have had the sci_ prefix removed from all relevant property names

