Microsoft está haciendo todo lo posible para que PowerShell sea la elección de los usuarios avanzados y los escritores de automatización en todas partes. Atrás quedaron los días de compilar código en .NET para hacer lo mismo, ahora solo necesita notepad.exe y google. Somos grandes admiradores en la oficina, especialmente porque la Consola de administración de Exchange 2007 NO incluye todo lo que puede hacer en PowerShell. Microsoft falló deliberadamente en implementar cosas que solo se hacen de vez en cuando, más fáciles de desarrollar de esa manera, lo que obliga a su uso si tiene algo parecido a un entorno complejo.
La administración de la nueva generación de productos de Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) tiene todos los ganchos de PowerShell muy ricos. Una vez que Remote Powershell (PowerShell 2.0 IIRC) se implemente con Server 2008 R2, será aún MÁS útil para los escritores de automatización.
Lo que hemos hecho con él:
- Cree una página web para delegar ciertas tareas administrativas a los usuarios del servicio de asistencia. La página web dispara comandos que se ejecutan en PowerShell. Cosas que hace:
- Crear y eliminar cuentas de usuario, incluido el aprovisionamiento de buzones de Exchange 2007 y directorios de inicio
- Desbloquea cuentas bloqueadas
- Crear / eliminar grupos
- Agregar / eliminar usuarios de grupos
- Mover usuarios entre almacenes de correo
- Establecer contraseñas
- Tome extractos del sistema ERP e inserte datos de la libreta de direcciones global en Active Directory todas las noches.
- Resuelva el problema de LegacyExchangeDN que surgió con nuestra migración de Exchange 2003 a Exchange 2007. Tuve que agregar una dirección X500 a todos los que solían estar en Exchange 2003. Un script de PowerShell bastante corto lo arregló.
- Creación con guión de "buzones de grupo" (buzones compartidos en Exchange donde varios usuarios tienen acceso al buzón), un proceso manual debido a la naturaleza de los datos que necesitamos antes de iniciarlo. Estandarizó en gran medida la configuración de estos buzones.
- Creó un script que recorrió todas las máquinas dominadas restableciendo una clave de registro específica y reiniciando un servicio. Tardaron 18 horas en completarse, pero hizo el trabajo.
Entonces sí, PowerShell estará con nosotros por bastante tiempo.
EDITAR : Agregar una muestra de código, ya que se solicitó
$ lista = import-csv ("groupusers.csv")
$ lastseengroup = $ lista [0] .group
$ ADGroupPrefix = "grp.netware".
$ ADGroupSuffix = "{redactado - en el formato de, ou = grupos, dc = dominio, dc = dominio, dc = dominio}"
Lista de miembros de variable clara
Usuarios desconocidos de variable clara
foreach ($ entrada en $ lista) {
if ($ ($ entry.group) -ne $ lastseengroup) {
echo "tropezó con el nuevo grupo $ ($ entry.group), confirmando cambios en $ lastseengroup"
$ newgroup = $ ADgroupPrefix + $ lastseengroup
$ newgroupdn = '"' +" cn = $ newgroup $ ADGroupSuffix "+ '"'
echo "obteniendo DN para $ newgroup"
$ existentegroup = dsquery group domainroot -name $ newgroup
if (($ existente grupo -ne $ nulo)) {
dsmod group $ newgroupdn -chmbr $ lista de miembros
} más {
dsadd group $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Grupo importado de eDirectory"
}
Lista de miembros de variable clara
}
$ Usuario = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
if ($ User.isvalid) {
$ UserDN = $ User.distinguishedname
$ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
} más {
$ unknownusers = $ unknownusers + $ ($ entry.member)
}
$ lastseengroup = $ ($ entry.group)
}
dsadd group "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp yes -members $ memberlist
Esto toma un archivo CSV creado con un script perl y actualiza un conjunto de grupos. Si el grupo ya existe, reemplaza la membresía con la especificada en el archivo. Si el grupo no existe, lo crea. Esta es una sincronización unidireccional. Además, todavía no está en producción, pero está cerca.