Hızlı İpucu: ışınlanma işlevleri

Wikipedia’da ışınlanmanın tanımını görebildiğimiz gibi, buradaki ipucu, yürütme komut dosyanızda (yerel kapsam) Invoke-Command (uzak kapsam) aracılığıyla başka bir sunucuda / ana bilgisayarda yürütülecek bir işlev bildirmektir. Bunu yapmak için başka harika şeyler kullanalım: Powershell nokta kaynak kullanımı ve ScriptBlock türü tanımı.

Invoke-Command

Invoke-Command uzak bilgisayarlarda kod çalıştırmak ve daha fazlasını yapmak için oldukça el bir cmdlet’tir. Kaptan Kirk ve Komutan Spock’ın USS-Enterprise’ın ışınlanma makinesi gibi.

Nokta kaynak kullanımı

Powershell nokta kaynak kullanımı değişkenler veya işlev bildirimlerinde kullanılan değerleri yürütme hattında veya yürütme kapsamında tutmanın bir yoludur. Nokta kaynak kullanımı ile, içinde bazı işlevlere sahip olan bir ps1 dosyası kullanmak ve ardından mevcut yürütme kapsamına getirmek mümkündür. Piyasada (internet) pek çok iyi örnek var ve kendiminkinin altında.

ScriptBlock

ScriptBlock türü tanımı, çalışma zamanında bazı kod parçalarını çalıştırmamıza olanak tanır. Bununla birlikte, yürütme hattımızın içinde çalıştırılacak bazı betik bloklarını çalışma zamanında tanımlayabiliriz. Bunun için [ScriptBlock] :: Create ($ some_code_goes_here) yönergesini kullanıyoruz.

Işınlanmayı hazırlayın

Firts, fonksiyonları tanımlar. Bilinen bir arayüzün IPv4 IP Adresi ile başa çıkmak için 2 basit fonksiyon burada anlatılmaktadır.

İkinci olarak, fonksiyon kodunu bir değişkene düz metin olarak göndermeliyiz. Bunu yapmak için $ {function: function_name} yönergesini kullanıyoruz.

Ve büyük final! Işınlanma yoluyla uzak ana bilgisayarlarda yürütülecek işlevlerimizi gönderme zamanı, yani Invoke-Command:

İşlevlerimiz, Invoke-Command’ın ArgumentList’i aracılığıyla ScriptBlock’un uzak ana bilgisayar parametrelerine giden değişkenler haline geldi. Nokta kaynak ve ScriptBlock türü tanımını kullanarak, işlevleri “oluşturmak” için bildirimden sonraki kodda bulunan işlevleri kullanabiliriz.

Bu eğlencenin tam kodunu burada Github Powershell Adventures depomda bulabilirsiniz. Uzak bir yerde görüşürüz ?