从2个csv文件循环问题中复制GPO

时间:2019-05-15 14:39:39

标签: powershell

我有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"
          }
    }

1 个答案:

答案 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