我正在开展一个项目,让基于Windows的机器运行定时的powershell脚本,将主机状态作为JSON结构化数据文件进行POST。目标是使相同的脚本能够在任何Windows机器上运行,而不必手动输入每个服务器的变量值,例如主机名、IP地址等。
$hn = hostname
$ip = ipconfig
echo $hn
echo $ip
$params = '{
"host": "$(hn)",
"service": "APP_NAME",
"annotation": "Service is looking dope!",
“ip": "$(ip)"
}'
Invoke-WebRequest -Uri http://yoursite.com:5550/ -Method POST -ContentType "application/json" -Body $params
#Invoke-RestMethod -Uri http://yoursite.com:5550/ -Method POST -ContentType "application/json" -Body $params
结果我得到了以下输出的变化(请注意主机名和IP变量保持不变):
HOSTNAME1
1.1.1.1
'{
"host": "$(hn)",
"service": "APP_NAME",
"annotation": "Service is looking dope!",
“ip": "$(ip)"
}'
我希望输出结果如下所示:
HOSTNAME1
1.1.1.1
'{
"host": "HOSTNAME1",
"service": "APP_NAME",
"annotation": "Service is looking dope!",
“ip": "1.1.1.1"
}'
我尝试了以下网站提到的建议:
我尝试了单引号和双引号的组合,以及使用@{}、@'{和附加到参数上(例如"param +="或"param =+")等方法,但都没有成功,或者可能是我遗漏了什么。
我能够从单个命令转换为它们的JSON对应项中获取详细信息。
Get-WmiObject -Class Win32_ComputerSystem -Property Name | ConvertTo-Json
但我很难将两个不同的信息合并成一个JSON文件。此外,我很难提取特定的信息并填充JSON文件,例如:
(Get-WmiObject -Class Win32_ComputerSystem -Property Name).Name | ConvertTo-Json
如果我使用了不正确的术语或没有遵循任何帖子指南,我深表歉意。如果我违反了任何条件,请告诉我,我将进行必要的更改以遵守它们。如果我没有清楚地表达或错过了任何重要信息,请原谅。提前感谢您的帮助,非常感激。
"..."
字符串 - 相比之下,'...'
字符串被视为_字面量_。要在"..."
中嵌入"
,请使用\
"`。 - mklement0