我尝试过类似的操作,但是它从未给出值,我的ifile.csv包含两列显示名称,即grpmail
Import-Csv "E:\ifile.csv" | foreach {get-distributionGroupMember -Identity $_.displayname | select-Object @{Name= GroupName; Expression = {$_.grpmail}}, Recipienttype, Primarysmtpaddress} | Export-csv -no typeinformation "E:\Ofile.csv"
谁能告诉我我在做什么错 我希望ofile.csv具有3列,如GroupName,Recipienttype,Primarysmtpaddress
我获得Recipienttype,Primarysmtpaddress列的值,但GroupName列始终为空。
答案 0 :(得分:1)
这是因为管道中的$_
已更改为get-distributiongroupmember
的结果,并且不再是您的CSV文件输入。
尝试以下方法:
Import-Csv "E:\ifile.csv" | foreach {
$gname = $_.grpmail
Get-distributionGroupMember -Identity $_.displayname | Select @{Name= GroupName; Expression = {$gname}, Recipienttype, Primarysmtpaddress} | Export-csv -no typeinformation "E:\Ofile.csv"
为了方便阅读,我将第2行和第3行分开-您可以根据需要在$gname = $_.grpmail
后面加上分号。
作为一般说明,我喜欢为管道对象分配特定的变量名称,以查看我实际使用的对象,尤其是在途中对其进行转换的情况下。另外,我喜欢用多行代码来更好地了解发生了什么事
Import-Csv "E:\ifile.csv" | foreach {
$g = $_
Get-distributionGroupMember -Identity $g.displayname |
Select @{Name= GroupName; Expression {$g.grpmail},Recipienttype,Primarysmtpaddress
} | Export-csv -notypeinformation "E:\Ofile.csv"
答案 1 :(得分:0)
编辑 根据T-Me的建议,请尝试以下操作:
Import-Csv "E:\ifile.csv" | ForEach-Object {
$grpmail = $_.grpmail
get-distributionGroupMember -Identity $_.displayname | Select-Object @{ Name = 'GroupName'; `
Expression = "$grpmail" }, `
Recipienttype, Primarysmtpaddress
} | Export-csv -no typeinformation "E:\Ofile.csv"