{"id":76,"date":"2025-04-16T14:45:05","date_gmt":"2025-04-16T14:45:05","guid":{"rendered":"https:\/\/burlage.it\/?p=76"},"modified":"2025-04-17T15:00:09","modified_gmt":"2025-04-17T15:00:09","slug":"convert-remote-enabled-shared-mailbox-to-cloud-only-shared-mailbox","status":"publish","type":"post","link":"https:\/\/burlage.it\/index.php\/2025\/04\/16\/convert-remote-enabled-shared-mailbox-to-cloud-only-shared-mailbox\/","title":{"rendered":"Convert remote-enabled shared mailbox to cloud-only shared mailbox"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This guide will not include:<br>&#8211; AD permission<br>&#8211; Exchange permissions<br>&#8211; Entra Connect permissions<br>&#8211; Entra Permissions<br><br>This code must be executed in <a href=\"https:\/\/code.visualstudio.com\/\" data-type=\"link\" data-id=\"https:\/\/code.visualstudio.com\/\">Visual Studio Code<\/a><br><br>Make sure you first have set up Visual Studio Code and all PowerShell modules.<br><br>There are no speed-checks in here (at least for now) so, first check per block if everything is working.<br><br>Operationally you would only need to change one variable: $sharedMailbox<br><br>Initially you have to fill in one time these variables:<br>&#8211; $notSyncedOU<br>&#8211; $ad_domain<br>&#8211; $entraConnect<br>and it will prompt you to enter the UPN of your admin account and it&#8217;s password<br>(still need to figure out some other authentication methods, connecting to exchange-online and mggraph still requires some input from the administrator)<br><br>Good luck &#8211; no garantees.<br>Roger<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro alignwide cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# Enter - Primairy emailaddress of shared mailbox\n$sharedMailbox = 'primairyemailaddress@domain.com'\n$notSyncedOU = 'OU=NotSyncedToEntraOU,DC=domain,DC=com' \n\n# PowerShell - Store domain credentials if not present in a secure text file\nif ( (Test-Path 'C:\\Temp\\usera.txt') -eq $false ) {Read-Host -Prompt &quot;Enter your adminaccount for DOMAIN (e.g. admin-john.doe@domain.com)&quot; | Out-File -FilePath 'C:\\Temp\\usera.txt'}\nif ( (Test-Path 'C:\\Temp\\creda.txt') -eq $false ) {Read-Host -Prompt &quot;Enter password for your adminaccount for DOMAIN&quot; -AsSecureString | ConvertFrom-SecureString | Out-File -FilePath 'C:\\Temp\\creda.txt'}\n$password_domain = Get-Content -Path 'C:\\Temp\\creda.txt' | ConvertTo-SecureString\n$user_domain = Get-Content -Path 'C:\\Temp\\usera.txt'\n$cred_domain = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user_domain, $password_domain\n\n# AD - Import Active Directory PS-session\n$ad_domain = 'domaincontroller.domain.com'\n$session_domain = New-PSSession -ComputerName $ad_domain -Credential $cred_domain\nInvoke-Command -Session $session_domain -ScriptBlock {Import-Module ActiveDirectory} \nImport-PSSession -Session $session_domain -DisableNameChecking -AllowClobber -Module ActiveDirectory | Out-Null\n\n# Exchange - Connect to Exchange Online\nConnect-ExchangeOnline -UserPrincipalName $user_domain\n\n# Exchange - Collect permissions on shared mailbox\n$fullpermissions = (Get-MailboxPermission $sharedmailbox | Where-Object {$_.AccessRights -like 'Full*' -and $_.User -notlike '*SELF'}).User\n$sendaspermissions = (Get-RecipientPermission -Identity $sharedmailbox | Where-Object {$_.AccessRights -like 'SendAs' -and $_.Trustee -notlike '*SELF'}).Trustee\n\n# AD - Collect varialbles from shared mailbox ad-account\n$samAccountName = (Get-ADUser -Filter * -Properties mail | Where-Object {$_.mail -eq $sharedMailbox}).SamAccountName\n$distinguishedName = (Get-ADUser -Identity $samAccountName).DistinguishedName\n$emailAlias = (Get-ADUser -Identity $samAccountName -Properties mailNickname).mailNickname\n$displayName = (Get-ADUser -Identity $samAccountName -Properties displayName).displayName\n\n# AD - Move the shared mailbox account to a non-synced OU\nMove-ADObject -Identity $distinguishedName -TargetPath $notSyncedOU\n\n# Entra Connect - Import Entra Connect server PS-session \n$entraConnect = 'entraconnectserver.domain.com'\n$session_domain = New-PSSession -ComputerName $entraConnect -Credential $cred_domain\nInvoke-Command -Session $session_domain -ScriptBlock {Import-Module ADSync} \nImport-PSSession -Session $session_domain -DisableNameChecking -AllowClobber -Module ADSync | Out-Null\n\n# Entra Connect - Start Entra Connect delta sync to synchronize AD with Entra\nStart-ADSyncSyncCycle -PolicyType Delta \n\n# Exchange - Retrieve the GUID of the deleted shared mailbox\n$sharedmailboxGuid = (Get-Mailbox -SoftDeletedMailbox $sharedMailbox).Guid\n\n# MgGraph - Permanently delete the soft-deleted Entra account of the shared mailbox\n$directoryObjectId = (Get-MgDirectoryDeletedItemAsUser -Filter &quot;Mail eq '$sharedMailbox'&quot;).Id\nRemove-MgDirectoryDeletedItem -DirectoryObjectId $directoryObjectId\n\n# Exchange - Restore the deleted shared mailbox to a new Entra account\nNew-Mailbox -InactiveMailbox $sharedmailboxGuid -Alias $emailAlias -MicrosoftOnlineServicesID $sharedMailbox -Name $samAccountName -DisplayName $displayName\n\n# Exchange - Convert restored mailbox to shared mailbox\nSet-Mailbox $sharedMailbox -Type Shared\n\n# Exchange - Set the shared mailbox to leave a copy in the sent items folder of the shared mailbox\nSet-Mailbox -Identity $emailAddress -MessageCopyForSentAsEnabled $true -MessageCopyForSendOnBehalfEnabled $true\n\n# Exchange - Re-add full permissions for a user to a shared mailbox\nforeach ($user in $fullpermissions) {Add-MailboxPermission -Identity $sharedmailbox -User $user -AccessRights 'FullAccess' -InheritanceType 'All' -AutoMapping $false -Confirm:$false}\n\n# Exchange - Re-add SendAs permissions for a user on a shared mailbox\nforeach ($user in $sendaspermissions) {Add-RecipientPermission -Identity $sharedmailbox -Trustee $user -AccessRights 'SendAs' -Confirm:$false}\n\n# AD - remove ad-account\nRemove-ADUser -Identity $samAccountName -Confirm:$false\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\"># Enter - Primairy emailaddress of shared mailbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$sharedMailbox<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;primairyemailaddress@domain.com&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$notSyncedOU<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;OU=NotSyncedToEntraOU,DC=domain,DC=com&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># PowerShell - Store domain credentials if not present in a secure text file<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( (<\/span><span style=\"color: #DCDCAA\">Test-Path<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;C:\\Temp\\usera.txt&#39;<\/span><span style=\"color: #D4D4D4\">) -eq <\/span><span style=\"color: #569CD6\">$false<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><span style=\"color: #DCDCAA\">Read-Host<\/span><span style=\"color: #D4D4D4\"> -Prompt <\/span><span style=\"color: #CE9178\">&quot;Enter your adminaccount for DOMAIN (e.g. admin-john.doe@domain.com)&quot;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Out-File<\/span><span style=\"color: #D4D4D4\"> -FilePath <\/span><span style=\"color: #CE9178\">&#39;C:\\Temp\\usera.txt&#39;<\/span><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( (<\/span><span style=\"color: #DCDCAA\">Test-Path<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;C:\\Temp\\creda.txt&#39;<\/span><span style=\"color: #D4D4D4\">) -eq <\/span><span style=\"color: #569CD6\">$false<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><span style=\"color: #DCDCAA\">Read-Host<\/span><span style=\"color: #D4D4D4\"> -Prompt <\/span><span style=\"color: #CE9178\">&quot;Enter password for your adminaccount for DOMAIN&quot;<\/span><span style=\"color: #D4D4D4\"> -AsSecureString | <\/span><span style=\"color: #DCDCAA\">ConvertFrom-SecureString<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Out-File<\/span><span style=\"color: #D4D4D4\"> -FilePath <\/span><span style=\"color: #CE9178\">&#39;C:\\Temp\\creda.txt&#39;<\/span><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$password_domain<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-Content<\/span><span style=\"color: #D4D4D4\"> -Path <\/span><span style=\"color: #CE9178\">&#39;C:\\Temp\\creda.txt&#39;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">ConvertTo-SecureString<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$user_domain<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-Content<\/span><span style=\"color: #D4D4D4\"> -Path <\/span><span style=\"color: #CE9178\">&#39;C:\\Temp\\usera.txt&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$cred_domain<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">New-Object<\/span><span style=\"color: #D4D4D4\"> -TypeName System.Management.Automation.PSCredential -ArgumentList <\/span><span style=\"color: #9CDCFE\">$user_domain<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$password_domain<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># AD - Import Active Directory PS-session<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$ad_domain<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;domaincontroller.domain.com&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$session_domain<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">New-PSSession<\/span><span style=\"color: #D4D4D4\"> -ComputerName <\/span><span style=\"color: #9CDCFE\">$ad_domain<\/span><span style=\"color: #D4D4D4\"> -Credential <\/span><span style=\"color: #9CDCFE\">$cred_domain<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Invoke-Command<\/span><span style=\"color: #D4D4D4\"> -Session <\/span><span style=\"color: #9CDCFE\">$session_domain<\/span><span style=\"color: #D4D4D4\"> -ScriptBlock {<\/span><span style=\"color: #DCDCAA\">Import-Module<\/span><span style=\"color: #D4D4D4\"> ActiveDirectory} <\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Import-PSSession<\/span><span style=\"color: #D4D4D4\"> -Session <\/span><span style=\"color: #9CDCFE\">$session_domain<\/span><span style=\"color: #D4D4D4\"> -DisableNameChecking -AllowClobber -Module ActiveDirectory | <\/span><span style=\"color: #DCDCAA\">Out-Null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Exchange - Connect to Exchange Online<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Connect-ExchangeOnline<\/span><span style=\"color: #D4D4D4\"> -UserPrincipalName <\/span><span style=\"color: #9CDCFE\">$user_domain<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Exchange - Collect permissions on shared mailbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$fullpermissions<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #DCDCAA\">Get-MailboxPermission<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$sharedmailbox<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Where-Object<\/span><span style=\"color: #D4D4D4\"> {<\/span><span style=\"color: #9CDCFE\">$_<\/span><span style=\"color: #DCDCAA\">.AccessRights<\/span><span style=\"color: #D4D4D4\"> -like <\/span><span style=\"color: #CE9178\">&#39;Full*&#39;<\/span><span style=\"color: #D4D4D4\"> -and <\/span><span style=\"color: #9CDCFE\">$_<\/span><span style=\"color: #DCDCAA\">.User<\/span><span style=\"color: #D4D4D4\"> -notlike <\/span><span style=\"color: #CE9178\">&#39;*SELF&#39;<\/span><span style=\"color: #D4D4D4\">}).User<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$sendaspermissions<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #DCDCAA\">Get-RecipientPermission<\/span><span style=\"color: #D4D4D4\"> -Identity <\/span><span style=\"color: #9CDCFE\">$sharedmailbox<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Where-Object<\/span><span style=\"color: #D4D4D4\"> {<\/span><span style=\"color: #9CDCFE\">$_<\/span><span style=\"color: #DCDCAA\">.AccessRights<\/span><span style=\"color: #D4D4D4\"> -like <\/span><span style=\"color: #CE9178\">&#39;SendAs&#39;<\/span><span style=\"color: #D4D4D4\"> -and <\/span><span style=\"color: #9CDCFE\">$_<\/span><span style=\"color: #DCDCAA\">.Trustee<\/span><span style=\"color: #D4D4D4\"> -notlike <\/span><span style=\"color: #CE9178\">&#39;*SELF&#39;<\/span><span style=\"color: #D4D4D4\">}).Trustee<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># AD - Collect varialbles from shared mailbox ad-account<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$samAccountName<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #DCDCAA\">Get-ADUser<\/span><span style=\"color: #D4D4D4\"> -Filter * -Properties mail | <\/span><span style=\"color: #DCDCAA\">Where-Object<\/span><span style=\"color: #D4D4D4\"> {<\/span><span style=\"color: #9CDCFE\">$_<\/span><span style=\"color: #DCDCAA\">.mail<\/span><span style=\"color: #D4D4D4\"> -eq <\/span><span style=\"color: #9CDCFE\">$sharedMailbox<\/span><span style=\"color: #D4D4D4\">}).SamAccountName<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$distinguishedName<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #DCDCAA\">Get-ADUser<\/span><span style=\"color: #D4D4D4\"> -Identity <\/span><span style=\"color: #9CDCFE\">$samAccountName<\/span><span style=\"color: #D4D4D4\">).DistinguishedName<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$emailAlias<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #DCDCAA\">Get-ADUser<\/span><span style=\"color: #D4D4D4\"> -Identity <\/span><span style=\"color: #9CDCFE\">$samAccountName<\/span><span style=\"color: #D4D4D4\"> -Properties mailNickname).mailNickname<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$displayName<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #DCDCAA\">Get-ADUser<\/span><span style=\"color: #D4D4D4\"> -Identity <\/span><span style=\"color: #9CDCFE\">$samAccountName<\/span><span style=\"color: #D4D4D4\"> -Properties displayName).displayName<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># AD - Move the shared mailbox account to a non-synced OU<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Move-ADObject<\/span><span style=\"color: #D4D4D4\"> -Identity <\/span><span style=\"color: #9CDCFE\">$distinguishedName<\/span><span style=\"color: #D4D4D4\"> -TargetPath <\/span><span style=\"color: #9CDCFE\">$notSyncedOU<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Entra Connect - Import Entra Connect server PS-session <\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$entraConnect<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;entraconnectserver.domain.com&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$session_domain<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">New-PSSession<\/span><span style=\"color: #D4D4D4\"> -ComputerName <\/span><span style=\"color: #9CDCFE\">$entraConnect<\/span><span style=\"color: #D4D4D4\"> -Credential <\/span><span style=\"color: #9CDCFE\">$cred_domain<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Invoke-Command<\/span><span style=\"color: #D4D4D4\"> -Session <\/span><span style=\"color: #9CDCFE\">$session_domain<\/span><span style=\"color: #D4D4D4\"> -ScriptBlock {<\/span><span style=\"color: #DCDCAA\">Import-Module<\/span><span style=\"color: #D4D4D4\"> ADSync} <\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Import-PSSession<\/span><span style=\"color: #D4D4D4\"> -Session <\/span><span style=\"color: #9CDCFE\">$session_domain<\/span><span style=\"color: #D4D4D4\"> -DisableNameChecking -AllowClobber -Module ADSync | <\/span><span style=\"color: #DCDCAA\">Out-Null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Entra Connect - Start Entra Connect delta sync to synchronize AD with Entra<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Start-ADSyncSyncCycle<\/span><span style=\"color: #D4D4D4\"> -PolicyType Delta <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Exchange - Retrieve the GUID of the deleted shared mailbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$sharedmailboxGuid<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #DCDCAA\">Get-Mailbox<\/span><span style=\"color: #D4D4D4\"> -SoftDeletedMailbox <\/span><span style=\"color: #9CDCFE\">$sharedMailbox<\/span><span style=\"color: #D4D4D4\">).Guid<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Permanently delete the soft-deleted Entra account of the shared mailbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$directoryObjectId<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #DCDCAA\">Get-MgDirectoryDeletedItemAsUser<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;Mail eq &#39;<\/span><span style=\"color: #9CDCFE\">$sharedMailbox<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\">).Id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Remove-MgDirectoryDeletedItem<\/span><span style=\"color: #D4D4D4\"> -DirectoryObjectId <\/span><span style=\"color: #9CDCFE\">$directoryObjectId<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Exchange - Restore the deleted shared mailbox to a new Entra account<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">New-Mailbox<\/span><span style=\"color: #D4D4D4\"> -InactiveMailbox <\/span><span style=\"color: #9CDCFE\">$sharedmailboxGuid<\/span><span style=\"color: #D4D4D4\"> -Alias <\/span><span style=\"color: #9CDCFE\">$emailAlias<\/span><span style=\"color: #D4D4D4\"> -MicrosoftOnlineServicesID <\/span><span style=\"color: #9CDCFE\">$sharedMailbox<\/span><span style=\"color: #D4D4D4\"> -Name <\/span><span style=\"color: #9CDCFE\">$samAccountName<\/span><span style=\"color: #D4D4D4\"> -DisplayName <\/span><span style=\"color: #9CDCFE\">$displayName<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Exchange - Convert restored mailbox to shared mailbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Set-Mailbox<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$sharedMailbox<\/span><span style=\"color: #D4D4D4\"> -Type Shared<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Exchange - Set the shared mailbox to leave a copy in the sent items folder of the shared mailbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Set-Mailbox<\/span><span style=\"color: #D4D4D4\"> -Identity <\/span><span style=\"color: #9CDCFE\">$emailAddress<\/span><span style=\"color: #D4D4D4\"> -MessageCopyForSentAsEnabled <\/span><span style=\"color: #569CD6\">$true<\/span><span style=\"color: #D4D4D4\"> -MessageCopyForSendOnBehalfEnabled <\/span><span style=\"color: #569CD6\">$true<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Exchange - Re-add full permissions for a user to a shared mailbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">foreach<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">$user<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$fullpermissions<\/span><span style=\"color: #D4D4D4\">) {<\/span><span style=\"color: #DCDCAA\">Add-MailboxPermission<\/span><span style=\"color: #D4D4D4\"> -Identity <\/span><span style=\"color: #9CDCFE\">$sharedmailbox<\/span><span style=\"color: #D4D4D4\"> -User <\/span><span style=\"color: #9CDCFE\">$user<\/span><span style=\"color: #D4D4D4\"> -AccessRights <\/span><span style=\"color: #CE9178\">&#39;FullAccess&#39;<\/span><span style=\"color: #D4D4D4\"> -InheritanceType <\/span><span style=\"color: #CE9178\">&#39;All&#39;<\/span><span style=\"color: #D4D4D4\"> -AutoMapping <\/span><span style=\"color: #569CD6\">$false<\/span><span style=\"color: #D4D4D4\"> -Confirm:<\/span><span style=\"color: #569CD6\">$false<\/span><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Exchange - Re-add SendAs permissions for a user on a shared mailbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">foreach<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">$user<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$sendaspermissions<\/span><span style=\"color: #D4D4D4\">) {<\/span><span style=\"color: #DCDCAA\">Add-RecipientPermission<\/span><span style=\"color: #D4D4D4\"> -Identity <\/span><span style=\"color: #9CDCFE\">$sharedmailbox<\/span><span style=\"color: #D4D4D4\"> -Trustee <\/span><span style=\"color: #9CDCFE\">$user<\/span><span style=\"color: #D4D4D4\"> -AccessRights <\/span><span style=\"color: #CE9178\">&#39;SendAs&#39;<\/span><span style=\"color: #D4D4D4\"> -Confirm:<\/span><span style=\"color: #569CD6\">$false<\/span><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># AD - remove ad-account<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Remove-ADUser<\/span><span style=\"color: #D4D4D4\"> -Identity <\/span><span style=\"color: #9CDCFE\">$samAccountName<\/span><span style=\"color: #D4D4D4\"> -Confirm:<\/span><span style=\"color: #569CD6\">$false<\/span><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>This guide will not include:&#8211; AD permission&#8211; Exchange permissions&#8211; Entra Connect permissions&#8211; Entra Permissions This code must be executed in Visual Studio Code Make sure you first have set up Visual Studio Code and all PowerShell modules. There are no speed-checks in here (at least for now) so, first check per block if everything is [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-76","post","type-post","status-publish","format-standard","hentry","category-powershell"],"_links":{"self":[{"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/posts\/76","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":4,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/posts\/76\/revisions"}],"predecessor-version":[{"id":83,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/posts\/76\/revisions\/83"}],"wp:attachment":[{"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/media?parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/categories?post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/tags?post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}