Add script and readme
This commit is contained in:
parent
becb70f2e9
commit
37fb0e9e5f
81
AliasManagement.ps1
Normal file
81
AliasManagement.ps1
Normal file
@ -0,0 +1,81 @@
|
||||
function Add-Alias {
|
||||
# Clear the screen for better UI experience
|
||||
Clear-Host
|
||||
Write-Host "===== Add Alias to User ====="
|
||||
|
||||
# Prompting for User Principal Name (UPN) and Alias
|
||||
$UPN = Read-Host "Enter the User Principal Name (UPN) of the user (e.g., user@example.com)"
|
||||
$Alias = Read-Host "Enter the alias to be added (e.g., alias@example.com)"
|
||||
|
||||
# Get the User object from Active Directory
|
||||
try {
|
||||
$User = Get-ADUser -Filter { UserPrincipalName -eq $UPN } -Properties proxyAddresses -ErrorAction Stop
|
||||
} catch {
|
||||
Write-Host "Error: User $UPN not found in Active Directory." -ForegroundColor Red
|
||||
Pause "Press Enter to continue..."
|
||||
return
|
||||
}
|
||||
|
||||
# Check if the Alias is already added to the proxyAddresses attribute
|
||||
if ($User.proxyAddresses -contains "smtp:$Alias") {
|
||||
Write-Host "Alias '$Alias' is already added to the user's proxyAddresses attribute." -ForegroundColor Yellow
|
||||
Pause "Press Enter to continue..."
|
||||
return
|
||||
}
|
||||
|
||||
# Add the Alias to the proxyAddresses attribute
|
||||
$User.proxyAddresses += "smtp:$Alias"
|
||||
|
||||
# Update the user object in Active Directory
|
||||
try {
|
||||
Set-ADUser -Instance $User -ErrorAction Stop
|
||||
Write-Host "Alias '$Alias' added successfully to the user's proxyAddresses attribute." -ForegroundColor Green
|
||||
} catch {
|
||||
Write-Host "Error: Failed to update the user object in Active Directory." -ForegroundColor Red
|
||||
}
|
||||
|
||||
Pause "Press Enter to continue..."
|
||||
}
|
||||
|
||||
function Sync-Delta {
|
||||
# Clear the screen for better UI experience
|
||||
Clear-Host
|
||||
Write-Host "===== Delta Sync ====="
|
||||
|
||||
# Run Azure Active Directory synchronization
|
||||
Start-ADSyncSyncCycle -PolicyType Delta
|
||||
|
||||
# Check if synchronization jobs are running and wait for them to finish
|
||||
do {
|
||||
Write-Host "Waiting for synchronization to finish..." -ForegroundColor Cyan
|
||||
Start-Sleep -Seconds 10
|
||||
$IsSyncInProgress = Get-ADSyncConnectorRunStatus | Where-Object { $_.Status -eq "InProgress" }
|
||||
} while ($IsSyncInProgress)
|
||||
|
||||
Write-Host "Azure Active Directory synchronization completed successfully." -ForegroundColor Green
|
||||
Pause "Press Enter to continue..."
|
||||
}
|
||||
|
||||
# Main loop
|
||||
while ($true) {
|
||||
Clear-Host
|
||||
Write-Host "===== Active Directory Alias Management ====="
|
||||
Write-Host "Choose an option:"
|
||||
Write-Host "1. Add alias"
|
||||
Write-Host "2. Exit"
|
||||
$Choice = Read-Host "Enter your choice (1 or 2)"
|
||||
|
||||
switch ($Choice) {
|
||||
1 {
|
||||
Add-Alias
|
||||
}
|
||||
2 {
|
||||
Sync-Delta
|
||||
exit
|
||||
}
|
||||
default {
|
||||
Write-Host "Invalid choice. Please enter 1 or 2." -ForegroundColor Red
|
||||
Pause "Press Enter to continue..."
|
||||
}
|
||||
}
|
||||
}
|
||||
94
README.md
94
README.md
@ -1,2 +1,96 @@
|
||||
# Active Directory Alias Management Script
|
||||
|
||||
This PowerShell script allows you to manage user aliases in Active Directory and perform a delta sync with Azure Active Directory. The script provides a simple user interface to add aliases to users and perform synchronization.
|
||||
|
||||
## Features
|
||||
|
||||
- Add alias to a user's `proxyAddresses` attribute in Active Directory.
|
||||
- Perform a delta sync with Azure Active Directory.
|
||||
- User-friendly interface with clear instructions and feedback.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Windows PowerShell
|
||||
- Active Directory module for Windows PowerShell
|
||||
- Azure Active Directory Connect installed and configured
|
||||
|
||||
## Usage
|
||||
|
||||
1. **Clone or download the script:**
|
||||
|
||||
2. **Run the script:**
|
||||
|
||||
```powershell
|
||||
.\AliasManagement.ps1
|
||||
```
|
||||
|
||||
3. **Follow the prompts:**
|
||||
|
||||
- The script will provide options to either add an alias to a user or exit and perform a delta sync.
|
||||
- When adding an alias, you will be prompted to enter the User Principal Name (UPN) and the alias.
|
||||
- After adding an alias, the script will update the user in Active Directory and provide feedback.
|
||||
- On exiting, the script will perform a delta sync and wait for it to complete before closing.
|
||||
|
||||
## Script Walkthrough
|
||||
|
||||
### Add Alias
|
||||
|
||||
- Prompts for User Principal Name (UPN) and alias.
|
||||
- Checks if the user exists in Active Directory.
|
||||
- Checks if the alias is already present in the user's `proxyAddresses` attribute.
|
||||
- Adds the alias if it is not already present.
|
||||
- Updates the user object in Active Directory.
|
||||
- Provides feedback on success or failure.
|
||||
|
||||
### Delta Sync
|
||||
|
||||
- Runs Azure Active Directory synchronization.
|
||||
- Waits for the synchronization to complete.
|
||||
- Provides feedback when the synchronization is complete.
|
||||
|
||||
## Example
|
||||
|
||||
1. **Starting the script:**
|
||||
|
||||
```plaintext
|
||||
===== Active Directory Alias Management =====
|
||||
Choose an option:
|
||||
1. Add alias
|
||||
2. Exit
|
||||
Enter your choice (1 or 2):
|
||||
```
|
||||
|
||||
2. **Adding an alias:**
|
||||
|
||||
```plaintext
|
||||
===== Add Alias to User =====
|
||||
Enter the User Principal Name (UPN) of the user (e.g., user@example.com): user@example.com
|
||||
Enter the alias to be added (e.g., alias@example.com): alias@example.com
|
||||
Alias 'alias@example.com' added successfully to the user's proxyAddresses attribute.
|
||||
Press Enter to continue...
|
||||
```
|
||||
|
||||
3. **Exiting and performing delta sync:**
|
||||
|
||||
```plaintext
|
||||
===== Delta Sync =====
|
||||
Waiting for synchronization to finish...
|
||||
Azure Active Directory synchronization completed successfully.
|
||||
Press Enter to continue...
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- Ensure you have the necessary permissions to update user objects in Active Directory and perform synchronization.
|
||||
- The script uses `Clear-Host` to clear the screen for a better user experience.
|
||||
- Use appropriate error handling and logging as needed for your environment.
|
||||
|
||||
## License
|
||||
|
||||
This script is provided under the MIT License. See the LICENSE file for details.
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Please submit a pull request or open an issue to discuss changes.
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user