【问题标题】:Cannot convert the "System.Collections.ArrayList" value of type "System.Collections.ArrayList"无法转换“System.Collections.ArrayList”类型的“System.Collections.ArrayList”值
【发布时间】:2021-12-03 22:20:11
【问题描述】:

无法处理参数“身份”的参数转换。无法将“System.Collections.ArrayList”类型的“System.Collections.ArrayList”值转换为“Microsoft.Exchange.Configuration.Tasks.PublicFolderIdParameter”类型。是整个错误...

基本上,我们希望将 pub 文件夹迁移到共享框,我正在尝试获取现有结构的公用文件夹权限...

问题在于这里的最后一行......我不确定它为什么会抛出这个。我最初想绑定别名,而不是显示名称,但显然,显示名称包含识别它们所需的空格......无论如何,这就是我被卡住的地方......

$mepf     = Get-MailPublicFolder "Pub Folder Name" -ResultSize unlimited
$alias    = $mepf.displayname
$pf       = get-publicfolder -Recurse -ResultSize unlimited | ? {$_.Identity -match "$alias"}
$identity = $pf.Identity
$perms    = Get-PublicFolderClientPermission -Identity $pf.Identity | Where-Object {$_.User -notmatch "Default|Anonymous"} | Select-Object -ExpandProperty User

【问题讨论】:

  • $pf 可能是公用文件夹的数组(集合),因此$pf.Identity 将是所有这些公用文件夹的标识数组。看来Get-PublicFolderClientPermission 的 Identity 参数只需要一个身份,而不是身份的集合。
  • $mepf 也是一个集合,所以$mepf.displayname 将成为一个显示名称数组。
  • @Daniel,那么我应该使用 foreach 吗?我会修补这个。谢谢
  • 好的,我在 $PFs 变量之后添加了一个 foreach,它似乎正在工作......当然,我有一个新问题,但让我们将它保存到另一个线程。

标签: powershell scripting runtime-error public-folders


【解决方案1】:

$pf 很可能包含多个文件夹,因此$pf.Identity 将返回一组身份。

尝试管道输入:

get-publicfolder -Recurse -ResultSize unlimited |
   where {$_.Identity -match "$alias"} |
   Get-PublicFolderClientPermission | foreach {
       # do something with $_
   }

【讨论】:

  • 好的,我会玩这个的,谢谢。
  • 是的...内存不足...数组很大...回到绘图板。我认为如果没有这么多的对象,它会起作用的......
  • @MarcEverlove 管道的目的(像这样)不是将所有结果保存在变量中($perms = ...),而是将结果再次通过管道传输到 next您要在结果上运行的命令。这正是管道的用途以及如何防止任何内存问题(请参阅我的编辑)。
【解决方案2】:

这看起来正在运行...谢谢,Daniel!

$mepf     = Get-MailPublicFolder "PubFolderName" -ResultSize unlimited
$alias    = $mepf.displayname
$pfs      = get-publicfolder -Recurse -ResultSize unlimited | ? {$_.Identity -match "$alias"}

foreach ($pf in $pfs){
$identity = $pf.Identity

$perms    = Get-PublicFolderClientPermission -Identity $pf.Identity | Where-Object {$_.User -notmatch "Default|Anonymous"} | Select-Object -ExpandProperty User

}

【讨论】:

    猜你喜欢
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2018-02-16
    相关资源
    最近更新 更多