我正在对我们环境中的服务器进行分析,其中通过PowerShell检索数据,并 for each 服务器创建一个JSON文件.事实证明,有些JSON的格式不正确,我需要遍历所有文件,找到格式不正确的文件,并删除不正确的部分.以下是格式错误的文件的示例:
{
"value": [
{
"Server": "SERVERNAME",
"Name": "SHARE",
"ScopeName": "*",
"Path": "",
"Description": "",
"ShareState": 1,
"AvailabilityType": 0,
"ShareRights": [
],
"ShareSddl": "",
"ShareRoot": [
],
"TotalFileCount": 35,
"TotalDirectoryCount": 47,
"TotalFolderSizeBytes": "",
"TotalFolderSizeInMB": "",
"TotalFolderSizeInGB": "",
"TreeSizeDirFailed": null,
"TreeSizeFileFailed": null,
"TreeErrorHistory": null
}
],
"Count": 10 (This number varies)
}
我需要做的是删除以下部分:
{
"value": [
和
,
"Count": 10 (This number varies)
}
我试过用-replace
和String.Replace()
,但没有成功...上面的部分仍然存在.下面是我所做的一个例子,但仅用于测试,它只侧重于删除结尾部分.我怎样才能着手修复这个问题,这样更换才能正常工作?谢谢!
$Files = Get-ChildItem -path ""
$StartMatch = @"
{
"value":
"@
$EndMatch = @"
,
!!!ROW!!!
}
"@
ForEach ($File in $Files){
Write-Host "■ Checking file: $File"
$Contents = (Get-Content -Path "$File")
if ($Contents.StartsWith($StartMatch)){
Write-Host "Match" -ForegroundColor Green #test print
Write-Host "-Checking EOF... " -NoNewline
if (($Contents | Select-Object -Last 3) -like "*Count*"){
Write-Host "Match" -ForegroundColor Green
$EOFMatch = $EndMatch -replace "!!!ROW!!!", $Contents[$Contents.length - 2]
Write-Host $EOFMatch -ForegroundColor Yellow
$Contents = $Contents -replace $EOFMatch, ""
$Contents #test print
Break #testing only
}
}else{
Write-Host "No match"#test print
}
}