我有2个csv文件,一个具有Win7 GPO的显示名称,另一个具有Win10的显示名称。我要遍历两个csv,以便可以将GPO设置从Win7复制到新的Win10显示名称GPO。当我运行循环时,它将相同的第一个win7 GPO应用于所有新的Win10 GPO,然后将第二个以此类推...等等,我环顾四周,但似乎无法获得提示。任何帮助,将不胜感激。
import-module grouppolicy
import-module activedirectory
$Win7GPOPath = "c:\temp\copyWin7GPOs.csv"
$Win10GPOPath = "c:\temp\copyWin10GPOs.csv"
$7GPO = @{}
$10GPO = @{}
$Win7GPO = import-csv $Win7GPOPath
$Win10GPO = import-csv $Win10GPOPath
ForEach($7GPO in $Win7GPO) {
ForEach($10GPO in $Win10GPO) {
Write-Output "Copy-GPO -SourceName $7GPO -TargetName $10GPO"
}
}
答案 0 :(得分:1)
如果您的CSV文件包含完全相同的行数,而一个文件中的每一行都与另一文件中的同一行号相对应,则可以使用一个for
循环。
import-module grouppolicy
import-module activedirectory
$Win7GPOPath = "c:\temp\copyWin7GPOs.csv"
$Win10GPOPath = "c:\temp\copyWin10GPOs.csv"
$7GPO = @{}
$10GPO = @{}
$Win7GPO = import-csv $Win7GPOPath
$Win10GPO = import-csv $Win10GPOPath
for ($i = 0; $i -lt $Win7GPO.count; $i++) {
Copy-GPO -SourceName $Win7GPO[$i] -TargetName $Win10GPO[$i]
}
如果CSV文件包含标题,则需要引用该标题属性,例如$Win7GPO[$i].Property
。