Microsoft, PowerShell'i her yerde güçlü kullanıcı ve otomasyon yazarı seçimi yapmak için elinden geleni yapıyor. Aynı şeyi yapmak için .NET'te kod derleme günleri artık geride kaldı, şimdi sadece notepad.exe ve google'a ihtiyacınız var. Ofisteki büyük hayranlarıyız, özellikle Exchange 2007'nin Yönetim Konsolu PowerShell'de yapabileceğiniz her şeyi İÇERMEdiğinden. Microsoft kasıtlı olarak, uzun bir süre sonra sadece bir kez yapılan şeyleri uygulamada başarısız oldu, bu şekilde geliştirmek daha kolaydı;
Microsoft'un yeni nesil ürünlerini yönetme (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) hepsi çok zengin PowerShell kancalarına sahiptir. Remote Powershell (PowerShell 2.0 IIRC), Server 2008 R2 ile konuşlandırıldığında, otomasyon yazarları için daha da faydalı olacak.
Bununla ne yaptık:
- Bazı yönetici görevlerini yardım masası kullanıcılarına devretmek için bir web sayfası oluşturun. Web sayfası, PowerShell'de yürütülen komutları atar. Yaptığı şeyler:
- Exchange 2007 posta kutularını ve giriş dizinlerini sağlama dahil olmak üzere kullanıcı hesapları oluşturun ve silin
- Kilitli hesapların kilidini açar
- Grup oluştur / sil
- Kullanıcıları gruplara ekle / kaldır
- Kullanıcıları posta depoları arasında taşı
- Şifreleri ayarla
- ERP sisteminden alıntılar alın ve global-adres defteri verilerini her gece Active Directory'ye aktarın.
- Exchange 2003'ten Exchange 2007'ye geçişi tamamlayan LegacyExchangeDN sorununu çözün. Exchange 2003'teki herkese bir X500 adresi eklemek zorunda kaldı. Oldukça kısa bir PowerShell betiği sorunu çözdü.
- "Grup posta kutularının" (birden fazla kullanıcının posta kutusuna erişebildiği Exchange'deki paylaşılan posta kutuları) komut dosyasıyla oluşturulması, başlamadan önce ihtiyaç duyduğumuz verilerin niteliği nedeniyle el ile yapılan bir işlemdir. Bu posta kutularının kurulumunu büyük ölçüde standartlaştırdı.
- Belirli bir kayıt defteri anahtarını sıfırlayan ve bir hizmeti yeniden başlatan tüm etkilenen makinelerde dolaşan bir komut dosyası oluşturuldu. Tamamlanması 18 saat sürdü, ancak işi tamamladı.
Yani evet, PowerShell uzunca bir süre bizimle birlikte olacak.
EDIT : İstendiğinden beri bir kod örneği ekleme
$ Liste = ithalat CSV ( "groupusers.csv")
$ Lastseengroup = $ liste [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{redacted - biçiminde, ou = gruplar, dc = etki alanı, dc = etki alanı, dc = etki alanı}"
Değişkenleri Temizle üye listesi
Clear-Variable bilinmeyen kullanıcılar
foreach ($ listesindeki $ girişi) {
if ($ ($ entry.group) -ne $ lastseengroup) {
echo "$ lastseengroup'ta değişiklik yapan yeni grupta $ ($ entry.group) rastladı"
$ Newgroup = $ ADgroupPrefix + $ lastseengroup
$ Newgroupdn = ' " '+ "cn = $ newgroup $ ADGroupSuffix" +'"'
echo "$ newgroup için DN alma"
$ existinggroup = dsquery grubu domainroot -name $ newgroup
if (($ var olan grup-bir $ boş)) {
dsmod group $ newgroupdn -chmbr $ üye listesi
} Başka {
dsadd grubu $ newgroupdn -scope u -secgrp evet -members $ memberlist -desc "eDirectory'den içe aktarılan grup"
}
Değişkenleri Temizle üye listesi
}
$ Kullanıcı = kullanıcı-kullanıcı $ ($ entry.member) -ErrorAction SilentlyContinue
if ($ User.isvalid) {
$ KullanıcıDN = $ User.distinguishedname
$ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
} Başka {
$ Unknownusers = $ unknownusers + $ ($ entry.member)
}
$ Lastseengroup = $ ($ entry.group)
}
dsadd grubu "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp yes -members $ memberlist
Bu, perl betiğiyle oluşturulan bir CSV dosyasını alır ve bir grup grubu günceller. Grup zaten mevcutsa, üyeliği dosyada belirtilenle değiştirir. Grup mevcut değilse, onu oluşturur. Bu tek yönlü bir senkronizasyondur. Ayrıca, değil oldukça üretimde henüz ama yakındır.