10Aug

Geek Okulu: PowerShell'de Cmdlet Kullanmayı Öğrenme

Komut isteminde ipconfig veya ping kullandıysanız, PowerShell ninja olma yolunda yarı yola girmiş olursunuz. Geceleme Okulu'nun bu kurulumunda cmdlet'leri keşfettiğimiz halde gelin bize katılın.

PowerShell'i tanıtan ilk yazıyı gözden geçirdiğinizden emin olun ve serimizin diğer bölümleri için tüm hafta boyunca izlemeye devam edin.

Bir Cmdlet Anatomisi

Seri dizisinin ilk bölümünde böyle bir şeye benzeyen bir cmdlet gördük:

Güncelleme-Yardım

PowerShell cmdletleri yukarıda görülebilen bir Fiil-Noun sözdizimine sahipler. Unutulmaması gereken önemli nokta, cmdlet birden fazla sonuç döndürse bile, ismin her zaman tekil olmasıdır. PowerShell'de yasal fiillerin listesini görmek için Get-Verb cmdlet'i kullanabilirsiniz.

Yasal fiilleri bilmek ve tekil isim kuralını hatırlamak gerçekten cmdlet adlarını tahmin etmede yardımcı olur.Örneğin, 'yi hizmetlerinin ve durumlarını olarak almak istediğinizi varsayalım - bu doğru, Get-Service kadar kolaydır. 'yi işlemlerinin işlemlerinin bir listesini nasıl alacağımıza inanıyor musunuz? Doğru, Get-Process bu hile yapacak.

Get-Process

Bu, herhangi bir teknoloji ile çalışmanın gerçekten kolay olmasını sağlar.Örneğin, Exchange cmdlet'lerini yüklediyseniz, sunucuda posta kutularının bir listesini kolayca elde edebiliriz:

Get-Mailbox

Ancak, bir istisna vardır. Borsayı bir kenara bırakın, diğer tüm teknoloji özel komutları ön ek gerektirir.Örneğin, şu anda Uzak Masaüstü üzerinden oturum açmış olan kullanıcıları almak istiyorsak, şunu yazacağız:

Get-RDUserSession

Aşağıda ekran görüntüsünde görebilirsiniz.

Not: Bu ekran görüntüsü, belirli bir teknolojiye özel modüllerin çoğunu bulacağınız yerden bir Server 2012 kutusunda çekilmiştir.

Bir süre önce, PowerShell'in Baba'sı Don Jones'un yazdığı bir makaleyi okudum ve Exchange'in bu önek cmdlet'lere eklenmeden önce gönderildiğini açıkladı; bu yüzden bunları uygulamadı ve asla yapmadı.

Aliases

PowerShell'in beraberinde getirdiği bir başka özellik, aynı komutu çalıştırmanın birden çok yolunu( takma adları) içeren bir özelliktir. Onlarla ilgili en müthiş şey, bazı Linux takma adlarının yanı sıra komut satırında kullanmış olabileceğiniz birçok komut içerdikleri.Örneğin, PowerShell'de aşağıdakileri kullanarak bir dizin listesi alabiliriz:

Get-ChildItem

Komut istemini kullanır mıydınız? Endişelenme, onlar seni örtbas etti.

Linux arka planı var mı?Orada da örtülü kaldınız.

Birkaç yıl boyunca senaryo yazarken, tembel olmaya ve takma adlar kullanmaya çok alışıyorsunuz, ancak bu, kodumuzu okuyacak yeni gelen kişilere yardımcı olmuyor. Bir takma adanın hangi başlık altında çalıştığını görmek için şunları kullanabilirsiniz:

Get-Alias ​​-Name ls

Öte yandan, oyununuzu adım atmanın vakti geldiğini düşünüyorsanız, elde etmek için tanım parametresini kullanabilirsinizbir cmdlet için tüm takma adlar:

Get-ChildItem -Definition Get-ChildItem

Başka bir geçmişe sahipseniz, aşağıdakileri yaparak kendi takma adlarınızı ekleyebilirsiniz:

Yeni Takma Adlar -Name icanhazfilez -Value Get-ChildItem

Açıkçası,"icanhazfilez" 'i, yeni takma adınızın ve Get-ChildItem adının başlık kısmında çalıştırılmasını istediğiniz cmdlet ile değiştirmeniz gerekecektir.

Unutulmaması gereken bir şey, kabuğu kapattığınızda tanımladığınız tüm takma adları kaybetmenizdir. Profil komut dosyanıza tanımlarını ekleyerek bu sorunu giderebilirsiniz.

Kesme Parametreleri

Windows PowerShell, belirsiz hale gelene kadar, diğer bir deyişle PowerShell'in hangi parametreden bahsettiğini bulamayacağına kadar parametre adlarını kesmenizi sağlar.Örneğin:

Get-Servisi -Name 'Apple Mobil Aygıt' -ComputerName localhost

Aynı:

Get-Service -Na 'Apple Mobil Aygıt' -Com localhost

Herhangi bir şansla parametre adlarını belirsiz hale getirirsenizbir hata bulacak.

Eski Komutlar

Sonunda, bildiğiniz ve sevdiğiniz komutlar yine de PowerShell'de çalışacaktır.

ping www.google.com

Sadece ping gibi eski uygulamaların bir dize çıktığını ve aynı şeyi PowerShell cmdlet'i kullanarak daha iyi bir şekilde yapmak için hatırlayın.

Uzun bir metin dizesi çıkartmak yerine şu an yarın Geek Okulu baskısında bakacağımız bir nesne kalmıştır.