Powershell:从列表 (CSV) 运行 中提取命令并输出到不同的 CSV
Powershell: Pulling from a list (CSV) running a command and outputting to a different CSV
对较重的 powershell 非常陌生,我整天都在研究这个,但无法弄清楚。
我需要从 Office 365 帐户获取 UPN 列表。我有一个 CSV 文件中的名称。它只有一列,有一长串名字。标题是“姓名”
我想 运行 get-user 命令针对每个带有管道 format-list 名称、universalprincipalname 的名称,然后将其输出到新文件。
我试过这个:
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
假设 CSV 的 header 是 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 的 object 将被重新创建为 FormatEntryData
类型的新 object如果您的目的是导出数据,您不需要。
对较重的 powershell 非常陌生,我整天都在研究这个,但无法弄清楚。
我需要从 Office 365 帐户获取 UPN 列表。我有一个 CSV 文件中的名称。它只有一列,有一长串名字。标题是“姓名”
我想 运行 get-user 命令针对每个带有管道 format-list 名称、universalprincipalname 的名称,然后将其输出到新文件。
我试过这个:
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
假设 CSV 的 header 是 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 的 object 将被重新创建为 FormatEntryData
类型的新 object如果您的目的是导出数据,您不需要。