############################################################################################################## ### Initialisation du script ############################################################################################################## $domain = "@ykn.local"; $exchange_server = "http://exchange2010.ykn.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."; }