【问题标题】:Powershell: Pulling from a list (CSV) running a command and outputting to a different CSVPowershell:从运行命令的列表 (CSV) 中提取并输出到不同的 CSV
【发布时间】:2021-09-27 12:44:59
【问题描述】:

对于较重的 powershell 来说非常新,我整天都在研究这个问题,无法弄清楚。

我需要从 Office 365 帐户获取 UPN 列表。我在 CSV 文件中有名称。它有一列,有一长串名字。标题是“名称”

我想使用管道格式列表名称、universalprincipalname 对每个名称运行 get-user 命令,然后将其输出到新文件。

我试过这个:

get-content "m:\filename.csv" | 
foreach {get-user '$_.user' -identity -resultsize unlimited} |
format-list name, userprincipalname |
out-file -FilePath m:\newfilename.csv

但它不起作用(我也用 import-csv 试过)。它似乎不是从我的列表中提取,而是直接从 office365 交换服务器中提取,当它最终完成时,其中的名称比我列表中的名称要多。

我的总体目标是生成所有没有移动设备的人的 upns 列表,以便我可以使用 powershell 命令禁用移动设备的主动同步和 OWA。不幸的是,我用来生成用户列表的命令以名字、姓氏格式生成了列表……而且我们有这么多用户,我不能只在 excel 中连接这些东西,因为会有很多错误.

CSV 的布局如下:

Column1  
name   
first last  
first last  
first last  
first last   

【问题讨论】:

  • 如果标题名为“name”,则必须使用$_.name 作为管道变量。
  • ... AND ... 如果您想创建正确的 CSV 文件,您应该使用 Export-Csv 而不是 Out-File ;-)
  • 你不是说用Import-Csv 代替Get-Content吗?
  • @Bill_Stewart ...哎呀...我什至错过了...
  • 你的意思是Get-ADUser

标签: powershell csv scripting


【解决方案1】:

假设 CSV 的标头为 Name,代码应如下所示:

Import-Csv "m:\filename.csv" | ForEach-Object {
    Get-User -Identity $_.Name.Trim() -ResultSize Unlimited
} | Select-Object Name, UserPrincipalName |
Export-Csv "m:\newfilename.csv" -NoTypeInformation

请注意,我使用的是Select-Object 而不是Format-Table。您应该只使用 Format-Table 将输出显示到 PowerShell 主机,通过管道传递到此 cmdlet 的对象将被重新创建为您想要的 FormatEntryData 类型的新对象您的意图是导出数据。

【讨论】:

  • 好的,我想我看到了这个问题,但我不确定为什么会这样。它不起作用,因为它似乎在每个单元格的开头插入一个 ' ,在每个名称的末尾添加大约 20 个空格后又插入一个。也许我应该复制并粘贴到文本文件中并放弃 CSV?
  • 另外 - 如果我手动执行此操作,省略导入 csv 和导出,并跳过“foreach-object”部分,这完全符合我的要求。所以问题似乎出在 {} 之间的部分或 csv / txt 文件本身。
  • @Den026 假设您有一个有效的 CSV,我的代码应该可以正常工作。尝试导入您的 CSV,看看它的外观。
  • 你是对的。我只是将 csv 复制到一个文本文件中,每个名称后都有额外的空格。这就是杀死整个事情的原因,因为当我在手动创建的文本文件中运行测试时,它的工作方式与您所说的完全一样!我将重新生成我的列表,看看我是否真的正确(但在实验中它确实有效!)
  • Squarezon - 您的代码运行良好。谢谢!
猜你喜欢
  • 2023-01-31
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多