Dizi aracılığıyla döngü oluşturma "ForEach" PowerShell komutunu kullanma | Temel giriş | Bölüm 1#2


Bu yazımda PowerShell tabanlı ortamda (özellikle Office 365 ve Exchange Online tabanlı ortamda) “Array” kavramına ve “ForEach deyimine” temel bir giriş yapmak istiyorum.

Bir dizi boyunca döngü oluşturma “ForEach” PowerShell makale serisini kullanma

Dizi aracılığıyla döngü oluşturma “ForEach” kullanma PowerShell makale serisi aşağıdaki makaleleri içerir:

  1. Dizi aracılığıyla döngü oluşturma “ForEach” PowerShell komutunu kullanma | Temel giriş | Bölüm 1#2 (bu makale)
  2. Dizi aracılığıyla döngü oluşturma “ForEach” ifadesini ve değişkenlerini kullanma | PowerShell ortamı| Bölüm 2#2

PowerShell döngüsü ve dizisi

- Diziler ve Döngü işleminin (PowerShell “ForEach ifadesi” kullanılarak uygulanan) birleşimi, “tek tıklamayla” birden çok nesne üzerinde toplu yönetim görevi gerçekleştirmemize olanak tanıyan çok güçlü bir araçtır.

"Sorun" (ya da politik olarak daha doğru bir kelime kullanmak istiyorsak zorluk), Exchange veya Office 365 yöneticilerinin çoğunun "PowerShell canavarından" ve özellikle de içinde bulunduğumuz daha "karmaşık senaryodan" biraz korkutucu olmasıdır. birden fazla satır içeren bir PowerShell komutu kullanmanız gerekir.

İyi haber şu ki, aşağıdaki iki makaleyi okuyarak biraz zaman ayırmaya hazırsanız, “Array”, Loop süreci ve “ForEach ifadesi” terimlerinin o kadar da korkutucu olmadığını göreceksiniz. .

Bu araçları nasıl "kaydeteceğinizi" öğrendikten sonra, günlük idari görevlerinizi iyileştirebilecek ve optimize edebilecek çok kullanışlı bir araca sahip olacaksınız!

Genel olarak konuşursak, “Dizi” kavramı herhangi bir programlama veya betik diliyle ilgilidir ancak mevcut makalede de belirtildiği gibi örnekler Office 365 ortamıyla ilgilidir.

“Diziler” hakkında ne öğrenilmeli?

PowerShell ortamında “Diziler” kavramını farkında olsak da olmasak da birçok kez kullanırız. PowerShell komut sözdizimi örneklerinin çoğunu daha iyi anlamak ve "PowerShell"i etkili bir şekilde kullanmak istiyorsak, "diziler" kavramı hakkında temel bir anlayışa sahip olmalıyız.

Dizi'nin anlamı nedir?

“Dizi” teriminin resmi tanımıyla başlayalım:

Bilgisayar bilimlerinde dizi türü, her biri program tarafından çalışma zamanında hesaplanabilen bir veya daha fazla endeks (anahtarları tanımlayan) tarafından seçilen bir öğe koleksiyonunu (değerler veya değişkenler) tanımlamayı amaçlayan bir veri türüdür. Böyle bir koleksiyona genellikle dizi değişkeni, dizi değeri veya yalnızca dizi adı verilir.

Vektör ve matrisin matematiksel kavramlarına benzer şekilde, bir ve iki indeksli dizi türlerine genellikle sırasıyla vektör türü ve matris türü adı verilir.

Basit bir deyişle, "Dizi" terimi, bir PowerShell komutunu kullanırken "adresleyebileceğimiz" veya ilişki kurabileceğimiz "nesnelerin" bir grubunu veya listesini tanımlar.

Dizi, nesnelerin bir koleksiyonu veya diğer bir terim olan üye koleksiyonları olarak kabul edilir.

Teorik olarak Dizi boş olabilir veya sıfır üye içerebilir, ancak çoğu zaman "Dizi"yi bir veya daha fazla "nesneyi" gruplamak veya "bağlamak" için kullanırız.

Ortaya çıkabilecek bir sonraki soru şu olabilir: Bu “nesneler” nelerdir veya bu “üyeler” kimlerdir?

"Nesneler" veya "üye" terimleri, ele almak istediğimiz farklı "varlık" türlerini tanımlamak için kullandığımız çok genel bir terimdir.

PowerShell tabanlı ortamda "nesneler" teriminin çok sayıda örneği vardır.

Örneğin bir nesne Exchange posta kutusu, Office 365 kullanıcıları, işletim sistemi işlemi ve hatta bir dosyadaki bir “satır” olarak değerlendirilebilir.

Bir Dizi, belirli bir nesne türünün %100'ünü veya belirli bir karaktere veya belirli bir özelliğe sahip belirli nesnelerin bir "alt kümesini" içerebilir.

Örneğin:

PowerShell komutu Get-Mailbox, tüm Exchange posta kutularının bir listesini alacaktır.

Yani PowerShell komutunun Get-Mailbox, “posta kutusu nesnesi” olarak kabul edilen tüm nesneleri içeren bir Array oluşturduğunu söyleyebiliriz.

