【问题标题】:How do I pass a parameter down the pipeline to a function that doesn't accept pipeline input?如何将参数沿管道传递给不接受管道输入的函数?
【发布时间】:2021-03-17 00:27:21
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: powershell microsoft-teams skype-for-business


    【解决方案1】:

    使用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(){} 循环语句不同)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多