json内容

时间:2018-03-31 16:26:24

标签: json powershell

.js文件的内容。 Program.js

[
        { "ProgramName":"Chrome", "FilePath":"\"\\\\PCNAME\\c$\\Users\\USERNAME\\Desktop\\Work Notes\\Programs\\Google\\ChromeSetup.exe\""},
        { "ProgramName":"Notepad ++", "FilePath":"\"\\\\PCNAME\\c$\\Users\\USERNAME\\Desktop\\Work Notes\\Programs\\Notepad ++\\npp.7.3.3.Installer.exe\"" }

    ]

我不善于解释,但我试图为json文件的每一行获取ProgramName,并且名称是否与$computernames数组中的一个名称相匹配。然后使用FilePath的相应programname来运行安装程序。 这是我到目前为止所做的。

$json = (Get-Content "\\PCNAME\c$\Users\USERNAME\Desktop\Powershell\SCCM\Softwareinstaller\Program.js" -Raw) | ConvertFrom-Json
$computerNames = "Chrome","Office","Google Earth","Adobe Pro","GoToMeeting Opener"
foreach ($thing in $json) 
{
    foreach ($thing2 in $json)
    {
        if ($computernames -contains $Thing2.programname)
        {
            Start-Process -filepath $thing.FilePath -wait
        }
    }

}

我计划在json文件中添加更多内容,因此首选的方法不会只查找行号。

1 个答案:

答案 0 :(得分:0)

我不确定为什么你有thing2循环。您的JSON是一系列项目。运行一个循环,查看名称是否在您的$computerNames - 数组(坏名称顺便说一句)中并执行。尝试:

$json = (Get-Content "\\PCNAME\c$\Users\USERNAME\Desktop\Powershell\SCCM\Softwareinstaller\Program.js" -Raw) | ConvertFrom-Json
$computerNames = "Chrome","Office","Google Earth","Adobe Pro","GoToMeeting Opener"

foreach ($thing in $json) 
{
    if ($computernames -contains $thing.ProgramName)
    {
        Start-Process -FilePath $thing.FilePath -wait
    }

}