powershell - 使用 powershell 读取 csv 文件
问题描述
我正在努力使用 power shell 读写 csv 文件。我需要读取一个包含三列服务器、用户、状态的文件
我已经完成了第一步(读入文件)
下一步是通过分隔符“;”分割状态字段中的数据。(我也有)
现在问题出在哪里,我通过 Get-ADUser 循环并构建打印行,将 foreach 循环中的所有值放在一起 - 用“;”分隔。(新状态字段)
然后当然在结束时写出完成的文件。
所以输入文件是一个包含以下内容的csv
服务器用户状态 ABC xtom
JKL
CDEA msall;jbec
输出 csv 将是
服务器用户状态 ABC xtom xert.tom@abc.com; JKL CDEA msall;jbec mik.sall@abc.com;jay.bec@abc.com
我的代码就这样
$List = Import-Csv -Path "c:\data\infile.csv"
$outarray = @()
foreach ($item in $List)
{
Write-output $item
$Servers= $($item.Server)
$Users = $($item.Users)
$Status = $($item.Status)
if ($Users.length -gt 0)
{
$CharArray =$Users.Split(";")
Foreach ($i in $CharArray)
{
$email = Get-ADUser -Filter {SamAccountName -like $i} | Select -Property UserPrincipalName
$outarray = $email
}
}
}
$outarray | Export-Csv "c:\data\testout.csv" -noType
任何帮助,将不胜感激
谢谢
csv 输入文件
Server,Users,Status
ABC,xtom,
JKL,,
CDEA,msall;jbec,
csv 输出文件
Server,Users,Status
ABC,xtom,xert.com@abc.com
JKL,,
CDEA,msall;jbec,mik.sall@abc.com;jay.bec@abc.com
解决方案
所以,如果我正确理解你需要什么,这段代码应该适合你:
$List = Import-Csv -Path "c:\data\infile.csv"
$outarray = [system.collections.generic.list[pscustomobject]]::new()
foreach ($item in $List)
{
Write-output $item
$Server = $($item.Server)
$Users = $($item.Users)
$Status = $($item.Status)
if ($Users)
{
$CharArray = $Users.Split(";")
$email = $(
Foreach ($i in $CharArray)
{
$usr=(Get-ADUser -Filter {SamAccountName -like $i}).UserPrincipalName
if($usr){$usr}
}) -join ';'
}
$outarray.Add(
[PSCustomObject]@{
Server = $Server
Users = $Users
Status = $email
})
}
$outarray | Export-Csv "c:\data\testout.csv" -NoTypeInformation
值得一提的userPrincipalName
是,这绝对不是一回事,mail
即使它们看起来一样,但情况并非总是如此。
此外,不需要if$i
将实际包含samAccountNames
then 。-Filter {....}
推荐阅读
- go - 锁定附加切片,没有锁定读取,所以我可以获得新的长度,但没有元素?
- c - GLSL 着色器编译失败(但只是有时)
- ios - 如何在 swiftUI 中的文本上显示 AM/PM?
- r - 我的数据集为“?” 价值观。如何使用 R 找到所有缺失值?
- visual-studio-code - VS 代码扩展中的 API 错误响应消息
- android - RecyclerView 无休止滚动在片段中不起作用
- jquery - JQuery DataTables - 显示页面长度选项以及导出按钮
- django - 让 Django 查询我的类是否包含一个函数?如何进行查询,该查询将返回特定设备的 available_count 总和
- sql-server - 来自 dacpac 的 Azure SQL 数据库创建问题
- angular - 有没有办法用 ngx-extended-pdf-viewer 提供数字签名?