首页 > 解决方案 > 从 2 个 csv 文件循环问题复制 GPO

问题描述

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

标签: powershell

解决方案


如果您的 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.


推荐阅读