Last updated on 26 Şubat 2019
Function (İşlev) Nedir?
Technet’te yazan tanım şöyledir:
Bir işlev, atadığınız bir ada sahip Windows PowerShell deyimlerinin bir listesidir. Bir işlevi çalıştırdığınızda, işlev adını yazarsınız. Listedeki ifadeler, komut satırına yazmış gibi çalışıyor.
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions?view=powershell-5.1
Mesela: Bir fonksiyonda kodlar, deyimler, parametreler ve benzeri bilgileri yerleştirebilirsiniz. Bu fonksiyonun bir adı vardır. Ve bu isim fonksiyonunuzu başlatmak için kullanılır.
İşte burada bir örnek: Microsoft Docs
function Get-PowerShellProcess {Get-Process PowerShell}
İşlev çalıştırıldıktan sonra yeni bir komut kullanılabilir: Get-PowerShellProcess. Ve bu komut Get-Process PowerShell’i çalıştırır.
Bu yazıda bir function (işlev) oluşturacağız ve sonra bu işlevi bir PowerShell Modülü olarak kaydedeceğiz. İlk olarak, bir modülün ne olduğuna hızlı bir şekilde gözden geçelim.
PowerShell Modülü Nedir?
Bir modül, uygun bir birim olarak (genellikle tek bir dizinde kaydedilen) gruplandırılmış ilgili Windows PowerShell işlevlerinin bir kümesidir. Bir dizi ilgili betik dosyalarını, derlemeleri ve ilgili kaynakları bir modül olarak tanımlayarak kodunuzu, aksi halde kullanmaktan çok daha kolay, atayabilir, yükleyebilir, devam ettirebilir ve paylaşabilirsiniz.
Bu, PowerShell Oturumumuza bir dizi komut gönderebileceğimiz anlamına gelir. Eski PowerShell Sürümlerinde bu modülün komutlarını kullanmak için modüllerinizi elle oturumunuza yüklemelisiniz. Örneğin – uzun zaman önce – Active Directory PowerShell komutlarını kullanmak için Modül Active Directory’yi almak zorunda kaldınız.
Ayrıntılı Mod’da çalıştırdığınızda, PowerShell tüm içe aktarılan komutları sunar:
Import-Module ActiveDirectory -Verbose
Yüklü ve yüklenebilecek tüm modülleri göstermek için;
Get-Module -ListAvailable
Modüller bir klasöre kaydedilir.
Windows ile birlikte gönderilen modüller için Varsayılan Klasör şu şekilde tespit edilebilir.
cd $PSHome\Modules
Hazırlamış olduğunuz modülünüzü buraya kaydetmeniz önerilmez.
Tüm kullanıcılar için Modüller Klasörü
cd $Env:ProgramFiles\WindowsPowerShell\Modules
Bu klasör bir sonraki adımlarda kullanılacaktır.
Geçerli Kullanıcı için Modüller Klasörü
cd $Home\Documents\WindowsPowerShell\Modules
Functions (İşlevler)
İşlev No: 1: Bilgisayarın IPv4 Adresini Alma
Konuyla başlamanıza yardımcı olmak için 2 örnek hazırladım.
Windows PowerShell ISE’yi açın. Aşağıdaki kodu PowerShell ISE oturumunuza kopyalayın. Her tek maddeyi tartışacağız.
function Get-IPv4Address {Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias “Ethernet” | Select-Object IPAddress}
function : İşinizin başlangıcını tanımlar ve başlangıcı işaretler.
Get-IPv4Address: İşlevin adı. Bu komut, kodunuzu yürütmek için kullanılacaktır
Get-IPv4Address’i çalıştırırsanız function içeriğinde yazmış olduğunuz aşağıdaki kodunuz çalışacaktır.
{Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias “Ethernet” | Select-Object IPAddress}
Yeşil simgeye (çalıştır) basın ve bir sonraki olarak Get-IPv4Address’i çalıştırın.
Güzel. İlk PowerShell işlevinizi oluşturdunuz.
İşlev No: 2: Localhost’un Varsayılan Ağ Geçidinin ve Uzak Sunucu’ların erişilebilirliğini test etmek için Test-Gateway
Başka bir örnek. Bunu daha ayrıntılı bir şekilde açıklamalıyım. Hedef, Test Geçidi komutunu kullanarak Varsayılan Ağ Geçidinin erişilebilirliğini sınamaktır. Yerel bilgisayarda ve uzak bilgisayarlarda. İlk örneğe göre fark Parametreleri ve bir if – else koşulunu kullanıyorum.
function
Test-Gateway
{
param
(
$Computer
=
$null
,
$Count
=
"1"
)
If
(
$Computer
-eq
$null
)
{
Test-Connection
-Destination
(
Get-NetRoute
-DestinationPrefix
0.0.0.0/0 |
Select-Object
-ExpandProperty
Nexthop)
-Count
$Count
}
else
{
$Route
=
Invoke-Command
-ComputerName
$Computer
{
Get-NetRoute
-DestinationPrefix
0.0.0.0/0 |
Select-Object
-ExpandProperty
Nexthop};
Test-Connection
-Source
$Computer
-Destination
$Route
-Count
$Count
}
}
Get-Module -ListAvailable
Eline sağlık. Faydalı bir makale olmuş.
Teşekkür ederim,