Yanıtlar:
StackOverflow'da Jeffrey Snover'dan (PowerShell tasarımcısı) mükemmel bir cevap var:
En belirgin avantaj: Bir boru hattında hiçbir metin çıkışı (veya eski bir komut) yer almadığı sürece, metinleri borulardan değil, tüm özellikleri ve yöntemleriyle birlikte .NET framework nesnelerinin örneklerini taşırsınız.
Bu, yerel ayar ve dil ayarlarından da tamamen etkilenmeyen daha etkileyici ve daha az belirsiz bir boru hattı işlemesine izin verir (örneğin, tarih veya sayı biçimlerini ve bunları normalde dize olarak nasıl ele almak zorunda kalacağınızı düşünün).
Bu ayrıca bir komut dosyası ortamında .NET framework özelliklerinin çoğuna erişebileceğiniz anlamına gelir.
Paradigma hakkında değer yargılarına girmeden PowerShell'in temel avantajları .Net entegrasyonu ve görevdir - Windows 2008 sunucusundan itibaren varsayılan olarak paketlenir ve 2003 ve 2003 R2'de hizmet paketlerine yüklenir.
Adil olmak gerekirse, komut dosyası oluşturma için başka seçenekler de vardır - örneğin Perl ve Python. Python ayrıca yerel .Net entegrasyonu istiyorsanız IronPython kullanma seçeneği sunar. Aslında, IronPython sadece bir dizine bırakarak tatmin edici bir şekilde kuracaktır. Ayrı bir kurulum adımına gerek duymadan bir uygulamada önemsiz bir şekilde paketleyebilirsiniz.
Powershell'in temel gücü biraz çift kenarlı bir kılıçtır. .Net nesnelerini akış oldukça yararlı ve avantajları olsa da, bileşenlerin çerçeve ile güzel oynama yeteneği hakkında çok daha fazla varsayım yerleştirir. Bunun gerçekten işe yaraması için cmdlet'lerle bir şeyler sarmanız gerekir. Metinsel çıktı biraz daha düşük bir seviyede olsa ve ayrıştırmayı gerektirse de, çerçeveyle güzelce oynamak için bileşenlere daha az yük bindirir.
Zamanla, çok daha fazla Windows ekosisteminin (hem MS hem de üçüncü taraf bileşenleri) cmdlet sarmalayıcıları ile gelmesini beklerim, böylece Powershell ile çalışırlar. Bu gerçekleştiğinde Powershell'in durumu daha da güçlenecektir.
Tarihsel olarak, Windows'un idari açıdan temel geleneksel zayıflıklarından biri, zayıf komut dosyası desteği olmuştur. MS bunu birkaç yıl önce tanıdı ve birkaç topallama girişiminden sonra (örneğin WSH) Powershell, MS'in bu eksikliği gidermek için şimdiye kadarki en güvenilir çabasıdır.
Avantajları: -
Görevlerin Otomasyonu: - 1000 makineye kullanıcı eklemek gibi görevler elle sıkıcı bir iştir. Ancak powershell'in yardımıyla, sadece basit bir komut dosyası yazmanız gerekir ve bu komut dosyası çalıştırılır, tüm istemcileri otomatik olarak yapılandırır. Böylece adımları otomatik olarak tekrarlayarak zaman kazandırır. Windows PowerShell yedekleme \ geri yükleme komut dosyaları (Windows Görev Zamanlayıcı ile) geliştirilip zamanlanabilirken, Merkez Yönetim tek kullanımlık yedeklemeler ve geri yüklemeler için kullanılır. Windows PowerShell, üretim veritabanı yerine SQL anlık görüntülerine karşı çalıştırma avantajına sahiptir. Windows PowerShell komutunun parametrelerinden biri SQL anlık görüntüsünün oluşturulmasına neden olur ve ardından Windows PowerShell eylemi üretim veritabanı yerine anlık görüntüye karşı çalıştırır. Bu, yedekleme işleminin üretim ortamı üzerindeki kaynak etkisini azaltacaktır. Windows PowerShell ile, SharePoint yöneticileri yedekleme veya geri yükleme seçenekleri üzerinde daha ayrıntılı bir denetime sahip olacaktır.
Uzaktan erişim yeteneklerinde iyileştirme: - Önem iki yönlüdür, öncelikle Windows 7 masaüstleri PowerShell komutlarını kullanarak sunucuyla iletişim kurabilir. Sonuç olarak, Windows 7 dizüstü bilgisayarlara sahip teknisyenler, PowerShell komut dosyalarını çalıştırarak sunucularını uzaktan yapılandırabilir. İkinci olarak, sunucuda bulunan PowerShell'de yazılan istemci oturum açma komut dosyaları, Windows 7'de daha kolay çalışabilir. Ayrıca powershell kullanarak, uzak makineleri kolayca kontrol edebilir, üzerlerinde önemli görevleri gerçekleştirebilir ve bu değişiklikleri büyük ölçekte kolayca uygulayabiliriz. Remoting ağ kaynaklarını kullanır. Powershell ile çalışırken, GUI kullanmıyoruz ve bu nedenle, belirli bir görev için gereken bant genişliği azalıyor ve ağ aşırı yükleme sorunu çözülüyor.
Tutarlılık: - Bir görevi tamamlamak için ayarlanmış bir prosedürünüz varsa, Windows Powershell'i kullanmak bir adımı asla kaçırmamanızı, mümkün olduğunca otomatikleştirmenizi ve Powershell'in otomatikleştirilemeyen şeyler için sizi uyarmasını sağlar.
.NET Desteği: - Powershell, .NET çerçevesini destekler. Bu nedenle, tüm sistem işlevleri powershell komut dosyalarına kolayca eklenebilir ve bu nedenle programcılara komut dosyalarının geliştirilmesinde yardımcı olur. Böylece VDI'nın görevlerini otomatikleştirmek çok daha kolay, daha basit ve etkilidir.
Daha az manuel çalışma: - Yönetici artık sadece komut dosyalarını yazarak Sanal makinelerin ayarlarını uzaktan oluşturabilir, silebilir veya değiştirebilir. O bireysel pc gitmek ve işi yapmak gerek yok. Ayrıca tüm bilgisayarlarda yazılmış komut dosyaları kabul edilebilir. Bu yüzden yöneticinin bunları tekrar tekrar yazmasına gerek yoktur.
Yeniden kullanılabilirlik: - Belirli bir görevi gerçekleştirmek için yazılan komut dosyaları daha sonra kullanılmak üzere saklanabilir ve farklı görevleri gerçekleştirmek için diğer komut dosyalarıyla birleştirilebilir. Böylece tekrarlanan görevler sadece komut dosyaları çalıştırılarak çok daha basit bir şekilde gerçekleştirilebilir. Bu, yöneticilerin makinelerin yapılandırılmasında zamandan ve paradan tasarruf etmesini sağlar.
Boru hattı desteği: - Powershell için en büyük kazanç, metni ayrıştırmak zorunda kalmadan her şeyi herhangi bir şeye bağlayabilmenizdir. Bir komutun çıktısını yeni kümeye girdi olarak sağlayabilir ve böylece karmaşık görevleri çözebilirsiniz.
Cygwin'in her Windows sürümü için kullanılabilir olduğu garanti edilmez. Son kontrol 64 bit makinelerde şüpheli oldu. Powershell, pencereler için varsayılan komut kabuğu haline geliyor ve bir Windows makinesindeki tüm kaynaklara "yerel" erişim sağlayacak.