.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文件中添加更多内容,因此首选的方法不会只查找行号。
答案 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
}
}