【发布时间】:2014-08-28 12:31:10
【问题描述】:
我开发了一个 powershell 脚本,它生成一个 JSON 文件,该文件试图使用 JQuery 进行解析。
var mydata = jQuery.parseJSON(w3wp);
w3wp = '[{"Pid" : "6724" , "Apppool" : "myapppool1" , "Usage" : "229.328125"},{"Pid" : "6808" , "Apppool" : "myapppool2" , "Usage" : "152" }]';
当 JSON 数据像上面那样在一行中时,没有发现任何问题,脚本运行良好。 如果 json 数据的格式如下所示,我会收到“w3wp 中的未定义错误”。
w3wp = '[{"Pid" : "6724" , "Apppool" : "myapppool1" , "Usage" : "229.328125"},
{"Pid" : "6808" , "Apppool" : "myapppool2" , "Usage" : "152" }]';
上面的表示是实时场景中的数据非常少,应用程序池的数量很大,并且在 2.0 中使用 power-shell 自动换行并且 JSON 文件存在问题。有什么办法可以格式化这个 Json 文件,以便我可以用它来解析?
根据要求,这里是powershell脚本
$host.UI.RawUI.BufferSize = new-object System.Management.Automation.Host.Size 5512,100
function get-apppool {
[regex]$pattern="-ap ""(.+)"""
$contentx="w3wp = '["
gwmi win32_process -filter 'name="w3wp.exe"' | % {
$name=$_.name
$cmd = $pattern.Match($_.commandline).Groups[1].Value
$procid = $_.ProcessId
$cpuper = get-process | where-object {$_.id -like $procid} | select -Expand CPU
$contentx = $contentx + "{""Pid"" : ""$procid"" , ""Apppool"" : ""$cmd"" , ""Usage"" : ""$cpuper"" }"
$contentx = $contentx + ","
}
$contentx = $contentx -replace ".$"
$contentx = $contentx + "]';"
write-host -nonewline $contentx > dsdf.json
}
get-apppool
【问题讨论】:
-
它是回车的问题吗?
-
我不确定,我正在寻找一种将这些分成多行的方法
-
嗯,。尽管使用了 System.Management.Automation.Host.Size,但我无法在 powershell 中打印单行,但该值仍然会变形,并且输出文件有多行无法解析。如果有办法拆分这些,那么我会在 powershell 中实现这个逻辑来格式化 JSON 文件。
-
你的代码没有意义......嵌套
script标签?并且通过标题为“text/javascript”的脚本标签引用 JSON 文件是错误的形式。应该是<script type="application/json" src="dfdsf.json">。 -
我该下班了,所以我要回家了,但是如果早上没有其他人有的话,我会尽快与您联系 PowerShell 脚本部分。
标签: javascript json powershell