我想向 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
吗?
这就是我到目前为止所得到的,感谢用户 约瑟夫Z和 zett42.
## 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)
为了响应已接受的答案,您可以将启动/重新启动添加到边缘进程作为书签添加的一部分,以强制其作为选项生效,尽管不可否认并不理想。这也可以用于 Chrome,路径非常相似。
"$env:APPDATA\..\Local\Google\Chrome\User Data\Default\Bookmarks"