Aşağıdaki PowerShell komutu, "kullanıcı posta kutuları" olarak kabul edilen tüm Exchange Online posta kutularının bir listesini alacaktır.

Get-Mailbox | Where {$_.RecipientTypeDetails -eq "UserMailbox"}

Başka bir deyişle, bu durumda oluşturulan Dizi, belirli bir RecipientTypeDetails özelliğine sahip olan ve Kullanıcı posta kutusu olarak kabul edilen Exchange posta kutularının yalnızca belirli bir alt kümesini veya "grubunu" içerir..

Dizi nasıl oluşturulur?

Sorabileceğimiz bir diğer ilginç soru ise “Dizi” oluşturmak için kullanabileceğimiz yöntemler nelerdir?

Bir Diziyi "oluşturmanın" çeşitli yolları vardır.

  1. Temel PowerShell komutunu kullanarak (örneğin, Get önekiyle başlayan her PowerShell cmdlet'i bir Dizi oluşturun.
  2. CSV dosyası gibi belirli bir formatta bir dosyada saklanan bilgiler de “Dizi” olarak değerlendirilebilir. CSV dosyasında saklanan bilgilere erişmemiz gerektiğinde, CSV dosyasındaki her "satır", "dizi üyeleri" olarak kabul edilecek ve CSV dosyasındaki her sütun, bir "üye özelliği" olarak değerlendirilecektir.
  3. Grubu Kullanmak - Her ne kadar bir “Grup”u “Dizi” olarak ilişkilendirmek için kullanmasak da, Grup aslında bir dizidir. Bir "grup", Grup üyelerini içeren mantıksal bir kapsayıcı görevi görür ve bu, Array'in tam tanımıdır.
  4. Her üyenin manuel olarak yazılması - "Dizi" oluşturmanın ek bir yöntemi, Dizi üyelerinin her birinin manuel olarak yazılmasıyla kolayca uygulanır. Örneğin belirli bir kullanıcı posta kutusuna izin atadığımızda, birden fazla kullanıcıya (Array) izin atayabiliriz. “Dizi”nin oluşturulması, kullanıcıların (üyelerin) her birinin virgül karakteriyle ayrılarak yazılmasıyla gerçekleştirilir.

Diziler oluşturmak için PowerShell komutu

Bu bölümde, bir "Dizi" oluşturmaya yönelik ana yöntemlerimizden biri olarak PowerShell komut öneki Get ile bağlantı kurmak istiyorum.

Get önekiyle bir PowerShell komutunu her çalıştırdığımızda, PowerShell'den bir “Dizi” oluşturmasını istiyoruz.

Varsayılan olarak, "Dizi içeriği" PowerShell konsolunda PowerShell komutu tarafından görüntülenecektir, ancak PowerShell komutu tarafından uygulanan ilk "eylem"in "Dizi verilerinin" bilgisayar RAM'inde saklanması olduğunu vurgulamak önemlidir. ve ancak o zaman bilgileri PowerShell konsoluna kopyalayın.

PowerShell konsolunda “Array verilerini” görüntülemenin yanı sıra, RAM’de saklanan Array bilgilerini de kullanabilir ve verilerle “ne yapmak” istediğimizi seçebiliriz.

Örneğin dizi bilgisini bir dosyaya, “pipe” bilgisini başka bir PowerShell komutuna vb. aktarabiliriz.

PowerShell Get-Mailbox komutunu kullanarak dizi oluşturma örneği

Exchange altyapısı, Exchange alıcıları, grupları, bağlayıcıları, posta kutuları vb. onlarca, hatta yüzlerce farklı nesne türünü içerir.

Get-Mailbox gibi PowerShell cmdlet'lerini kullandığımızda, Exchange Online'dan bize çok özel bir nesne türü olan "Exchange posta kutuları" hakkında bilgi sağlamasını isteriz.

PowerShell Get-Mailbox yazıp Enter tuşuna "bastığımızda", PowerShell otomatik olarak bir "dizi alanı" oluşturur ve dizi deposunu mevcut tüm diziler hakkında bilgilerle "doldurur" Posta kutularını değiştirin.

PowerShell kullanarak dizi oluşturmanın ek bir örneği

PowerShell komutunu kullanarak oluşturduğumuz bir Dizinin başka bir örneği, aşağıdaki gibi filtrelenmiş bir arama oluşturan aşağıdaki PowerShell komutunu kullandığımız bir örnek olabilir:

Get-User | Where {$_.Title -eq "Administrator"}

Bu durumda, Exchange'den bize tüm Exchange kullanıcılarının (bir Exchange Online kullanıcıları dizisi) bir listesini sağlamasını "isteriz", ancak yalnızca kullanıcı başlığının şu olması durumunda "bilgi getir" koşulunu içeren ek bir Filtre ekleriz: Yönetici.

Bir sonraki yazımızda “ForEach” İfadesini ve Değişkenlerini Kullanarak Dizi Üzerinden Döngü Oluşturmayı inceleyeceğiz | PowerShell ortamı| Bölüm 2#2.

İlgili makaleler