ВОПРОС:
Как поместить содержимое файла в тело JSON Invoke-WebRequest без ненужных метаданных файла?
Моя цель - отправить 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
... он печатает содержимое файла как Iожидается.
Но печать содержимого файла в $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")
... но результат тот же.