Powershell 无法导出所有用户,在导入CSV文件以获取ADUser时只显示一个用户

Powershell 无法导出所有用户,在导入CSV文件以获取ADUser时只显示一个用户,powershell,Powershell,我才刚刚开始学习PowerShell,但我的头撞到了墙上。当我导入CSV用户列表以获取get Aduser上的userprincipalname,标题为SamAccountName时,我可以在控制台上看到所有电子邮件: ForEach ($user in $allUsers) { Get-ADUser $user.samaccountname -Properties userprincipalname | select -Property userprincipalname } 然而,当我试

我才刚刚开始学习PowerShell,但我的头撞到了墙上。当我导入CSV用户列表以获取get Aduser上的userprincipalname,标题为SamAccountName时,我可以在控制台上看到所有电子邮件:

ForEach ($user in $allUsers)
{ 
Get-ADUser $user.samaccountname -Properties userprincipalname | select -Property userprincipalname
}
然而,当我试图将它们导出到csv文件时,只有一个用户出现。我总是有一个问题,当使用foreach循环这个

ForEach ($user in $allUsers)
{ 
Get-ADUser $user.samaccountname -Properties userprincipalname | select -Property userprincipalname | export-csv $path -NoTypeInformation
}
我在做foreach循环时总是遇到这个问题。我只得到或更改了1个变量。为什么会这样?请帮忙

我的CSV文件有一个SamAccountName和SamAccountName的头。在不导出的情况下,我从控制台上的代码中获得了良好的数据:

ForEach ($user in $allUsers)
{ 
Get-ADUser $user.samaccountname -Properties userprincipalname | select -Property userprincipalname
}
user@test.com user2@test.com
等等。

您在循环的每个迭代中导出,这将覆盖文件。我还没有尝试过,但下面的更改应该可以使用

$allUsers  | Foreach-Object { 
    $user = $_ 
    Get-ADUser $user.samaccountname -Properties userprincipalname | select -Property userprincipalname 
} | export-csv $path -NoTypeInformation

如果要将结果直接通过管道传输到在循环的每个迭代中导出的csv,则必须使用此语法vs
foreach(x in y)
,这将覆盖文件。我还没有尝试过,但下面的更改应该可以使用

$allUsers  | Foreach-Object { 
    $user = $_ 
    Get-ADUser $user.samaccountname -Properties userprincipalname | select -Property userprincipalname 
} | export-csv $path -NoTypeInformation

您必须使用此语法vs
foreach(x in y)
如果您想直接将结果管道化到
导出csv

使用
-Append
参数避免在每次迭代时覆盖csv使用
-Append
参数避免在每次迭代时覆盖csv,谢谢,在works中键入代码。你能解释一下为什么使用
foreach($alluser中的user){Get ADUser$user.SamAccountName-Properties userprincipalname | select-Property userprincipalname}导出csv$path-NoTypeInformation
不起作用吗?它说我有一条空管道。在输入foreach和你的方式之间似乎有一些根本的区别,但这是什么呢?对我来说似乎是一样的。你打字的方式是否更有效、更全面?您的%{for each是替换的,还是密钥使用$uu管道?主要问题是导出在循环中…因此每次迭代都会覆盖文件。Foreach(x in y)如果在管道中,则不起作用。因此,如果要使用该语法,则必须在集合中累积结果,并在foreach之后通过管道将集合导出。我刚才发布的代码将导出到循环之外,对吗?它在}之外。当我完全执行上一个注释时,它将显示为空管道。您不能使用foreach(x in y)在管道中,您必须使用foreach对象或其别名%Travis,谢谢,在works中键入代码。你能解释一下为什么使用
foreach($alluser中的user){Get ADUser$user.SamAccountName-Properties userprincipalname | select-Property userprincipalname}导出csv$path-NoTypeInformation
不起作用吗?它说我有一条空管道。在输入foreach和你的方式之间似乎有一些根本的区别,但这是什么呢?对我来说似乎是一样的。你打字的方式是否更有效、更全面?您的%{for each是替换的,还是密钥使用$uu管道?主要问题是导出在循环中…因此每次迭代都会覆盖文件。Foreach(x in y)如果在管道中,则不起作用。因此,如果要使用该语法,则必须在集合中累积结果,并在foreach之后通过管道将集合导出。我刚才发布的代码将导出到循环之外,对吗?它在}之外。当我完全执行上一个注释时,它将显示为空管道。您不能使用foreach(x in y)在管道中,必须使用foreach对象或其别名%