Exchange & Lync Admin Script created by Ward Vissers
 www.wardvissers.nl
Tool to Manage Active Directory & Exchange & Lync 

THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK
OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER 

Please select the admin area you require
1. Active Directy Users Tasks

 2. Active Directy Computers Tasks

3. Active Directy Groups Tasks

4. Active Directy Protected From Accidental Deletion Tasks

5. Active Directy FSMO Tasks

6. User Profile Tasks

7. Exchange Tasks

8. Lync Tasks

9. Quit and exit

Enter Menu Option Number: 

 

PowerShell
Edit|Remove
<###################################################################### 
# V1.0 Begin 
# V1.1 Added Some Nice Stuff 
# V1.2 Added Some Exchange Config Commands 
# V1.3 Write-Host Vervangen door Write-Output 
# V1.4 Added Enable-DistributionGroup 
# V1.5 Added Convert Mailbox to Shared & Set-Mailbox MessageCopyForSentAsEnabled & MessageCopyForSendOnBehalfEnabled  
######################################################################> 
CLS 
# AD Module Check 
Write-Output "Checking to see if the Active Directory PowerShell module is installed" 
if ((get-module -name ActiveDirectory -ErrorAction SilentlyContinue | foreach { $_.Name }) -ne "ActiveDirectory") 
{ 
Write-Output "ActiveDirectory Management PowerShell is not added to this session, adding it now..." 
import-module activedirectory 
} 
else 
{ 
Write-Output Active Directory PowerShell module is good to go. -backgroundcolor black -foregroundcolor green 
start-sleep -s 1 
} 
Write-Output "" 
Write-Output "" 
$t = $host.ui.RawUI.ForegroundColor 
$host.ui.RawUI.ForegroundColor = "Green" 
$xAppName    = "ADScript" 
$startsleep = 10 
[BOOLEAN]$global:xExitSession=$false 
function LoadMenuSystem(){ 
    [INT]$xMenu1=0 
    [INT]$xMenu2=0 
    [BOOLEAN]$xValidSelection=$false 
    while ( $xMenu1 -lt 1 -or $xMenu1 -gt 9 ){ 
        CLS 
        #… Present the Menu Options 
        Write-Output "`n`tExchange & Lync Admin Script created by Ward Vissers"  
        Write-Output "`n`twww.wardvissers.nl"  
        Write-Output "`n`tTool to Manage Active Directory & Exchange & Lync "  
        Write-Output "`n`t"  
        Write-Output "`n`tTHIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK"  
        Write-Output "`n`tOF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER "  
        Write-Output "`n`t"  
        Write-Output "`n`t"  
        Write-Output "`t`tPlease select the admin area you require`n"  
        Write-Output "`t`t`t1. Active Directy Users Tasks"  
        Write-Output "`t`t`t2. Active Directy Computers Tasks"  
        Write-Output "`t`t`t3. Active Directy Groups Tasks"  
        Write-Output "`t`t`t4. Active Directy Protected From Accidental Deletion Tasks"  
        Write-Output "`t`t`t5. Active Directy FSMO Tasks"  
        Write-Output "`t`t`t6. User Profile Tasks"  
        Write-Output "`t`t`t7. Exchange Tasks"  
        Write-Output "`t`t`t8. Lync Tasks"  
        Write-Output "`t`t`t9. Quit and exit"  
        #… Retrieve the response from the user 
        [int]$xMenu1 = Read-Host "`t`tEnter Menu Option Number" 
        if$xMenu1 -lt 1 -or $xMenu1 -gt 9){ 
            Write-Output "`tPlease select one of the options available.`n" -Fore Red;start-Sleep -Seconds 1 
        } 
    } 
    Switch ($xMenu1){    #… User has selected a valid entry.. load next menu 
        1 { 
            while ( $xMenu2 -lt 1 -or $xMenu2 -gt 6 ){ 
                CLS 
                # Present the Menu Options 
                Write-Output "`n`tUsers Task" -Fore Magenta 
                Write-Output "`t`tPlease select the administration task you require`n"  
                Write-Output "`t`t`t1. Count Users Online Within 90 Days"   
                Write-Output "`t`t`t2. Show Users Online within 90 Days"   
                  Write-Output "`t`t`t3. Copy Group MemberShip"  
                Write-Output "`t`t`t4. AD User Groups Nested"  
                Write-Output "`t`t`t5. Create Test Users"  
                Write-Output "`t`t`t6. Go to Main Menu"  
                [int]$xMenu2 = Read-Host "`t`tEnter Menu Option Number" 
                if$xMenu2 -lt 1 -or $xMenu2 -gt 6 ){ 
                    Write-Output "`tPlease select one of the options available.`n" -Fore Red;start-Sleep -Seconds 1 
                } 
            } 
            Switch ($xMenu2){ 
                1{ 
                 # Count AD Users within 90 Days Online 
                 (Get-ADUser -Properties lastlogondate -Filter * | select name, lastlogondate | where { $_.lastlogondate -gt (Get-Date).AddDays(-90) }).count 
                 start-Sleep -Seconds $startsleep 
                 } 
                2{  
                 # All Users within 90 Days Online 
                 Get-ADUser -Properties lastlogondate -Filter * | select name, lastlogondate | where { $_.lastlogondate -gt (Get-Date).AddDays(-90) } 
                 start-Sleep -Seconds $startsleep 
                 } 
                3{ 
                 # CopyGroupMemberShip 
                 $user1 = Read-Host 'What is the name of the User where you want to copy from the AD Groups?' 
                 $user2 = Read-Host 'What is the name of the User where you want to copy the AD Groups to?' 
                 Get-ADUser -Identity $user1 -Properties memberof | 
                 Select-Object -ExpandProperty memberof | 
                 Add-ADGroupMember -Members $user2 -PassThru |  
                 Select-Object -Property SamAccountName 
                 start-Sleep -Seconds $startsleep 
                 } 
                4{ 
                 # ADuserGroupsNested 
                 $user = Read-Host 'What is the name of the User?' 
                 $usergroup = Get-ADuser -filter $user -Properties * | Get-ADPrincipalGroupMembership | select name 
                 ForEach ($groupname in  $usergroup) 
                    { 
                    Write-Output $groupname.name 
                    $CurrentGroupGroups = (GET-ADGROUP –Identity $groupname.name –Properties MemberOf | Select-Object MemberOf).MemberOf 
                    if ($CurrentGroupGroups -notlike "DC=bw,DC=local") 
                        { 
                        $Splitted = $CurrentGroupGroups.Split('=')[1].Split(',')[0] 
                        Write-Output "$Group is nested in : $splitted" 
                        Write-Output "" 
                        } 
                    Else 
                        { 
                        Write-Output "The Group is not Nested" 
                        Write-Output "" 
                        }  
                   } 
                 } 
                5{ 
                  # 
                  $users = Read-Host 'How many test users do you want to create?' 
                  $user = Read-Host 'What is the name of the Test User Account?' 
                  $domain = Read-Host 'Give de OU where this script create the test accounts?' 
                  $password=(Read-Host -AsSecureString "AccountPassword") 
                  for($i=1; $i -le ($users); $i++) { 
                  New-ADUser -SamAccountName "$user$i" -Name "$user$i" -GivenName "$user$i" -Surname "Test" -DisplayName "$user$i Test" -Path $domain -accountpassword $password 
                  start-Sleep -Seconds $startsleep 
                 } 
                           
               } 
              Default { Write-Output "You Selected Option 6 Go to Main Menu`n" ; break} 
            } 
        } 
        2 { 
            while ( $xMenu2 -lt 1 -or $xMenu2 -gt 3 ){ 
                CLS 
                # Present the Menu Options 
                Write-Output "`n`tComputers Tasks" -Fore Magenta 
                Write-Output "`t`tPlease select the administration task you require`n"  
                Write-Output "`t`t`t1. Export all Computers Name,OS,LastLogonDate"  
                Write-Output "`t`t`t2. AD Computer Group Nested"  
                Write-Output "`t`t`t3. Go to Main Menu`n"  
                [int]$xMenu2 = Read-Host "`t`tEnter Menu Option Number" 
            } 
            if$xMenu2 -lt 1 -or $xMenu2 -gt 3 ){ 
                Write-Output "`tPlease select one of the options available.`n" -Fore Red;start-Sleep -Seconds 1 
            } 
            Switch ($xMenu2){ 
                1{                 
                 #Export All Computers to CSV  
                 $location = Read-Host 'What is the Export Location? .txt' 
                 Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion,LastLogonDate | Export-CSV $location -NoTypeInformation -Encoding UTF8 
                 start-Sleep -Seconds $startsleep 
                 } 
                2{ 
                 # AD Computer Group Nested 
                 $computergroup = Get-ADComputer c17409 -Properties * | Get-ADPrincipalGroupMembership | select name 
                 ForEach ($groupname in  $computergroup) 
                    { 
                    Write-Output $groupname.name 
                    $CurrentGroupGroups = (GET-ADGROUP –Identity $groupname.name –Properties MemberOf | Select-Object MemberOf).MemberOf 
                    if ($CurrentGroupGroups -notlike "DC=bw,DC=local") 
                        { 
                        $Splitted = $CurrentGroupGroups.Split('=')[1].Split(',')[0] 
                        Write-Output "$Group zit nested in de groep: $splitted" 
                        Write-Output "" 
                        } 
                    Else 
                        { 
                        Write-Output "De groep is niet genested" 
                        Write-Output "" 
                        }  
                    } 
                 } 
                default { Write-Output "`n`tYou Selected Option 3 Go to Main Menu`n" ; break} 
            } 
        } 
        3 { 
            while ( $xMenu2 -lt 1 -or $xMenu2 -gt 4 ){ 
                CLS 
                # Present the Menu Options 
                Write-Output "`n`tGroup Tasks" -Fore Magenta 
                Write-Output "`t`tPlease select the administration task you require`n"  
                Write-Output "`t`t`t1. Count Group Members"   
                Write-Output "`t`t`t2. Export List of Group Members"   
                Write-Output "`t`t`t3. Get All Groups with Groups Nested"   
                Write-Output "`t`t`t4. Go to Main Menu`n"  
                [int]$xMenu2 = Read-Host "`t`tEnter Menu Option Number" 
                if$xMenu2 -lt 1 -or $xMenu2 -gt 4 ){ 
                    Write-Output "`tPlease select one of the options available.`n" -Fore Red;start-Sleep -Seconds 1 
                } 
            } 
            Switch ($xMenu2){ 
                1{ 
                 # Count Group Members 
                 $group = Read-Host 'What is the Group Name that you want to count?' 
                 (Get-ADGroupMember -Identity "$group").count 
                 start-Sleep -Seconds $startsleep 
                 } 
                2{ 
                  # Export Group Members 
                   $group = Read-Host 'What is the Group Name?' 
                   $location = Read-Host 'What is the Export Location? .txt' 
                   $users = Get-ADGroupMember $group | sort-object name 
                   ForEach ($line in $users) 
                   { 
                    $User = Get-ADuser -identity $line 
                    $name = $User.name 
                    $givenname = $user.GivenName 
                    $surname = $user.Surname 
                    Add-Content $location "`n$name - $GivenName $Surname" 
                   } 
                   start-Sleep -Seconds $startsleep 
                 } 
                3{ 
                 # Group Membership 
                 $Groups = (Get-ADGroup -Filter *).Name 
                 Foreach ($group in $Groups) 
                    { 
                    Write-Output "$group" 
                    Write-Output "groupsleden van $group" 
                    Get-ADGroupMember $group | Where-Object {$_.objectclass -like "Group"| ft name  
                    } 
                } 
                Default { Write-Output "`n`tYou Selected Option 3 Go to Main Menu`n" ; break} 
              } 
            }            
            4 { 
            while ( $xMenu2 -lt 1 -or $xMenu2 -gt 6 ){ 
                CLS 
                # Present the Menu Options 
                Write-Output "`n`tActive Directory Protected From Accidental Deletion Tasks" -Fore Magenta 
                Write-Output "`t`tPlease select the administration task you require`n"  
                Write-Output "`t`t`t1. ADuser ProtectedFromAccidentalDeletion"   
                Write-Output "`t`t`t2. ADGroup ProtectedFromAccidentalDeletion"   
                Write-Output "`t`t`t3. ADComputer ProtectedFromAccidentalDeletion"  
                Write-Output "`t`t`t4. ADOrganizationalUnit ProtectedFromAccidentalDeletion"  
                Write-Output "`t`t`t5. ADObject ProtectedFromAccidentalDeletion"  
                Write-Output "`t`t`t6. Go to Main Menu`n"  
                [int]$xMenu2 = Read-Host "`t`tEnter Menu Option Number" 
                if$xMenu2 -lt 1 -or $xMenu2 -gt 6 ){ 
                    Write-Output "`tPlease select one of the options available.`n" -Fore Red;start-Sleep -Seconds 1 
                } 
              } 
            Switch ($xMenu2){ 
                1{ 
                 # 
                 Get-ADuser –filter {name –like “*”} –properties ProtectFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion –eq $false| Set-Aduser -ProtectedFromAccidentalDeletion $true  
                 start-Sleep -Seconds $startsleep 
                 } 
                2{ 
                 # 
                 Get-ADgroup –filter {name –like “*”} –properties ProtectFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion –eq $false| Set-Adgroup -ProtectedFromAccidentalDeletion $true 
                 start-Sleep -Seconds $startsleep 
                 } 
                3{ 
                 # 
                 Get-ADcomputer–filter {name –like “*”} –properties ProtectFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion –eq $false| Set-ADcomputer -ProtectedFromAccidentalDeletion $true 
                 start-Sleep -Seconds $startsleep 
                 } 
                4{ 
                 # 
                 Get-ADOrganizationalUnit –filter {name –like “*”} –properties ProtectFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion –eq $false| Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true 
                 start-Sleep -Seconds $startsleep 
                 } 
                5{ 
                 # 
                 $domain = Read-Host 'What is the Domain Name?' 
                 Get-ADobject -Filter * -SearchBase $domain | Set-adobject -ProtectedFromAccidentalDeletion $True 
                 start-Sleep -Seconds $startsleep 
                 } 
                 Default { Write-Output "`n`tYou Selected Option 6 Go to Main Menu`n" ; break} 
                } 
             } 
             5 { 
            while ( $xMenu2 -lt 1 -or $xMenu2 -gt 3 ){ 
                CLS 
                # Present the Menu Options 
                Write-Output "`n`tActive Directory FSMO Task" -Fore Magenta 
                Write-Output "`t`tPlease select the administration task you require`n"  
                Write-Output "`t`t`t1. SchemaMaster DomainNamingMaster"   
                Write-Output "`t`t`t2. PDCEmulator RIDMaster InfrastructureMaster"   
                Write-Output "`t`t`t3. Go to Main Menu`n"  
                [int]$xMenu2 = Read-Host "`t`tEnter Menu Option Number" 
                if$xMenu2 -lt 1 -or $xMenu2 -gt 3 ){ 
                    Write-Output "`tPlease select one of the options available.`n" -Fore Red;start-Sleep -Seconds 1 
                } 
            } 
            Switch ($xMenu2){ 
                1{ 
                 # 
                 $domain = Read-Host 'What is the Domain Name?' 
                 Get-ADForest $domain | Format-Table SchemaMaster,DomainNamingMaster 
                 start-Sleep -Seconds $startsleep 
                 } 
                2{ 
                 # 
                 $domain = Read-Host 'What is the Domain Name?' 
                 Get-ADDomain $domain | format-table PDCEmulator,RIDMaster,InfrastructureMaster 
                 start-Sleep -Seconds $startsleep 
                 } 
                Default { Write-Output "`n`tYou Selected Option 3 Go to Main Menu`n" ; break} 
              } 
            } 
            6 { 
            while ( $xMenu2 -lt 1 -or $xMenu2 -gt 2 ){ 
                CLS 
                # Present the Menu Options 
                Write-Output "`n`tProfile Tasks" -Fore Magenta 
                Write-Output "`t`tPlease select the administration task you require`n"  
                Write-Output "`t`t`t1. Reset User Profile"  
                Write-Output "`t`t`t2. Go to Main Menu`n"  
                [int]$xMenu2 = Read-Host "`t`tEnter Menu Option Number" 
            } 
            if$xMenu2 -lt 1 -or $xMenu2 -gt 2 ){ 
                Write-Output "`tPlease select one of the options available.`n" -Fore Red;start-Sleep -Seconds 1 
            } 
            Switch ($xMenu2){ 
                1{                 
                    #Reset User Profile 
                    #Prompt for a computer to connect to  
                    $computer = Read-Host "Please enter a computer name" 
                    #Test network connection before making connection  
                    If ($computer -ne $Env:Computername) {      
                        If (!(Test-Connection -comp $computer -count 1 -quiet)) { 
                            Write-Warning "$computer is not accessible, please try a different computer or verify it is powered on."         
                            Break         
                            }      
                        }  
 
                    Try {          
                        #Verify that the OS Version is 6.0 and above, otherwise the script will fail      
                        If ((Get-WmiObject -ComputerName $computer Win32_OperatingSystem -ea stop).Version -lt 6.0) {          
                            Write-Warning "The Operating System of the computer is not supported.`nClient: Vista and above`nServer: Windows 2008 and above."         
                            Break         
                            }      
                        }  
                    Catch {      
                        Write-Warning "$($error[0])"     
                        Break     
                        }      
                    Do {      
                    #Gather all of the user profiles on computer  
                    Try {      
                        [array]$users = Get-WmiObject -ComputerName $computer Win32_UserProfile -filter "LocalPath Like 'C:\\Users\\%'" -ea stop      
                        } Catch { 
                            Write-Warning "$($error[0]) "     
                            Break     
                            }      
                    #Cache the number of users  
                    $num_users = $users.count    
 
                    Write-Output -ForegroundColor Green "User profiles on $($computer):"       
 
                        #Begin iterating through all of the accounts to display      
                        For ($i=0;$i -lt $num_users$i++) { 
                            Write-Output -ForegroundColor Yellow "$($i): $(($users[$i].localpath).replace('C:\Users\',''))"         
                            }      
                        Write-Output -ForegroundColor Red "q: Quit"     
                        #Prompt for user to select a profile to remove from computer      
                        Do {              
                            $account = Read-Host "Select a number to delete local profile or 'q' to quit"         
                            #Find out if user selected to quit, otherwise answer is an integer          
                            If ($account -NotLike "q*") { 
                                $account = $account -as [int]             
                                }          
                            }              
                        #Ensure that the selection is a number and within the valid range      
                        Until (($account -lt $num_users -AND $account -match "\d"-OR $account -Like "q*")      
                        If ($account -Like "q*") {          
                            Break         
                            }      
                        Write-Output -ForegroundColor Yellow "Deleting profile: $(($users[$account].localpath).replace('C:\Users\',''))"     
                        #Remove the local profile      
                        ($users[$account]).Delete() 
                        Write-Output -ForegroundColor Green "Profile:  $(($users[$account].localpath).replace('C:\Users\','')) has been deleted"       
     
                        #Configure yes choice      
                        $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes","Remove another profile."       
     
                        #Configure no choice      
                        $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No","Quit profile removal"       
     
                        #Determine Values for Choice      
                        $choice = [System.Management.Automation.Host.ChoiceDescription[]] @($yes,$no)        
     
                        #Determine Default Selection      
                        [int]$default = 0        
     
                        #Present choice option to user      
                        $userchoice = $host.ui.PromptforChoice("","Remove Another Profile?",$choice,$default)      
                        }  
                    #If user selects No, then quit the script      
                    Until ($userchoice -eq 1) 
     
                 start-Sleep -Seconds $startsleep 
                 } 
               Default { Write-Output "`n`tYou Selected Option 2 Go to Main Menu`n" ; break} 
              } 
            } 
                            
            7 { 
            while ( $xMenu2 -lt 1 -or $xMenu2 -gt 15 ){ 
                CLS 
                # Present the Menu Options 
                Write-Output "`n`tExchange Task Tasks" -Fore Magenta 
                Write-Output "`t`tPlease select the administration task you require`n"  
                Write-Output "`t`t`t1. Connect Remote Exchange Server"  
                Write-Output "`t`t`t2. Set Mailbox Dutch langage"  
                Write-Output "`t`t`t3. User AvailabilityOnly"  
                Write-Output "`t`t`t4. User LimitedDetails"  
                Write-Output "`t`t`t5. All Users AvailabilityOnly"  
                Write-Output "`t`t`t6. All Users LimitedDetails"  
                Write-Output "`t`t`t7. Send AS rights"  
                Write-Output "`t`t`t8. Send on Behalf"  
                Write-Output "`t`t`t9. Full Access"  
                Write-Output "`t`t`t10. Add User Editor Calender Permissions" 
                Write-Output "`t`t`t11. Enable DistributionGroup "  
                Write-Output "`t`t`t12. Convert Mailbox to Shared Mailbox" 
                Write-Output "`t`t`t13. Enable Single Shared Mailbox (Emails that are sent as a secondary mailbox are not saved in the delegate's Sent Items folder)" 
                Write-Output "`t`t`t14. Enable All Shared Mailbox (Emails that are sent as a secondary mailbox are not saved in the delegate's Sent Items folder)" 
                Write-Output "`t`t`t15. Go to Main Menu`n"  
                [int]$xMenu2 = Read-Host "`t`tEnter Menu Option Number" 
            } 
            if$xMenu2 -lt 1 -or $xMenu2 -gt 15 ){ 
                Write-Output "`tPlease select one of the options available.`n" -Fore Red;start-Sleep -Seconds 1 
            } 
            Switch ($xMenu2){ 
                1{                 
                 #Connect Remote Exchange Server 
                 $exchangeserver = Read-Host 'What is the FQDN from the Exchange Server?' 
                 $UserCredential = Get-Credential  
                 $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$exchangeserver/PowerShell/ -Authentication Kerberos -Credential $UserCredential  
                 Import-PSSession $Session 
                 } 
                2{ 
                 # Mailbox op NL zetten 
                 $user = Read-Host 'What is the User name?' 
                 Set-MailboxRegionalConfiguration -identity $user -timezone “W. Europe Standard Time”  -Language “nl-NL” 
                 } 
                3{ 
                 # User  AvailabilityOnly 
                 $user = Read-Host 'What is the User name?' 
                 Set-mailboxfolderpermission –identity ($user+':\calendar’) –user Default –Accessrights AvailabilityOnly 
                 } 
                4{ 
                 # User LimitedDetails  
                 $user = Read-Host 'What is the User name?' 
                 Set-mailboxfolderpermission –identity ($user+':\calendar’) –user Default –Accessrights LimitedDetails  
                 } 
                5{ 
                 # All Users  AvailabilityOnly 
                 $allmailbox = Get-Mailbox -Resultsize Unlimited  
                 Foreach ($Mailbox in $allmailbox) 
                 {Set-mailboxfolderpermission –identity ($Mailbox.alias+':\calendar’) –user Default –Accessrights AvailabilityOnly} 
                 } 
                6{ 
                 # User LimitedDetails 
                 $allmailbox = Get-Mailbox -Resultsize Unlimited  
                 Foreach ($Mailbox in $allmailbox) 
                 {Set-mailboxfolderpermission –identity ($Mailbox.alias+':\calendar’) –user Default –Accessrights LimitedDetails} 
                 } 
                7{ 
                 # Send-AS 
                 $user = Read-Host 'What is the User name?' 
                 $rights = Read-Host 'What is the User name that you want to give rights?' 
                 Add-ADPermission -Identity $user -User $rights -ExtendedRights "Send As" 
                 } 
                8{ 
                 # 
                 $user = Read-Host 'What is the User name?' 
                 $rights = Read-Host 'What is the User name that you want to give rights?' 
                 Set-Mailbox $user -GrantSendOnBehalfTo $rights 
                 } 
                9{ 
                 # 
                 $user = Read-Host 'What is the User name?' 
                 $rights = Read-Host 'What is the User name that you want to give rights?' 
                 Add-MailboxPermission -Identity $user -User $rights -AccessRights FullAccess -InheritanceType All 
                 } 
                10{ 
                  $user = Read-Host 'What is the User name?' 
                  $rights = Read-Host 'What is the User name that you want to give rights?' 
                  Add-MailboxFolderPermission ($user+':\calendar’) -User $rights –AccessRights editor 
                  } 
                11{ 
                  $group = Read-Host 'What is the group name?' 
                  Enable-DistributionGroup -Identity $group 
                  } 
                12{ 
                  $mailbox = Read-Host 'What is the Mailbox name that you want to covert to Shared?' 
                  Set-Mailbox $mailbox -Type Shared 
                  } 
                13{ 
                  $mailbox = Read-Host 'What is the Shared Mailbox name?' 
                  Set-Mailbox $mailbox -MessageCopyForSendOnBehalfEnabled $True 
                  Set-Mailbox $mailbox -MessageCopyForSentAsEnabled $True 
                  } 
                14{ 
                  Get-Mailbox -RecipientTypeDetails Shared | Set-Mailbox -MessageCopyForSentAsEnabled $True 
                  Get-Mailbox -RecipientTypeDetails Shared | Set-Mailbox -MessageCopyForSendOnBehalfEnabled $True 
                  } 
                  Default { Write-Output "`n`tYou Selected Option 12 Go to Main Menu`n" ; break} 
                } 
            }     
           8 { 
            while ( $xMenu2 -lt 1 -or $xMenu2 -gt 2 ){ 
                CLS 
                # Present the Menu Options 
                Write-Output "`n`tLync Tasks" -Fore Magenta 
                Write-Output "`t`tPlease select the administration task you require`n"  
                Write-Output "`t`t`t1. Connect Remote Lync Server"  
                Write-Output "`t`t`t2. Go to Main Menu`n"  
                [int]$xMenu2 = Read-Host "`t`tEnter Menu Option Number" 
            } 
            if$xMenu2 -lt 1 -or $xMenu2 -gt 2 ){ 
                Write-Output "`tPlease select one of the options available.`n" -Fore Red;start-Sleep -Seconds 1 
            } 
            Switch ($xMenu2){ 
                1{                 
                 #Connect to Lync Server 
                 $lyncserver = Read-Host 'What is the FQDN from the Lync Server?' 
                 $credential = Get-Credential 
                 $sessionoption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck 
                 $session = New-PSSession -ConnectionUri https://$lyncserver/ocspowershell -Credential  $credential -SessionOption $sessionOption 
                 import-pssession $session 
                 } 
               Default { Write-Output "`n`tYou Selected Option 2 Go to Main Menu`n" ; break} 
              } 
          } 
              
       default { $global:xExitSession=$true;break } 
    } 
} 
LoadMenuSystem 
If ($xExitSession){ 
    exit    
    $host.ui.RawUI.ForegroundColor = $t 
} 
else{ 
    .\ExchangeLyncAdminScript.ps1 
}