我将创建一个JWT令牌,并将其放在GET请求的头中,以验证我的租户.然后我用

Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/deviceHealthScripts" -Method GET -Headers $headers  -ContentType 'application/json' -ErrorAction "continue"

这将检索主动修正脚本对象.只是我不知道实际的代码是什么格式.我应该看看我的PowerShell脚本,但不是,只是很多随机字符.这是JSON文件的一部分.

"detectionScriptContent": "JGVudmlyb25lbW50YWxSZWdwYXRoID0gJ1JlZ2lzdHJ5OjpIS0VZX0xPQ0FMX01BQ0hJTkVcU3lzdGVtXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xcU2Vzc2lvbiBNYW5hZ2VyXEVudmlyb25tZW50Jw0KDQokZGVzaXJlZFByb3BlcnR5ID0gIkFSQ0dJU19MSUNFTlNFX0ZJTEUiDQokdmFsID0gIjI3MDA5QGF6ci1saWMtMDEiDQoNCiMgJGRlc2lyZWRQcm9wZXJ0eSA9ICJUTVAiDQojICR2YWwgPSAiQzpcV0lORE9XU1xURU1QIg0KDQoNCiMgVGVzdC1QYXRoIC1QYXRoICdIS0xNOlxTeXN0ZW1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxTZXNzaW9uIE1hbmFnZXJcRW52aXJvbm1lbnRcUGF0aCcNCiRkZXNpcmVkUHJvcGVydHlFeGlzdHMgPSAoJG51bGwgLW5lIChHZXQtSXRlbVByb3BlcnR5IC1QYXRoICRlbnZpcm9uZW1udGFsUmVncGF0aCAtTmFtZSAkZGVzaXJlZFByb3BlcnR5IC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlKSkNCg0KV3JpdGUtT3V0cHV0ICRkZXNpcmVkUHJvcGVydHlFeGlzdHMNCg0KaWYoJGRlc2lyZWRQcm9wZXJ0eUV4aXN0cyl7DQoNCiAgICBXcml0ZS1PdXRwdXQgIkRldGVjdGVkIFByb3BlcnR5ICRkZXNpcmVkUHJvcGVydHkgZXhpc3RzLiINCg0KfWVsc2V7IFdyaXRlLU91dHB1dCAiJGRlc2lyZWRQcm9wZXJ0eSBkb2VzIG5vdCBleGlzdC4gRXhpdCAxIjsgZXhpdCAxIH0NCg0KJGRlc2lyZWRQcm9wZXJ0eVZhbHVlID0gR2V0LUl0ZW1Qcm9wZXJ0eVZhbHVlIC1QYXRoICRlbnZpcm9uZW1udGFsUmVncGF0aCAtTmFtZSAkZGVzaXJlZFByb3BlcnR5IC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlDQoNCmlmKCRkZXNpcmVkUHJvcGVydHlWYWx1ZSAtZXEgJHZhbCl7DQoNCiAgICBXcml0ZS1PdXRwdXQgIiRkZXNpcmVkUHJvcGVydHkgdmFsdWUgbWF0Y2hlcyAkdmFsLiBFeGl0IDAiOyBFeGl0IDA7DQoNCn1lbHNleyBXcml0ZS1PdXRwdXQgIiRkZXNpcmVkUHJvcGVydHkgdmFsdWUgRE9FUyBOT1QgbWF0Y2hlcyAkdmFsLiBFeGl0IDEiOyBFeGl0IDE7IH0NCg==",
    "remediationScriptContent": "DQoNCiRlbnZpcm9uZW1udGFsUmVncGF0aCA9ICdIS0xNOlxTeXN0ZW1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxTZXNzaW9uIE1hbmFnZXJcRW52aXJvbm1lbnQnDQoNCiRkZXNpcmVkUHJvcGVydHkgPSAiQVJDR0lTX0xJQ0VOU0VfRklMRSINCiR2YWwgPSAiMjcwMDlAYXpyLWxpYy0wMSINCg0KDQpmdW5jdGlvbiBjcmVhdGVSZWdpc3RyeVByb3BlcnR5ew0KDQogICAgJGcgPSBHZXQtSXRlbVByb3BlcnR5IC1QYXRoICRlbnZpcm9uZW1udGFsUmVncGF0aCAtTmFtZSAkZGVzaXJlZFByb3BlcnR5IC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlDQoNCiAgICBpZigkZyAtZXEgJG51bGwpew0KICAgICAgICBOZXctSXRlbVByb3BlcnR5IC1QYXRoICRlbnZpcm9uZW1udGFsUmVncGF0aCAtTmFtZSAkZGVzaXJlZFByb3BlcnR5IC1WYWx1ZSAkdmFsIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIHwgb3V0LW51bGwNCiAgICB9ZWxzZXsNCiAgICAgICAgU2V0LUl0ZW1Qcm9wZXJ0eSAtUGF0aCAkZW52aXJvbmVtbnRhbFJlZ3BhdGggLU5hbWUgJGRlc2lyZWRQcm9wZXJ0eSAtVmFsdWUgJHZhbCAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IG91dC1udWxsDQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBSZWdpc3RyeUl0ZW1QYXNzZXN7DQogICAgJHJlZ1Byb3BlcnR5T2JqZWN0ID0gR2V0LUl0ZW1Qcm9wZXJ0eSAtUGF0aCAkZW52aXJvbmVtbnRhbFJlZ3BhdGggLU5hbWUgJGRlc2lyZWRQcm9wZXJ0eSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQ0KICAgICRwcm9wRXhpc3RzID0gKCRudWxsIC1uZSAkcmVnUHJvcGVydHlPYmplY3QpDQoNCiAgICBpZigkcHJvcEV4aXN0cyAtZXEgJHRydWUpew0KDQogICAgICAgICRwcm9wVmFsdWUgPSBHZXQtSXRlbVByb3BlcnR5VmFsdWUgLVBhdGggJGVudmlyb25lbW50YWxSZWdwYXRoIC1OYW1lICRkZXNpcmVkUHJvcGVydHkgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUgDQogICAgICAgIA0KICAgICAgICByZXR1cm4gKCRwcm9wRXhpc3RzIC1hbmQgKCRwcm9wVmFsdWUgLWVxICR2YWwpKQ0KICAgIH0NCiAgICAjaWYgaXQgYnlwc3NlcyB0aGUgY29uZGl0aW9uYWwgc2NvcGUsIHRoZW4gcHJvcEV4aXN0cyBtdXN0IGJlIGZhbHNlLg0KICAgIHJldHVybiAkcHJvcEV4aXN0cw0KfQ0KDQppZigoUmVnaXN0cnlJdGVtUGFzc2VzKSAtZXEgJGZhbHNlKXsNCg0KICAgIFdyaXRlLU91dHB1dCAiQ3JlYXRpbmcgdGhlIHByb3BlcnR5ICRkZXNpcmVkUHJvcGVydHkiDQogICAgY3JlYXRlUmVnaXN0cnlQcm9wZXJ0eQ0KfQ0KDQppZihSZWdpc3RyeUl0ZW1QYXNzZXMpew0KICAgIA0KICAgIFdyaXRlLU91dHB1dCAiUmVnaXN0ZXkgaXRlbSBhbiB2YWx1ZSBjaGVja3Mgb3V0LiBFeGl0IDAiOyBFeGl0IDA7DQoNCn1lbHNleyBXcml0ZS1PdXRwdXQgIlNvbWV0aGluZyB3ZW50IHdyb25nLkV4aXQgMSI7IGV4aXQgMTsgfQ0KDQoNCg==",

