json - 在 PowerShell 2.0 中编辑 JSON 数据
问题描述
我有一个脚本,它应该写在 json 首选项数据中,以更改不同扩展的自动打开。
我从这里得到的第一部分,但是这个脚本使用ConvertFrom-Json
并且ConvertTo-Json
仅在 Powershell >= 3.0 中受支持。
然后我在这里找到了一个模仿这个Cmdlet的函数。现在我的问题是它根本不起作用,我不知道为什么,因为我没有收到任何错误或其他东西。
$neededFileExt = "2er"
$path = $env:LOCALAPPDATA + "\Google\Chrome\User Data\Default\Preferences"
$prefContent = Get-Content $path -Encoding utf8
我认为接下来的两个功能是它无法正常工作的原因。
function ConvertTo-Json([object] $prefcontent) {
add-type -assembly system.web.extensions
$prefs = new-object system.web.script.serialization.javascriptSerializer
return $prefs.Serialize($prefcontent)
}
function ConvertFrom-Json([object] $prefcontent) {
add-type -assembly system.web.extensions
$prefs = new-object system.web.script.serialization.javascriptSerializer
return , $prefs.DeserializeObject($prefcontent)
}
$prefs = ConvertFrom-Json $prefContent
if (($prefs | gm).name -contains "download") {
if (($prefs.download | gm).name -contains "extensions_to_open") {
if ($prefs.download.extensions_to_open) { #if it has value, grab the contents
[string[]]$existingFileExt =
$prefs.download.extensions_to_open.tostring().split(":")
}
else {
[string[]]$existingFileExt = $null
}
}
else {
#if extensions_to_open doesn't exist, create it
$prefs.download | Add-Member -MemberType NoteProperty -Name extensions_to_open -Value ""
[string[]]$existingFileExt = $null
}
foreach ($ext in $neededFileExt) {
if ($existingFileExt -notcontains $ext) { #only add the necessary extension if it isn't already there
[string[]]$existingFileExt += $ext
}
}
$prefs.download.extensions_to_open = $existingFileExt -join ":"
ConvertTo-Json $prefs -Compress -depth 100 | Out-File $path -Encoding utf8
}
将不胜感激任何建议或帮助。
- 我的问题不是这篇文章的重复,因为我使用了这篇文章中的函数,但我的代码不相关
解决方案
PowerShell 版本 2 不允许像您一样直接从对象列表中扩展属性:
($prefs | gm).name -contains "download"
对于 PowerShell 版本 2,您应该使用Select-Object -ExpandProperty
cmdlet/参数:
($prefs | gm | Select -ExpandProperty Name) -contains "download"
推荐阅读
- php - 为什么我得到一个未定义的变量,只有 6 个变量中的 1 个,而其他所有变量都有效?
- web - 网页部署
- php - 我想用 PHP 自动重命名文件
- vhdl - 其他泛型参数使用的 vhdl 泛型参数(错误:泛型“参数”在此处不可见)
- javascript - 从下拉菜单选择填充文本字段
- python - 如何按名称从 Glue DynamicFrame 中检索字段值
- javascript - AngularJS ng-click没有触发ui-gmap-window中的功能
- git - 如何按 git 拓扑顺序从第二父母中排除第一父母?
- git - Git 钩子与 git 笔记?
- google-apps-script - 使用触发器根据用户提交的时间发送电子邮件