gpt4 book ai didi

powershell - 如何使用包含来自文件的数据的 JSON 正文发送 Invoke-WebRequest

转载 作者:行者123 更新时间:2023-12-03 21:24:05 25 4
gpt4 key购买 nike

问题:
如何将文件的内容放在 Invoke-WebRequest 的 JSON 正文中,而没有不需要的文件元数据?

我的目标是像这样发送一个 HTTP 请求:

Invoke-WebRequest -Uri http://localhost:4321/updatefile `
-ContentType 'application/json' `
-Method POST `
-Body $Body

在哪里:
PS C:\Users\User1234> $Body = ConvertTo-Json @(
@{filename='file1.txt';filecontent=$file1},
@{filename='file2.txt';filecontent=$file2}
)

PS C:\Users\User1234> $file1 = Get-Content "C:\path\to\file1.txt"
PS C:\Users\User1234> $file2 = Get-Content "C:\path\to\file2.txt"

当我打印变量时:
PS C:\Users\User1234> echo $file1
aaaaa
PS C:\Users\User1234> echo $file2
bbbbb

...它按照我的预期打印文件的内容。
但是在 $Body 中打印文件内容会显示更多我不需要的信息:
PS C:\Users\User1234> echo $Body
{
"filename": "file1.txt",
"filecontent": {
"value": "aaaaa",
"PSPath": "C:\\path\\to\\file1.txt",
"PSParentPath": "C:\\path\\to",
"PSChildName": "file1.txt",
"PSDrive": {
"CurrentLocation": "Users\\User1234",
"Name": "C",
"Provider": "Microsoft.PowerShell.Core\\FileSystem",
"Root": "C:\\",
"Description": "OS",
"MaximumSize": null,
"Credential": "System.Management.Automation.PSCredential",
"DisplayRoot": null
},
"PSProvider": {
"ImplementingType": "Microsoft.PowerShell.Commands.FileSystemProvider",
"HelpFile": "System.Management.Automation.dll-Help.xml",
"Name": "FileSystem",
"PSSnapIn": "Microsoft.PowerShell.Core",
"ModuleName": "Microsoft.PowerShell.Core",
"Module": null,
"Description": "",
"Capabilities": 52,
"Home": "C:\\Users\\User1234",
"Drives": "C D Y"
},
"ReadCount": 1
}
}

我尝试使用以下方法设置 $file1$file2 值:
$file1 = [IO.File]::ReadAllText("C:\path\to\file1.txt")    
$file2 = [IO.File]::ReadAllText("C:\path\to\file2.txt")

……但结果是一样的。

最佳答案

先设置$body,再转换成json。

$body = @(
@{
filename = 'file1.txt'
filecontent = [io.file]::ReadAllText("1.txt")
}
)

$body | ConvertTo-Json

或者
$body = @(
@{
filename = 'file1.txt'
filecontent = (get-content 1.txt) -join "`r`n"
}
)

$body | ConvertTo-Json

输出
{
"filename": "file1.txt",
"filecontent": "1\r\n2\r\n3\r\n"
}

原因很简单, get-content 返回一个数组, convertto-json 完成了它的工作,但可能不是您所期望的。

关于powershell - 如何使用包含来自文件的数据的 JSON 正文发送 Invoke-WebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53663665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com