首页 > 解决方案 > PowerShell 如何根据脚本数组计数循环脚本

问题描述

我是 PowerShell 的新手。我正在尝试提取用户名并将其放在文件中。我有两个对应的数组,$title 和 $csvfile。$title[0] 对应 $csvfile[0] 和 $title[1] 对应 $csvfile[1] 等等。是否可以在同时增加两个索引的同时循环此脚本,以便每个索引运行一次但也同步?

$title = @('jim' 'john' 'james')
$csvfile = @('jim.csv' 'john.csv' 'james.csv')

Get -ADUser -filter {(Title -like "$title") -and (Company -like "Location1")} | Export-Csv c:\temp\$csvfile

问题 2 $title 数组似乎不是一次迭代一个。如果我将 $title[$] 替换为任何列出的数组项,它就可以工作。有趣的是,它确实从 $csvfile 数组创建了我所有的 .csv 文件,它们只是空的。我在网上做了一些查找,不确定我的数组项是否太长或引用解析不正确。任何帮助将不胜感激。

    $title = @(
   'Director of Nursing'
   'Assistant Director of Nursing'
   'Activities Director'
)
   $csvfile = @(
  'DON'
  'ADON'
  'ACTIVITIES'
)

    for($i=0; $i -lt $title.Count; $i++)
{
    #Get-ADUser -Filter { (Title -like "Director of Nursing")  -and  (Company -like "location1") }| Export-Csv c:\temp\$($csvfile[$i]).csv"
    Get-ADUser -filter { (Title -like "$($title[$i])")  -and  (Company -like "Location1") }| Export-Csv "c:\tempPath\$($csvfile[$i]).csv"
}

标签: arrayspowershellloops

解决方案


如果我理解正确的话。您想将用户信息附加到Get-Aduser您从中获取的用户名的相应 csv 中吗?例如,jim信息转到jim.csv,等等每个?

好像你正在寻找Foreach循环。

$title = @('jim','john','james')
#$csvfile = @('jim.csv' 'john.csv' 'james.csv')

Foreach($user in $title){
Get-ADUser -filter {(Title -like "$title") -and (Company -like "Location1")} | Export-Csv "c:\temp\$title.csv"}

Foreach循环遍历对象列表并对每个对象执行相同的操作,当它完成最后一个对象时结束。对象列表通常是一个数组。当您在对象列表上运行循环时,我们说您在iterating列表之上。

Foreach循环可以以 3 种不同的方式使用:语句ForeachForeach-Objectcmdlet 或作为foreach()方法。

我们在这里使用的是Foreach语句,后面跟着包含三个元素的括号,依次为:变量、关键字in和要迭代的对象或数组。当它在列表中移动时($title在这种情况下为 -array ),Powershell 会将它正在查看的对象复制到定义列表中每个项目的变量中,$user.

注意:因为变量只是一个副本,您不能直接更改原始列表中的项目。

另请注意,数组中的项目通过在列表中每个项目的末尾添加一个逗号来单独读取(如果它不在新行中)。在上面的代码中,我们还将您正在迭代的相同名称附加到 csv 文件中。

编辑:使用for循环。. .


$title = @('jim','john','james')
$csvfile = @('CEO','CFO','CIO')


For($i=0; $i -lt $title.Count; $i++){
Get-ADUser -filter {(Title -like "$($title[$i])") -and (Company -like "Location1")} | Export-Csv "c:\temp\$($csvfile[$i]).csv"}

像这样匹配输出:

jim - CEO.csv
john - CFO.csv
james - CIO.csv

推荐阅读