Я пытаюсь добавить настраиваемое свойство к встроенному типу PowerShell, а затем преобразовать объект в Json. Проблема, с которой я сталкиваюсь, заключается в том, что ConvertTo-Json не будет преобразовывать настраиваемое свойство, которое я добавляю. Например,ConvertTo-Json не может преобразовать пользовательские свойства, добавленные во встроенные типы
$Proc = Get-Process explorer
$Proc.Modules | %{
$_ | Add-Member NoteProperty MyCustomProperty "123456" -PassThru
}
$Proc.Modules[0].MyCustomProperty -eq "123456"
# Returns true
$Json = ConvertTo-Json ($Proc.Modules) -Depth 4
$Json -match "123456"
# Returns false. Expect it to be true
Edit: Если я использую "SELECT *" с ConvertTo-Json, то он работает. Например.
$Json = ConvertTo-Json ($Proc.Modules | select *) -Depth 4
$Json -match "123456"
# Returns true
Может ли кто-нибудь объяснить, почему это происходит?
PowerShell v2 не включает командлет ConvertTo-Json. Если вы используете какую-то пользовательскую реализацию, то вы должны указать, какой из них. – PetSerAl
Исправлено. Проблема все еще возникает во всех версиях PS> = 3.0 – arwan
Бывает, что 'ConvertTo-Json' просматривает пользовательские свойства только тогда, когда видит' PSObject'. – PetSerAl