Home > other >  Cannot convert the "System.Collections.ArrayList" value of type "System.Collections.A
Cannot convert the "System.Collections.ArrayList" value of type "System.Collections.A

Time:10-16

Cannot process argument transformation on parameter 'Identity'. Cannot convert the "System.Collections.ArrayList" value of type "System.Collections.ArrayList" to type "Microsoft.Exchange.Configuration.Tasks.PublicFolderIdParameter". is the entire error...

Basically, we want to migrate our pub folders to shared boxes and I am attempting to get public folder permissions on the existing structure...

The issue is with the last line here... I am not sure why it is throwing this. I originally wanted to bind the alias, rather than the display name, but apparently, the display name has spaces that are needed to identify them... In any case, this is where I am stuck...

$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

CodePudding user response:

$pf will most likely contain more than one folder, so $pf.Identity will return an array of identities.

Try piping the input:

get-publicfolder -Recurse -ResultSize unlimited |
   where {$_.Identity -match "$alias"} |
   Get-PublicFolderClientPermission

CodePudding user response:

This looks like it is working... Thanks, 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

}

  • Related