Microsoft fait tout ce qui est en son pouvoir pour faire de PowerShell le choix des utilisateurs expérimentés et des rédacteurs d'automatisation du monde entier. L'époque de la compilation de code dans .NET est révolue pour que nous puissions faire la même chose. Désormais, vous n'avez plus besoin que de notepad.exe et de Google. Nous en sommes très férus au bureau, d’autant plus que la console de gestion d’Exchange 2007 n'inclut PAS tout ce que vous pouvez faire dans PowerShell. Microsoft a délibérément échoué à mettre en œuvre des tâches qui ne se font que de temps en temps, plus faciles à développer de cette façon, ce qui oblige carrément à les utiliser si vous avez quelque chose qui ressemble à un environnement complexe.
La gestion de la nouvelle génération de produits Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) possède tous des points d'ancrage PowerShell très riches. Une fois que Remote Powershell (PowerShell 2.0 IIRC) sera déployé avec Server 2008 R2, il deviendra encore PLUS utile pour les rédacteurs automatisés.
Qu'est-ce que nous en avons fait:
- Créez une page Web pour déléguer certaines tâches d'administration aux utilisateurs du service d'assistance. La page Web déclenche les commandes exécutées dans PowerShell. Les choses qu'il fait:
- Créer et supprimer des comptes d'utilisateurs, y compris le provisioning des boîtes aux lettres Exchange 2007 et des répertoires de base
- Déverrouille les comptes verrouillés
- Créer / supprimer des groupes
- Ajouter / supprimer des utilisateurs des groupes
- Déplacer les utilisateurs entre les magasins de courrier
- Définir les mots de passe
- Prenez des extraits du système ERP et insérez chaque soir des données de carnet d'adresses global dans Active Directory.
- Résolvez le problème LegacyExchangeDN qui a surgi lors de notre migration Exchange 2003 vers Exchange 2007. Il a fallu ajouter une adresse X500 à toutes les personnes qui travaillaient auparavant dans Exchange 2003. Un script PowerShell assez court l'a corrigée.
- Création par script de "boîtes aux lettres de groupe" (boîtes aux lettres partagées dans Exchange où plusieurs utilisateurs ont accès à la boîte aux lettres), processus autrement manuel en raison de la nature des données dont nous avons besoin avant de commencer. Cela a grandement standardisé la configuration de ces boîtes aux lettres.
- Création d'un script qui parcourait toutes les machines dominées en réinitialisant une clé de registre spécifique et en redémarrant un service. Cela a pris 18 heures, mais le travail a été accompli.
Alors oui, PowerShell va rester avec nous pendant un bon bout de temps.
EDIT : Ajouter un exemple de code, car il a été demandé
$ list = import-csv ("groupusers.csv")
$ lastseengroup = $ list [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{rédigé - dans le format de, ou = groupes, dc = domaine, dc = domaine, dc = domaine}"
Liste de membres Clear-Variable
Nombre inconnu d'utilisateurs inconnus
foreach ($ entry dans $ list) {
if ($ ($ entry.group) -ne $ lastseengroup) {
echo "est tombé sur le nouveau groupe $ ($ entry.group), en validant les modifications apportées à $ lastseengroup"
$ newgroup = $ ADgroupPrefix + $ lastseengroup
$ newgroupdn = '"' +" cn = $ newgroup $ ADGroupSuffix "+ '"'
echo "obtenir le DN pour $ newgroup"
$ existinggroup = dsquery group domainroot -name $ newgroup
if (($ existinggroup -ne $ null)) {
dsmod groupe $ newgroupdn -chmbr $ memberlist
} autre {
groupe dsadd $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Groupe importé de eDirectory"
}
Liste de membres Clear-Variable
}
$ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
if ($ User.isvalid) {
$ UserDN = $ User.distinguishedname
$ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
} autre {
$ unknownusers = $ unknownusers + $ ($ entry.member)
}
$ lastseengroup = $ ($ entry.group)
}
groupe dsadd "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp yes -members $ memberlist
Cela prend un fichier CSV créé avec un script Perl et met à jour un ensemble de groupes. Si le groupe existe déjà, il remplace l'appartenance par celui spécifié dans le fichier. Si le groupe n'existe pas, il le crée. Ceci est une synchronisation à sens unique. En outre, pas encore en production, mais proche.