Microsoft sta facendo tutto il possibile per rendere PowerShell la scelta di utenti esperti e scrittori di automazione ovunque. Sono finiti i giorni della compilazione del codice in .NET per fare la stessa cosa, ora hai solo bisogno di notepad.exe e google. Siamo grandi fan in ufficio, soprattutto perché la console di gestione di Exchange 2007 NON include tutto ciò che è possibile fare in PowerShell. Microsoft ha deliberatamente fallito nell'implementare cose che vengono fatte solo una volta ogni tanto, più facili da sviluppare in quel modo, il che ne costringe decisamente l'uso se hai qualcosa che assomiglia a un ambiente complesso.
La gestione della nuova generazione di prodotti Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) hanno tutti hook di PowerShell molto ricchi. Una volta che Remote Powershell (PowerShell 2.0 IIRC) viene distribuito con Server 2008 R2, diventerà ancora PIÙ utile per gli autori di automazioni.
Cosa ne abbiamo fatto:
- Creare una pagina Web per delegare determinate attività amministrative agli utenti dell'helpdesk. La pagina Web genera comandi che vengono eseguiti in PowerShell. Cose che fa:
- Creare ed eliminare account utente, incluso il provisioning delle cassette postali e delle home directory di Exchange 2007
- Sblocca gli account bloccati
- Crea / elimina gruppi
- Aggiungi / rimuovi utenti dai gruppi
- Sposta gli utenti tra i negozi di posta
- Imposta password
- Prendi estratti dal sistema ERP e trasferisci i dati della rubrica globale in Active Directory ogni notte.
- Risolvi il problema LegacyExchangeDN che è emerso con la nostra migrazione da Exchange 2003 a Exchange 2007. Ho dovuto aggiungere un indirizzo X500 a tutti quelli che erano su Exchange 2003. Uno script PowerShell abbastanza breve lo ha risolto.
- Creazione tramite script di "cassette postali di gruppo" (cassette postali condivise in Exchange in cui più utenti hanno accesso alla cassetta postale), un processo altrimenti manuale a causa della natura dei dati di cui abbiamo bisogno prima di dare il via. Ha standardizzato notevolmente l'installazione di queste cassette postali.
- Creato uno script che ha esaminato tutte le macchine di dominio ripristinando una chiave di registro specifica e riavviando un servizio. Ci sono volute 18 ore per il completamento, ma il lavoro è stato completato.
Quindi sì, PowerShell sarà con noi da un po 'di tempo.
EDIT : aggiunta di un esempio di codice, poiché è stato richiesto
$ List = Import-CSV ( "groupusers.csv")
$ Lastseengroup = $ list [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{redatto - nel formato di, ou = gruppi, dc = dominio, dc = dominio, dc = dominio}"
Elenco dei membri Clear-Variable
Utenti sconosciuti a variabile libera
foreach ($ entry in $ list) {
if ($ ($ entry.group) -ne $ lastseengroup) {
echo "inciampato nel nuovo gruppo $ ($ entry.group), eseguendo le modifiche in $ lastseengroup"
$ Newgroup = $ ADgroupPrefix + $ lastseengroup
$ Newgroupdn = ' " '+ "cn = $ newgroup $ ADGroupSuffix" +'"'
echo "ottenere DN per $ newgroup"
$istinggroup = gruppo dsquery domainroot -name $ newgroup
if (($istinggroup -ne $ null)) {
dsmod group $ newgroupdn -chmbr $ memberlist
} altro {
gruppo dsadd $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Gruppo importato da eDirectory"
}
Elenco dei membri Clear-Variable
}
$ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
if ($ User.isvalid) {
$ DNUtente = $ User.distinguishedname
$ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
} altro {
$ unknownusers = $ unknownusers + $ ($ entry.member)
}
$ Lastseengroup = $ ($ entry.group)
}
gruppo dsadd "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp yes -members $ memberlist
Questo prende un file CSV creato con uno script perl e aggiorna una serie di gruppi. Se il gruppo esiste già, sostituisce l'appartenenza con quella specificata nel file. Se il gruppo non esiste, lo crea. Questa è una sincronizzazione unidirezionale. Inoltre, non ancora in produzione, ma vicino.