arrays - 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"
}
解决方案
如果我理解正确的话。您想将用户信息附加到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 种不同的方式使用:语句Foreach
、Foreach-Object
cmdlet 或作为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
推荐阅读
- swagger-codegen - 如何修复丢失的招摇输入或配置?
- amazon-web-services - AWS ECS Farget 集群中的远程呈现之类的替代方案?
- xamarin - Xamarin Forms IOS App 在 Database.Migrate() 上失败
- omnet++ - 如何在 Inet 4.2 中更改传输功率
- laravel - 如何显示嵌套在数组中的数据(Laravel Vue)
- c - 如何配置 openssl 以支持算法 TLS_DH_anon_WITH_AES_256_CBC_SHA?
- sdk - 谷歌云使用 Cloud SDK shell 将 Python 程序作为 localhost 服务器运行
- node.js - 如何在 fastify 注入上使用 node-tap 模拟函数
- windows - 在 Windows 脚本中运行 ffmpeg 以缩小 MP3 文件时删除错误
- python - 从文件读取标题时出错 - 请求