如何将参数沿管道传递给不接受管道输入的函数?

How do I pass a parameter down the pipeline to a function that doesn't accept pipeline input?

我有一个包含用户身份列表的文本文件。我想将该列表中的每个成员传递给 Get-csMeetingMigrationStatus 并取回 UserPrincipalName、Status 和 LastMessage。从那里我想输出到 gridview 作为迁移状态测试的眼睛。

我想在一个管道中完成此操作,但无法解决。我知道 Get-csMeetingMigrationStatus 不为其参数 -identity 采用管道输入,因此我必须使用另一种方法将该参数传递给函数。我以前做过这样的事情,我想知道用户列表是从文本文件导入而不是从头开始创建的数组是否是原因。

我需要尽快让它工作,所以我想我只是把它全部放在一个 foreach 循环中,如下所示。我知道下面的例子并没有给我所有我想要的关于输出的信息,但即使下面的例子也失败了。

$UserDetails = Get-Content -path c:\test.txt
foreach ($ud in $UserDetails) {
        Get-csMeetingMigrationStatus -identity $ud | Select-Object Userprincipalname, status, lastmessage
}

当我运行上面第一个身份的return是我的connect-microsoftteams连接的属性headers。 随后的迭代 return 一个空行。对于 foreach 循环的每次迭代,如果我将 foreach 语句中的命令复制并粘贴到终端 window 和 运行 中,则会显示每个用户的正确信息。我不明白怎么会这样。

最终我想将所有这些推入单个管道并输出到 gridview。

如果有人可以帮助解决上述任一问题,我将不胜感激,因为我已经尝试了好几个小时来解决这个问题,但找不到解决方案。

谢谢

使用ForEach-Object cmdlet:

Get-Content -path c:\test.txt |ForEach-Object {
    Get-CsMeetingMigrationStatus -identity $_ | Select-Object Userprincipalname, status, lastmessage
} |Out-GridView

将管道嵌套在 ForEach-Object 中意味着我们可以提供另一个下游 cmdlet(在本例中为 Out-GridView),无论它产生什么输出(与 foreach(){} 循环语句不同)