代码之家  ›  专栏  ›  技术社区  ›  Matthew

每个循环只输出一行到CSV?

  •  0
  • Matthew  · 技术社区  · 5 年前

    $Users = import-csv c:\users.csv 
    
    Foreach($User in $Users){
    
    $UPN = $User.UserPrincipalNam
    Get-MsolUser -UserPrincipalName "$UPN" | Select-Object DisplayName,Licenses | Export-Csv -Path C:\output.csv -NoTypeInformation
    
    }
    

    当我运行上面没有 Export-Csv -Path C:\output.csv -NoTypeInformation 我以我想要的方式获得了预期的输出信息,但是,当我使用export选项运行时,我得到了1个用户,而不是所有用户。

    -Append 解决了我的问题,就像他们的问题没有解决一样 -追加

    1 回复  |  直到 5 年前
        1
  •  4
  •   AdminOfThings    5 年前

    你需要添加 -Append 切换到您的 Export-Csv 命令在每次迭代期间不覆盖内容。另一个选择是移动它 导出Csv

    选项1:使用Append

    $Users = Import-Csv c:\users.csv 
    
    Foreach($User in $Users){
    
        $UPN = $User.UserPrincipalName
        Get-MsolUser -UserPrincipalName $UPN | Select-Object DisplayName,Licenses |
           Export-Csv -Path C:\output.csv -NoTypeInformation -Append
    
    }
    

    选项2:循环后执行导出Csv

    $Users = Import-Csv c:\users.csv 
    
    $MsolUsers = Foreach($User in $Users){
    
        $UPN = $User.UserPrincipalName
        Get-MsolUser -UserPrincipalName $UPN | Select-Object DisplayName,Licenses
    
    }
    
    $MsolUsers | Export-Csv -Path C:\output.csv -NoTypeInformation