微软的文档说它是二进制的,但事实并非如此

推荐答案

属性值是Base64个编码字节,代表UTF-8编码字符串.

  • 如果给定的字符串由看似随机的字符组成,这些字符主要由数字、大写字母和小写字母组成,可以 Select 后跟一个或两个=,那么它很可能代表Base64编码的数据.

  • Base64能够对any个二进制数据(字节数组)进行编码,因此在摘要中无法确定what是否被编码:

    • 然而,考虑到 case 中属性的名称包含"ScriptContent",可以合理地假设text正在被编码.
    • 这就留下了问题what character encoding是用来创建Base64编码的二进制数据的.UTF-8是一种常见的字符编码,它确实是在您的 case 中使用的.

您可以按如下方式(使用简单的示例输入字符串)将它们(转换为纯文本.NET字符串):

$bytes = [Convert]::FromBase64String('SGkgdGhlcmUu')
[Text.Encoding]::Utf8.GetString($bytes) # -> 'Hi there.'

encode:

$bytes = [Text.Encoding]::Utf8.GetBytes('Hi there.')
[Convert]::ToBase64String($bytes) # -> 'SGkgdGhlcmUu'

Json相关问答推荐

Jolt Transformation—如果子对象为空,则将父对象更新为空

Jolt转换问题—使用键查找匹配对象

合并二维数组的Jolt表达式

使用单元和非单元版本反序列化Rust中的枚举,而无需编写自定义反序列化程序

Allof Indide的JSON模式之一

当有2个嵌套数组时展平复杂的JSON

简单条形图和有序分类中条形图的 colored颜色 梯度

当由.sh脚本执行时,AWS查询字符串不会提取任何数据

Jolt:数组中两个字符串的连接

在 python 中循环 JSON 数组

带有 API 测试的 Typescript JSON 模式验证

jq :当路径可变时更新 json 内容

如何在不使用 Newtonsoft.JSON 的情况下序列化/反序列化

阅读 JSON 正文 Firebase 云函数

是否可以在有条件的情况下将 json 对象转换为 JOLT 中的数组?

如果有 1 个元素,如何防止 ConvertFrom-Json 折叠嵌套数组

如何使用 Serde 使用顶级数组反序列化 JSON?

有没有办法使用 Jackson 将 Map 转换为 JSON 表示而不写入文件?

来自 Gson 的 JSON 字符串:删除双引号

有没有一种快速的方法可以在文本编辑器中将 JavaScript 对象转换为有效的 JSON?