Add existing scripts
This commit is contained in:
		
							
								
								
									
										118
									
								
								alias-toolkit.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								alias-toolkit.ps1
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,118 @@
 | 
				
			|||||||
 | 
					function Show-Menu {
 | 
				
			||||||
 | 
					    param (
 | 
				
			||||||
 | 
					        [string]$Title = 'Alias Toolkit by Jeremy Berkleef'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    Clear-Host
 | 
				
			||||||
 | 
					    Write-Host -ForegroundColor Green "================ $Title ================"
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Write-Host "1: Press" -NoNewline 
 | 
				
			||||||
 | 
					    Write-Host -ForegroundColor Cyan " '1' " -NoNewline
 | 
				
			||||||
 | 
					    Write-Host "to list the contents of a .csv."
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Write-Host "2: Press" -NoNewline
 | 
				
			||||||
 | 
					    Write-Host -Foregroundcolor Cyan " '2' " -NoNewline
 | 
				
			||||||
 | 
					    Write-Host "to apply the contents of a .csv to the currently logged in Exchange Online session."
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Write-Host "3: Press" -NoNewline
 | 
				
			||||||
 | 
					    Write-Host -ForegroundColor Cyan " '3' " -NoNewline
 | 
				
			||||||
 | 
					    Write-Host "to create a .csv file of aliases from Exchange based on a search term."
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Write-Host "4: Press" -NoNewline
 | 
				
			||||||
 | 
					    Write-Host -ForegroundColor Cyan " '4' " -NoNewline
 | 
				
			||||||
 | 
					    Write-Host "to use the legacy search script and output the alias list to console."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Write-Host "Q: Press" -NoNewline
 | 
				
			||||||
 | 
					    Write-Host -ForegroundColor Red " 'Q' " -NoNewline
 | 
				
			||||||
 | 
					    Write-Host "to quit."
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					do
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Show-Menu
 | 
				
			||||||
 | 
					    $selection = Read-Host "Please make a selection"
 | 
				
			||||||
 | 
					    switch ($selection)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    '1' {
 | 
				
			||||||
 | 
					        #Ask where the .csv is
 | 
				
			||||||
 | 
					        $CsvLocation = Read-Host -Prompt 'CSV path'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #Print a new line
 | 
				
			||||||
 | 
					        Write-Host `n
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #Read the .csv and print it to console
 | 
				
			||||||
 | 
					        Import-Csv $CsvLocation | ForEach-Object {
 | 
				
			||||||
 | 
					            Write-Host -Foregroundcolor Red -Backgroundcolor White (Write-Output $_.Displayname);
 | 
				
			||||||
 | 
					            write-Host -foregroundcolor Green -Separator `n (Write-Output $_.EmailAddresses.Split(";"))
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    '2' {
 | 
				
			||||||
 | 
					        #Ask where the .csv is and import the values into the Alias_List variable
 | 
				
			||||||
 | 
					        $CsvLocation = Read-Host -Prompt 'CSV path'
 | 
				
			||||||
 | 
					        $Alias_list = Import-Csv $CsvLocation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #Print a new line
 | 
				
			||||||
 | 
					        Write-Host `n
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #Read the .csv, apply the aliases and print the resulting aliases
 | 
				
			||||||
 | 
					        Foreach ($Alias in $Alias_list) {
 | 
				
			||||||
 | 
					            Set-Mailbox -Identity $Alias.Displayname -EmailAddresses $Alias.EmailAddresses.Split(";")
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #Get the mailboxes from Exchange Online and print the email addresses to confirm the changes.
 | 
				
			||||||
 | 
					        Foreach ($Alias in $Alias_list) {
 | 
				
			||||||
 | 
					            $addresses = (Get-ExoMailbox -Identity $Alias.Displayname).EmailAddresses
 | 
				
			||||||
 | 
					            if ($addresses -eq $Alias.EmailAddresses) {
 | 
				
			||||||
 | 
					                Write-Host "$($Alias.Displayname)" -NoNewline
 | 
				
			||||||
 | 
					                Write-Host -ForegroundColor Green "    Success!"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                Write-Host "$($Alias.Displayname)" -NoNewline
 | 
				
			||||||
 | 
					                Write-Host -ForegroundColor Red "    FAILURE" 
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    '3' {
 | 
				
			||||||
 | 
					        #Ask the user what we're looking for and we're we're going to save the .csv
 | 
				
			||||||
 | 
					        $searchTerm = Read-Host -Prompt 'Input search query'
 | 
				
			||||||
 | 
					        $CsvSavePath = Read-Host -Prompt 'Input location to save .csv'
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        #List Aliases and select 
 | 
				
			||||||
 | 
					        get-mailbox | Where-Object {$_.EmailAddresses -like "$searchTerm"}  | Select-Object Displayname,@{Name="EmailAddresses";Expression={$_.EmailAddresses}} | Export-Csv -NoTypeInformation $CsvSavePath
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        #Remind the user that they need to fix the csv formatting.
 | 
				
			||||||
 | 
					        Write-Host -ForegroundColor Red -BackgroundColor Black "Please be sure to remember to format the .csv correctly before importing it back into an Exchange Server or Exchange Online"
 | 
				
			||||||
 | 
					        Write-Host `n
 | 
				
			||||||
 | 
					        Write-Host -BackgroundColor Black -ForegroundColor Blue "Before importing, delete the non-email addresses from the .csv and replace the spaces between addresses with ';'.`nThis is a safety measure to prevent applying an incompatible address."
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    '4' {
 | 
				
			||||||
 | 
					        # Ask the user what we need to search for
 | 
				
			||||||
 | 
					        $searchTerm = Read-Host -Prompt 'Input Query'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #List Aliases 
 | 
				
			||||||
 | 
					        get-mailbox | Where-Object {$_.EmailAddresses -like "$searchTerm"}  |ForEach-Object{ 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $host.UI.Write("White", $host.UI.RawUI.BackGroundColor, "`nUser Name: " + $_.DisplayName+"`n")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for ($i=0;$i -lt $_.EmailAddresses.Count; $i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            $address = $_.EmailAddresses[$i]
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					            $host.UI.Write("Green", $host.UI.RawUI.BackGroundColor, $address.AddressString.ToString()+"`t")
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if ($address.IsPrimaryAddress)
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					        $host.UI.Write("Blue", $host.UI.RawUI.BackGroundColor, "Primary Email Address`n")
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        $host.UI.Write("Red", $host.UI.RawUI.BackGroundColor, "Alias`n")
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    Read-Host -Prompt 'Press Enter to Continue'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					until ($selection -eq 'q')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										14
									
								
								list-alias-csv-content.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								list-alias-csv-content.ps1
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					# Author: Jeremy Berkleef
 | 
				
			||||||
 | 
					# This script will list the output of the generated alias .csv in console
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Ask where the .csv is
 | 
				
			||||||
 | 
					$CsvLocation = Read-Host -Prompt 'CSV path'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Print a new line
 | 
				
			||||||
 | 
					Write-Host `n
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Read the .csv and print it to console
 | 
				
			||||||
 | 
					Import-Csv $CsvLocation | ForEach-Object {
 | 
				
			||||||
 | 
					    Write-Host -Foregroundcolor Red -Backgroundcolor White (Write-Output $_.Displayname);
 | 
				
			||||||
 | 
					    write-Host -foregroundcolor Green -Separator `n (Write-Output $_.EmailAddresses.Split(";"))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
							
								
								
									
										26
									
								
								search-email-addresses.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								search-email-addresses.ps1
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					# By: Jeremy Berkleef
 | 
				
			||||||
 | 
					# The following script will search email addresses based on the search term and spit out all the aliases
 | 
				
			||||||
 | 
					# Ask the user what we need to search for
 | 
				
			||||||
 | 
					$searchTerm = Read-Host -Prompt 'Input Query'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#List Aliases 
 | 
				
			||||||
 | 
					get-mailbox | Where-Object {$_.EmailAddresses -like "$searchTerm"}  |ForEach-Object{ 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 $host.UI.Write("White", $host.UI.RawUI.BackGroundColor, "`nUser Name: " + $_.DisplayName+"`n")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 for ($i=0;$i -lt $_.EmailAddresses.Count; $i++)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					    $address = $_.EmailAddresses[$i]
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    $host.UI.Write("Green", $host.UI.RawUI.BackGroundColor, $address.AddressString.ToString()+"`t")
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    if ($address.IsPrimaryAddress)
 | 
				
			||||||
 | 
					    { 
 | 
				
			||||||
 | 
					    	$host.UI.Write("Blue", $host.UI.RawUI.BackGroundColor, "Primary Email Address`n")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					   else
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					    	$host.UI.Write("Red", $host.UI.RawUI.BackGroundColor, "Alias`n")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user