使用 PowerShell 将书签添加到 Microsoft Edge 书签栏

问题描述 投票:0回答:2

我想向 Edge 书签栏添加一个书签。

通过探索 Edge 用户数据,我似乎可以遵循这种方法:

$bk=Get-Content "$env:APPDATA\..\Local\Microsoft\Edge\User Data\Default\Bookmarks"  | ConvertFrom-Json
$bk.roots.bookmark_bar.children += $newbk
$bk | ConvertTo-Json | Add-Content  "$env:APPDATA\..\Local\Microsoft\Edge\User Data\Default\Bookmarks"

对于现有书签,值如下:

$bk.roots.bookmark_bar.children[0]
 
date_added     : 13301408662223632
date_last_used : 0
guid           : d9ab901f-c7b2-4daa-8f22-31147db571ac
id             : 7
name           : Microsoft – Cloud, Computers, Apps & Gaming
show_icon      : False
source         : user_copy
type           : url
url            : https://www.microsoft.com/en-us

我不知道,我应该如何准确格式化

newbk
对象。
我还应该重新计算
$bk.checksum
吗?

powershell browser microsoft-edge bookmarks favorites
2个回答
2
投票

这就是我到目前为止所得到的,感谢用户 约瑟夫Zzett42.

## Bookmark file
$bmpath="$env:APPDATA\..\Local\Microsoft\Edge\User Data\Default\Bookmarks"
 
## New bookmark 
$newbk = [pscustomobject][ordered]@{guid=New-Guid; name="Test Bookmark"; show_icon=$false;
                    source="user_copy"; type="url";
                    url="https://www.microsoft.com/en-us"}
 
## New bookmarklet 
$url = @'
javascript: (() => {
  alert('Hello, World!');
})();
'@
$newbkjs = [pscustomobject][ordered]@{guid=New-Guid; name="Bookmarklet";
                      show_icon=$false; source="user_copy"; type="url"; url=$url}
 
## Read
$bk=Get-Content $bmpath | ConvertFrom-Json

## Add
$bk.roots.bookmark_bar.children += $newbk
$bk.roots.bookmark_bar.children += $newbkjs
$bk.psobject.Properties.Remove('checksum')

## Save
$bk | ConvertTo-Json  -Depth 4 | Set-Content $bmpath

限制
我不知道如何让更改立即生效。
如果 Edge 正在运行,您需要关闭并重新打开它。 如果 Edge 未运行,您需要启动、关闭并再次启动。

补充
我还没有尝试过这个,但是对于更复杂的书签,可能需要 URL 编码。

$url = [System.Web.HttpUtility]::UrlEncode($url) 

0
投票

为了响应已接受的答案,您可以将启动/重新启动添加到边缘进程作为书签添加的一部分,以强制其作为选项生效,尽管不可否认并不理想。这也可以用于 Chrome,路径非常相似。

"$env:APPDATA\..\Local\Google\Chrome\User Data\Default\Bookmarks"
© www.soinside.com 2019 - 2024. All rights reserved.