Le PowerShell est à Windows ce que le script bash est à Linux, ça simplifie la vie et ca fais gagner du temps, donc j’en use et j’en abuse.
D’ailleur je vais vous présenter deux petits scripts bien utile qui permettent de désactiver l’ActiveSync et l’OWA pour tout le parc sauf les users d’un groupe.
La première chose à faire et de créer nos groupes, pour l’OWA ca sera « OWA Enabled » et pour l’ActiveSync « ActiveSync Enabled », et d’y ajouter les utilisateur qui pourront accéder, rien de bien compliqué. La seconde étape et de créer les fichier Powershell et de les exécuter via le Shell Exchange.
ActiveSync.ps1
#Load User Group $asUsers = get-group "ActiveSync Enabled" #Load All Users $allUsers = Get-Mailbox -resultsize Unlimited foreach ($user in $allUsers) { #Set tmpUserCas variable to CasMailbox object of the user $tmpUserCas = Get-CASMailbox $user #Check if user is a member of the group if($asUsers.Members -Contains $User.DistinguishedName) { #Enable ActiveSync if ($tmpUserCas.ActiveSyncEnabled -ne $true) { $user | Set-CASMailbox -ActiveSyncEnabled $true Write-Host $user.Name "Is part of" $asUsers.Name "||| User's ActiveSync Enabled" } else {Write-Host $user.Name "Is part of" $asUsers.Name "||| User's ActiveSync Already Enabled" } } else { #Check if User's ActiveSync is enabled if ($tmpUserCas.ActiveSyncEnabled -eq $true) { #Turn off user's activesync $user | Set-CASMailbox -ActiveSyncEnabled $false Write-Host $user.Name "Is NOT part of" $asUsers.Name "||| User's ActiveSync Disabled" } else { Write-Host $user.Name "Is NOT part of" $asUsers.Name "||| User's ActiveSync Already Disabled"} } }
OWA.ps1
#Load User Group $asUsers = get-group "OWA Enabled" #Load All Users $allUsers = Get-Mailbox -resultsize Unlimited foreach ($user in $allUsers) { #Set tmpUserCas variable to CasMailbox object of the user $tmpUserCas = Get-CASMailbox $user ##Check if user is a member of the group if($asUsers.Members -Contains $User.DistinguishedName) { #Enable OWA if ($tmpUserCas.OWAEnabled -ne $true) { $user | Set-CASMailbox -OWAEnabled $true Write-Host $user.Name "Is part of" $asUsers.Name "||| User's OWA Enabled" } else {Write-Host $user.Name "Is part of" $asUsers.Name "||| User's OWA Already Enabled" } } else { #Check if User's OWA is enabled if ($tmpUserCas.OWAEnabled -eq $true) { #Turn off user's OWA $user | Set-CASMailbox -OWAEnabled $false Write-Host $user.Name "Is NOT part of" $asUsers.Name "||| User's OWA Disabled" } else { Write-Host $user.Name "Is NOT part of" $asUsers.Name "||| User's OWA Already Disabled"} } }
Si vous avez besoin de scheduler une tache quotidienne qui executera ces scripts, il faut dans un premier temps ajouter au début des PS1 cette ligne, elle permet d’ajouter le snap-in pour interpréter les commandes Exchange 2010 (Différent pour Exchange 2007)
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
Ensuite nous pourrons appeler un fichier batch contenant ces deux lignes :
Powershell -command "& {E:\ActiveSync.ps1 }" Powershell -command "& {E:\OWA.ps1 }"