PowerShell передает объект PSCUSTOM в json

Я думаю, что это как-то связано с тем, что он проходит через лазурную автоматизацию...

Вот что я делаю:

$tBody = @{
    'caller'=$caller # this is just a string '[email protected]'
    'pscustomobject' = $pscustomobject # this is a pscustom object
    }        
$passToAction = [pscustomobject]@{
    paramblock = $paramBlock # this is a pscustom object and one of the objects is another pscustomobject called pscustomobject which is a pscustomobject that was convertto-csv -notypeinformation converted
}
$passToActionJSON = $passToAction| ConvertTo-Json -Depth 99

Короче говоря, с другой стороны... Я делаю столько преобразований из-json, сколько могу. Но в итоге я получаю строку, которая выглядит так:

$b.paramblock.pscustomobject
@{TimeGenerated=2020-12-22T23:22:17.527Z; protocol=Kerberos; AuthServer=stuff; IpAddress=suff; NonExistentUser=stuff; TargetDomainName=
stuff; vmName=stuff}
@{TimeGenerated=2020-12-22T23:22:17.527Z; protocol=Kerberos; AuthServer=stuff; IpAddress=suff; NonExistentUser=stuff; TargetDomainName=
stuff; vmName=stuff}
@{TimeGenerated=2020-12-22T23:22:17.527Z; protocol=Kerberos; AuthServer=stuff; IpAddress=suff; NonExistentUser=stuff; TargetDomainName=
stuff; vmName=stuff}

У кого-нибудь есть идея, как превратить это обратно во что-то полезное? Чего я действительно хочу, так это обратно в pscustomobject. Если у вас есть лучший способ отправить его, отлично, но я работаю в лазурной автоматизации, поэтому не обещаю, что какой-либо класс .net будет там.

Довольно запутанно... Что такое $b? Куда уходит $tbody?. Попробуйте построить минимальный воспроизводимый пример в своем вопросе. Смотрите также: как задать хороший вопрос

iRon 23.12.2020 09:39

В любом случае, чтобы получить представление о том, как должно выглядеть ваше выражение PowerShell для создания вашей конкретной строки json, попробуйте это $Object = ConvertFrom-Json $Json (-AsHashTable), а затем ConvertTo-Expression $Object

iRon 23.12.2020 09:39

Не показывая, откуда берутся все неопределенные переменные и что они должны содержать, я очень сомневаюсь, что кто-то сможет дать вам ответ на этот вопрос.

Theo 23.12.2020 14:47

(Согласитесь с комментариями выше) .. Что такое $caller тип и значение переменной? Что такое тип и значение переменной $pscustomobject? Что такое тип и значение переменной $paramBlock? Ваша «другая сторона» выглядит как массив [PSCustomObject], но в вашем примере не показано использование назначений или объявлений свойств TimeGenerated, protocol, AuthServer, IpAddress или vmName.

leeharvey1 23.12.2020 16:01
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
159
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, вот рабочий процесс, который у меня был

-> $pscustomobject =
--> something = something
--> something2 = ($pscustomobject | convertto-json)
--> something3 = something3

-> $newpscustomobject =
--> paramblock = $pscustomobject

-> $newpscustomobject | convertto-json -depth 99

это превратило его в обычный хлам

Короче говоря, держите каждый pscustomobject на двух уровнях, иначе powershell его поднимет

        $paramBlock = @()
        $paramBlock = [pscustomobject]@{
            ticket_body = $ticket_body
            ticket_short_description = $subject
            category = 'stuff'
            subcategory = 'Other'
            assignment_group = 'stuff'
            csvname = 'stuff.csv'
            location = 'waco'
        }
        $passToAction = [pscustomobject]@{
            paramblock = $paramBlock # pscustomobject
            csvattachment = $eventsQueryResults #pscustomobject
        }
        $passToActionJson = $passToAction | ConvertTo-Json -Depth 99
        Invoke-AutomationWatcherAction -Message $subject -Data $passToActionJson

Другие вопросы по теме