Удалить участника из объекта PowerShell?

Мне нужно удалить элемент (в частности, NoteProperty) из объекта. Как это сделать?

Ответы

Ответ 1

Select-Object с ExcludeProperty хорош для удаления свойства из коллекции объектов.

Для удаления свойства из одного объекта этот метод может быть более эффективным:

# new object with properties Test and Foo
$obj = New-Object -TypeName PSObject -Property @{ Test = 1; Foo = 2 }

# remove a property from PSObject.Properties
$obj.PSObject.Properties.Remove('Foo')

Ответ 2

Я не думаю, что вы можете удалить из существующего объекта, но вы можете создать отфильтрованный.

$obj = New-Object -TypeName PsObject -Property @{ Test = 1}
$obj | Add-Member -MemberType NoteProperty -Name Foo -Value Bar
$new_obj = $obj | Select-Object -Property Test

или

$obj | Select-Object -Property * -ExcludeProperty Foo

Это позволит достичь того же результата.

Ответ 3

Если это зависит от типа объекта или коллекции, которую вы хотите удалить. Обычно его коллекция (массив) таких объектов, как вы, может получить из "import-csv", которую вы можете сделать довольно легко.

$MyDataCollection = Import-CSV c:\datafiles\ADComputersData.csv
$MyDataCollection
Windows Server : lax2012sql01
IP             : 10.101.77.69
Site           : LAX
OS             : 2012 R2
Notes           : V

Windows Server : sfo2016iis01
IP             : 10.102.203.99
Site           : SFO
OS             : 2012 R2
Notes           : X

Чтобы удалить свойство из каждого из них:

$MyDataCollection | ForEach { $_.PSObject.Properties.Remove('Notes') }

Windows Server : lax2012sql01
IP             : 10.101.77.69
Site           : LAX
OS             : 2012 R2

Windows Server : sfo2016iis01
IP             : 10.102.203.99
Site           : SFO
OS             : 2012 R2