微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有一个包含用户身份列表的文本文件。我想将该列表中的每个成员传递给 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
}

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

最终,我想将所有这些推送到单个管道并输出到 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(){} 循环语句不同)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?