我正在寻找使用 PowerShell 输出一些类似于 Python 脚本的 JSON:
{ "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" } } }
(忽略上面的右括号,由于某种原因,它不会在此处正确格式化)。
我在 PowerShell 中使用 foreach 循环来按顺序运行每个查询,具体取决于它们需要在哪些数据库上运行。
我知道在 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': {} }
然后使用类似的东西:
options['queries'][filename][database] = '{} rows'.format(len(data))
将数据添加到 Python 字典中。
我尝试过使用嵌套的 PSCustomObjects,但是当在同一个数据库上运行不同的查询时,我最终会发生冲突,因此它试图使用相同的 Key 向 PSCustomObject 添加一个值。我想知道在 PowerShell 中是否有一种很好的“本机”方式来执行此操作,就像在 Python 中一样。