Google chrome 使用Powershell删除Chrome书签

Google chrome 使用Powershell删除Chrome书签,google-chrome,powershell,Google Chrome,Powershell,我正在powershell中寻找一种方法来删除书签并将其添加到chrome中。Chrome书签存储在如下格式的JSON文件中,实际书签存储在$data.root.bookmark_bar.children对象中。我试过这样的方法: $data = Get-content $chromebookmarkfile | out-string | ConvertFrom-Json $data | Where-Object {$data.Roots.Bookmark_bar.children.Na

我正在powershell中寻找一种方法来删除书签并将其添加到chrome中。Chrome书签存储在如下格式的JSON文件中,实际书签存储在$data.root.bookmark_bar.children对象中。我试过这样的方法:

$data = Get-content $chromebookmarkfile | out-string | ConvertFrom-Json    
$data | Where-Object {$data.Roots.Bookmark_bar.children.Name -Notmatch "^NA"} | Convertto-JSON | Out-File "C:\Users\Name\Desktop\bookmarkupdated.js"
$json = Get-Content $chromebookmarkfile -Raw | ConvertFrom-Json
$json.Roots.Bookmark_bar.children = @($json.Roots.Bookmark_bar.children | where { $_.name -notmatch "^NA" })
$json | ConvertTo-Json -Depth 10 | Out-File "C:\Users\Name\Desktop\bookmarkupdated.js" -Encoding UTF8
它似乎删除了所有的书签

> {    "checksum": "f8d56bf82388c64d566247e1f510d0c8",    "roots": {
>       "bookmark_bar": {
>          "children": [ {
>             "date_added": "13186673111751399",
>             "id": "5",
>             "meta_info": {
>                "last_visited_desktop": "13189831127309905"
>             },
>             "name": "Facebook",
>             "type": "url",
>             "url": "https://www.facebook.com/"
>          }],
>          "date_added": "13186673028532299",
>          "date_modified": "13189832329106862",
>          "id": "1",
>          "name": "Bookmarks bar",
>          "type": "folder"
>       },
>       "other": {
>          "children": [  ],
>          "date_added": "13186673028532314",
>          "date_modified": "0",
>          "id": "2",
>          "name": "Other bookmarks",
>          "type": "folder"
>       },
>       "synced": {
>          "children": [  ],
>          "date_added": "13186673028532317",
>          "date_modified": "0",
>          "id": "3",
>          "name": "Mobile bookmarks",
>          "type": "folder"
>       }    },    "version": 1 }

非常感谢您的帮助。

您可以这样做:

$data = Get-content $chromebookmarkfile | out-string | ConvertFrom-Json    
$data | Where-Object {$data.Roots.Bookmark_bar.children.Name -Notmatch "^NA"} | Convertto-JSON | Out-File "C:\Users\Name\Desktop\bookmarkupdated.js"
$json = Get-Content $chromebookmarkfile -Raw | ConvertFrom-Json
$json.Roots.Bookmark_bar.children = @($json.Roots.Bookmark_bar.children | where { $_.name -notmatch "^NA" })
$json | ConvertTo-Json -Depth 10 | Out-File "C:\Users\Name\Desktop\bookmarkupdated.js" -Encoding UTF8

这就像一个创建文件的梦。然而,当我强行创建文件的文本时,我遇到了类似的问题……当我用脚本创建的新文件替换当前书签文件时,Chrome不会加载任何书签。但是,如果我打开Chrome创建的原始书签文件,覆盖脚本创建的书签文件中的所有文本,它就会工作并删除正确的书签。这个让我抓狂。这几乎就像Chrome应用程序在文件上留下指纹一样。我修复了它。看起来Chrome将文件编码为UTF-8,powershell的默认值有所不同。这修复了问题:$json | ConvertTo json-Depth 10 | Out文件“d:\tmp\bookmarkupdated.js”-编码UTF8@Thomas很好的发现。我已经在回答中包括了这一点。