Cuma Eğlencesi: Daha İyi Bir Test-WsMan
Facebook'ta Test-WsMan'ın basit bir Boole sonucunu döndürmesini nasıl sağlayacağımla ilgili bir soru gördüm. Test-Connection cmdlet'i bunu mümkün kılan -Quiet parametresine sahiptir. Ancak Test-Wsman bunu yapmıyor. Elbette, karşılaştırılabilir bir sonuç senaryosu yazabilirsiniz. İşte bir yol:
"chi-hvr2","chi-hvr1","chi-p50" | foreach {
$r = Test-WSMan $_ -ErrorAction SilentlyContinue
if ($r) {
$True
}
else {
$False
}
}Veya tek istediğiniz, yalnızca bir ad listesini filtrelemekse, şunun gibi bir ifade kullanabilirsiniz:
"chi-hvr2","chi-hvr1","chi-p50" | Where { test-wsman $_ -ErrorAction SilentlyContinue}Sonunda ortaya çıkan tek isim, Test-WsMan'e yanıt verenler olacak. Veya başka bir yola gidebilir ve benim yaptığım gibi kendi Test-WsMan sürümünüzü oluşturabilirsiniz.
Test-MyWsMan adını verdiğim bir sarmalayıcı işlevi oluşturmak için Copy-Command betiğimi kullandım. Komutun Test-Connection gibi davranması için -Quiet adında bir parametre ekledim. Bunu yaparken Test-WsMan'deki diğer bazı eksiklikleri de (en azından benim için) ele aldım. Birden fazla bilgisayarı test ederken, bilgisayar adı özelliğine sahip olmamak, sonuçların o kadar da kullanışlı olmadığı anlamına geliyordu. Ayrıca ProductVersion özelliğindeki değerleri yalnızca bir Kimlik Doğrulama parametresi değeri belirttiyseniz alabilirsiniz. Böylece bu “sorunları” düzelttim.
Yeni komutumu GitHub'da özet olarak bulabilirsiniz.
:
Artık şu şekilde filtreleyebilirim:
Veya ProductVersion'da bile.
“chi-hvr2″,”chi-dc01″,”chi-dc02″,”chi-p50″,”chi-dc04” |
burada { (Test-MyWsman -ComputerName $_).ProductVersion -notmatch “Stack: 2.0” } |
foreach { Get-CimInstance win32_operatingsystem -computername $_}
Bu ProductVersion özelliğini ayrı özelliklere bölmenin nerede yararlı olabileceğini zaten görebiliyorum. Ama bunu başka bir güne saklayacağım.
Bu arada, umarım bir kopyasını alıp bana ne düşündüğünüzü söylersiniz. Hafta sonunuzun tadını çıkarın, özellikle de uzun bir haftamızın olduğu ABD'de.
GÜNCELLEME: v2'yi GitHub'da yayınladım ve http://bit.ly/1ZjusCr adresinde kısaca açıkladım. Yukarıda gördüğünüz kod bu yazıyla tam olarak eşleşmeyebilir.