I’m making a module for my company, where we doing common task with PowerShell. One of the things is to set mailbox permissions and AD permissions on a shared mailbox with just one cmdlet.
My cmdlet is called
Add-NxMailboxPermissionand takes the 3 parameters $Identity, $User and $AutoMapping and accepts pipeline input on $Identity
If I call the cmdlet as follows:
Add-NxMailboxPermission -Identity (Get-Mailbox -Identity ) -User
it works fine.
If I use pipeline as follows:
Get-Mailbox -Identity | Add-NxMailboxPermission -User
only the
Add-ADPermissionpart of the cmdlet is executed. No error is generated, but no Mailbox Permission is set.
I think that maybe its param $Identity that I defined as [string] but Add-MailboxPermission accepts mailboxidparameter as its Identity parameter.
My cmdlet look likes this:
function Add-NxMailboxPermission {
[CmdletBinding(SupportsShouldProcess, ConfirmImpact='Medium')]
param(
[Parameter(Mandatory, ValueFromPipelineByPropertyName)]
[string[]] $Identity,
[Parameter(Mandatory)]
[string] $User,
[ValidateNotNullOrEmpty()]
[switch] $AutoMapping = $true
)
process {
foreach ($i in $identity) {
if ($PSCmdlet.ShouldProcess("$i for $user", "Setting mailbox permission ('FullAccess')")) {
try {
Write-Verbose "Setting mailbox permission on $i for $user"
Add-MailboxPermission -Identity $i -User $User -AccessRights FullAccess -AutoMapping:$AutoMapping -Confirm:$false -ErrorAction Stop
Write-Verbose "Setting ADPermission on $i for $user"
Add-ADPermission -Identity $i -User $User -Extendedrights "Send As" -Confirm:$false -ErrorAction Stop
} catch {
Write-Warning "Can not set permission on $i for $user"
}
}
}
}
}
If I change line 5 to:
[Microsoft.Exchange.Configuration.Tasks.MailboxIdParameter[]] $Identity
As the same type as
Get-MailBoxreturn, then I get this error:
Unable to find type [Microsoft.Exchange.Configuration.Tasks.MailboxIdParameter].
At line:8 char:14
+ ... [Microsoft.Exchange.Configuration.Tasks.MailboxIdParamete ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Excha...lboxIdParameter:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
Can anyone telle me what is wrong?
Best regards
Benny