【问题标题】:Concatenate CSV results into a single variable with PowerShell使用 PowerShell 将 CSV 结果连接到单个变量中
【发布时间】:2019-04-25 02:48:30
【问题描述】:

我正在尝试使用 PowerShell 在 Google Chrome 中将我们公司的 URL 部署为“托管书签”。为了使用 IE 收藏夹完成同样的事情,我创建了一个 CSV 文件,其中包含分别包含名称和 URL 的 2 列。我导入该 CSV,然后我有一个 foreach 语句,它将遍历每一行并在用户的收藏夹中创建一个 .url 文件。为了最大程度地减少我的员工的工作量,我想为 Chrome 书签使用相同的 CSV 文件,因此我们只需维护一个文件。这样我们就不需要修改和重新部署脚本了,我们可以将 CSV 文件发布到网络共享上,以便根据需要进行更新。

Chrome 有一个注册表值,可以让我做我需要做的事情。以 3 个搜索引擎为例,我知道如何“硬编码”并使其工作。

$PolicyPath = 'Registry::HKEY_LOCAL_MACHINE\Software\Policies'
$GoogleKey = 'Google'
$ChromeKey = 'Chrome'
$ManagedBookmarks = '[ { "name": "Bing", "url": "http://www.bing.com" }, { "name": "Google", "url": "http://www.google.com" },{ "name": "Yahoo", "url": "http://www.yahoo.com" } ]'

Set-ItemProperty -Path "$($PolicyPath)\$($GoogleKey)\$($ChromeKey)" -Name 'ManagedBookmarks' -Value "$ManagedBookmarks" -Type String

有没有办法进行 foreach 并将结果连接到单个变量中?这将导致以下格式:

$ManagedBookmarks = "[ { "name:" "$($line.name)", "url": "$($line.url)"}, { "name:" "$($line+n.name)", "url": "$($line+n.url)"} ]"

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    如果您有如下所示的 CSV(称为 csv.csv)文件,您只需导入 CSV 以创建对象数组,然后将整个内容转换为 JSON 对象。

    名称、网址
    必应,http://www.bing.com
    谷歌,http://www.google.com
    雅虎,http://www.yahoo.com

    $ManagedBookmarks = Import-Csv csv.csv | ConvertTo-Json
    

    根据LotPings Recommendation,如果您不喜欢该输出中的换行和/或回车以及额外的间距,您可以使用-Compress 开关。

    $ManagedBookmarks = Import-Csv csv.csv | ConvertTo-Json -Compress
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多