使用PowerShell

时间:2019-04-24 17:29:50

标签: powershell csv

我正在尝试使用PowerShell在Google Chrome中将我们的公司URL部署为“托管书签”。为了使用IE收藏夹完成相同的操作,我创建了一个CSV文件,该文件包含2列,分别包含名称和URL。我导入该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)"} ]"

1 个答案:

答案 0 :(得分:1)

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

名称,URL
必应,http://www.bing.com
Google,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