0

我正在编写一些执行 PowerShell 脚本的 C# 程序。

我有以下行

Get-Mailbox -ResultSize:unlimited |
  Get-MailboxPermission |
    Where {($_.IsInherited -eq $false) -and !($_.user -like "S-1*") -and !($_.user -like "NT A*") } |
      select identity,user,@{n="objectid";e={(get-recipient -identity $_.user).ExternalDirectoryObjectId}}

基本上它会找到所有邮箱权限并检索相应ExternalDirectoryObjectId的(与 Azure ObjectID 相同)

这里的问题是返回的结果与不同的机器不同。我将获得所有身份、用户值,但对于上面以粗体显示的表达式值,只会在执行的中途开始显示。

例如在计算机 x 上

Identity|User|objectid
user1 |userA|
user2 |userA|
user2 |userB|
...   |...  |
user10|userC|
user11|userC|<objectID1>
user11|userD|<objectID2>

我注意到在快速计算机上 objectID 开始出现较晚,在较慢计算机上它开始较早出现,但是执行时间不同。

如何修改它以便为所有条目检索 objectGuid?为什么流水线不等到objectID正确检索计算的属性?

如果我编写一个简短的 PowerShell 脚本并为每个 mbox 权限使用 for 循环并一一检索它们,则所有这些 objectGuid 都是可检索的。但它很慢。

感谢您的帮助,请给我任何建议!

4

0 回答 0