Я ищу использование PowerShell для вывода некоторого JSON, который выглядит следующим образом для использования со скриптом Python:
{ "run_date": "2020-08-27", "total_queries": 4, "number_results": 3, "number_warnings": 1, "number_errors": 5, "build_url": "https://some-url.com", "queries":{ "query_a":{ "database_a": "102 rows", "database_b": "Error: See pipeline logs for details" }, "query_b": "No results", "query_c": { "database_a": "Warning: Number of results exceeded maximum threshold - 6509 rows", "database_c": "Error: See pipeline logs for details", "database_d": "Error: See pipeline logs for details" } } }
(Игнорируйте указанную выше закрывающую скобку, она по какой-то причине не отформатируется здесь должным образом).
Я использую цикл foreach в PowerShell для последовательного выполнения каждого из этих запросов в зависимости от того, в каких базах данных они должны выполняться.
Я знаю, что в Python я могу создать шаблон JSON следующим образом:
options = { 'run_date': os.environ['SYSTEM_PIPELINESTARTTIME'].split()[0], 'total_queries': 0, 'number_results': 0, 'number_warnings': 0, 'number_errors': 0, 'build_url': 'options = { 'run_date': os.environ['SYSTEM_PIPELINESTARTTIME'].split()[0], 'total_hunts': 0, 'number_results': 0, 'number_warnings': 0, 'number_errors': 0, 'build_url': 'https://some-url.com', 'queries': {} }
а затем используйте что-то вроде:
параметры ['запросы'] [имя файла] [база данных] = '{} строки'.format (len (данные))
Для добавления данных в словари Python.
Я пробовал использовать вложенные объекты PSCustomObject, но у меня возникает конфликт, когда в одной базе данных выполняются разные запросы, поэтому он пытается добавить значение в PSCustomObject с тем же ключом. Я хотел бы знать, есть ли хороший «собственный» способ сделать это в PowerShell, как в Python.
ConvertTo-Json
из объекта PowerShell?PS C:\> $json.queries.query_c.database_a = "600 rows"
, а затемPS C:\> PS C:\> $json | ConvertTo-Json
- person Andrew Ryan Davis   schedule 27.08.2020