1
0
vrac/exchange-via-powershell-en-session-distante.ps1
2020-05-13 12:47:32 +02:00

77 lines
3.4 KiB
PowerShell

##############################################################################################################
### Initialisation du script
##############################################################################################################
$domain = "@inios.local";
$exchange_server = "http://exchange2010.inios.local/PowerShell/";
##############################################################################################################
### Pré-chauffage
##############################################################################################################
### Changer la couleur de la console
$host.UI.RawUI.BackgroundColor = "Black";
### Vérifier que la session n'est pas déjà ouverte
if (Get-Command "Get-Mailbox" -ErrorAction SilentlyContinue) {
Write-Host "[" -NoNewline; Write-Host "OK" -NoNewline -foregroundcolor "DarkGreen"; Write-Host "] " -NoNewline;
Write-Host "Exchange session are already launched.";
exit;
}
### Se positionner
Set-Location "c:\";
##############################################################################################################
### Traiement
##############################################################################################################
### Boucler tant que la connexion echoue
do {
## Afficher un message
Write-Host "[" -NoNewline; Write-Host "LOADING" -NoNewline -foregroundcolor "DarkGreen"; Write-Host "] " -NoNewline;
Write-Host "Exchange administrator credentials needed.";
## Récupérer les identifiant d'administration Exchange
Write-Host "[" -NoNewline; Write-Host "ANSWER" -NoNewline -foregroundcolor "Yellow"; Write-Host "] " -NoNewline;
$exchange_login = Read-Host "Login (without domain)";
Write-Host "[" -NoNewline; Write-Host "ANSWER" -NoNewline -foregroundcolor "Yellow"; Write-Host "] " -NoNewline;
$exchange_password = Read-Host "Password" -AsSecureString;
## Ajouter le domaine au login de l'administrateur
$exchange_login += $domain;
## Créer les droits pour lancer la session
$exchange_auth = New-Object -typename System.Management.Automation.PSCredential -ArgumentList $exchange_login, $exchange_password;
### Créer la session vers le serveur Exchange
$exchange_session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $exchange_server -Authentication Kerberos -Credential $exchange_auth -Name "Exchange" -ErrorAction SilentlyContinue;
## Si la session n'est pas ouverte
if (!$exchange_session) {
# Afficher un message
Write-Host "[" -NoNewline; Write-Host "ERROR" -NoNewline -foregroundcolor "Red"; Write-Host "] " -NoNewline;
Write-Host "Impossible to open a session : check parameters or credentials!";
Write-Host "[" -NoNewline; Write-Host "ANSWER" -NoNewline -foregroundcolor "Yellow"; Write-Host "] " -NoNewline;
$retry = Read-Host "Retry ? [Y]es [N]o";
# SI la réponse est oui
if ($retry.ToLower() -eq "y") {$loop = $true;} else {$loop = $false;}
}
else {$loop = $false;}
}
while ($loop);
### Si la session n'est pas ouverte
if (!$exchange_session) {
Write-Host "[" -NoNewline; Write-Host "ERROR" -NoNewline -foregroundcolor "Red"; Write-Host "] " -NoNewline;
Write-Host "Exchange session is not open, if you are a parent, quit!";
exit 1;
}
else {
## Ouvrir la session
$null = Import-PSSession $exchange_session -DisableNameChecking;
## Afficher un message
Write-Host "[" -NoNewline; Write-Host "OK" -NoNewline -foregroundcolor "DarkGreen"; Write-Host "] " -NoNewline;
Write-Host "Exchange session is ready to get command.";
}